【发布时间】:2013-04-23 10:34:12
【问题描述】:
我正在研究绝对定位 <input> 的 CSS 格式。
我希望它在它的容器内“拉伸”(它也被定位为“绝对”),这样它就可以左右两边留出 30 像素,并填满里面的所有空间......
我已经找到了sample on w3.org site,它使用左和右来创建一种 CSS 中的“框架集”。
我还阅读了an article from A-List-Apart 谈论这种技术,并在此处发现了其他几个处理类似问题的问题,但这些都不是我将要描述的具体问题。我还发现我可以用<div> 包裹内部<input>,但我想在这个主题上深入挖掘一下,以了解它为什么行为不端......
这里是a working sample,我是为了测试和澄清这个想法。 简而言之,就是这么简单:
<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 或更早版本上运行..
【问题讨论】:
-
当你想让一个元素表现得像另一种类型的元素时,你想到的可能是通过赋予它相同的属性使其表现得像这样的元素,话虽如此,我的意思是让它@ 987654332@对于初学者,看看你会去哪里
-
我已经尝试过了,(当然)它并不那么容易,但你是对的:永远不要忽视简单的事情 :)
标签: html css layout cross-browser