我有一个可满足内容的div,并在它的顶部放置另一个绝对定位元素(一个小框)。
奇怪的事情:在Chrome中,padding-right
属性一直应用于小框,即使它不在CSS中。此外,填充符不应用于。
- http://jsfiddle.net/xBU7D/
这是一个Chrome bug吗?我很确定我做的是对的:
<div contenteditable=true>hello</div>
<div id=closer></div>
和
div[contenteditable] {
border:1px solid #900;
width:200px;
overflow:hidden;
white-space:nowrap;
padding-right:20px; /* <- the wascawwy wabbit */
}
#closer {
position:absolute;
border:1px solid #090;
width:20px;
height:20px;
top:0px;
left:180px;
}
body {padding:0;margin:0;}
padding-right
实际上并没有被应用到小框中,它只是看起来像。
padding-right
增加了你的可满足div的宽度,使它成为220px
宽。
你的小div是绝对定位的宽度为20px
和180px
的左边,这导致20px
的间隙在右边-但这不是padding-right
。你只需要改变你的小框的left: 180px
为left: 200px
或改变width: 180px
为width: 160px
的可满足的div。
你在那里的padding-right:20px
实际上使你的200px可内容div 220px。所以,如果你把第二个div的左距设置为200px而不是180px,它就会对齐得很好。
http://jsfiddle.net/xBU7D/3/
接受Horen的回答,感谢他的解释让我意识到发生了什么。
真正的原因是我的代码没有做我认为它应该做的事情,是该死的盒子模型改变。我同意quirksmode.org的观点,content-box
的W3C盒子模型对我来说是反直觉的。padding
应该在内容里面
http://jsfiddle.net/xBU7D/4/使用border-box
,一切正常