我正在研究绝对定位的 CSS 格式<input>
。我希望它在它的容器内“拉伸”(它也被定位为“绝对”),这样它就可以在左右两边留下例如 30px 的空间,并填充里面的所有空间......
我已经在 w3.org 网站上找到了一个示例,它使用左和右在 CSS 中创建一种“框架集”。
我还阅读了来自 A-List-Apart 的一篇关于这种技术的文章,并在这里发现了其他几个处理类似问题的问题,但这些问题都没有集中在我将要描述的具体问题上。我还发现我可以用 包裹内部<input>
,<div>
但我想在这个主题上深入挖掘一下,以了解它为什么行为不端......
这是我为测试和阐明这个想法而制作的一个工作示例。简而言之,就是这样简单:
<div id="sidebar">
<input type="text" value="input" />
</div>
有这样的风格:
body { height: 100% } /* Required for percentage heights below */
#sidebar {
position: absolute;
top: 0;
height: 100%;
left: 0;
width: 160px;
}
#sidebar input {
position: absolute;
margin: 0;
padding: 0;
height: 21px;
left: 30px;
right: 30px;
width: auto;
}
有趣的一点是在最后三行,当我设置左右并将宽度设置为“自动”时。
结果是它只能在使用 Chrome (v.26) 时按预期工作,但在 FF.20 或 IE.10 中它看起来很糟糕:<input>
超出其容器 div 的右边距 .. 与放置宽度时所得到的几乎相同:100% 并且只设置左侧位置...
有趣的是,这种使用 DIV 和内联块 SPAN 的方法在所有三种浏览器中都按预期工作。
它是浏览器方面的错误吗?有没有办法让它在没有解决方法的情况下<input>
用 width:100%括<div>
在以所述方式定位的另一个中?
希望有人对此有所了解。
PS:我专注于“现代”,html5浏览器,所以我不介意它是否不适用于IE8或更早版本..