修复了具有负 margin-right 和移动浮动的内联块 div:-4px 有什么特别之处?
这很奇怪。我试图在右浮动 div 旁边放置一个固定宽度的 div,并且我不想对 div 重新排序(因为这是分布式主题)。所以我在固定div上使用负margin-right,我得到了在我看来很奇怪的东西:如果它是-4px或更小,那么浮动会移到一边;如果它是-4px或更少,那么浮动会移到一边;否则,它会保持在下方。
玩 在 jsbin 上使用代码进行现场演示,其中包含以下内容:
<style>
.container {
width: 200px;
height: 200px;
}
.box {
width: 100px;
height: 100px;
}
.one {
margin-right: -4px; /* If <= -4, .two box shifts up */
display: inline-block;
}
.two {
float: right;
}
</style>
<div class="container">
<div class="box one"></div>
<div class="box two"></div>
</div>
有人可以解释一下其中的奥秘吗?在这种情况下,数字 -4 有什么特别之处?
This is strange. I'm trying to have a fixed-width div next to a right-floated div, and I don't want to reorder the divs (because this is distributed theme). So I'm playing with negative margin-right on the fixed div, and I get what seems to me strange: if it's -4px or less, then the float moves to the side; otherwise, it stays below.
Play with the live demo with code at jsbin, which has this:
<style>
.container {
width: 200px;
height: 200px;
}
.box {
width: 100px;
height: 100px;
}
.one {
margin-right: -4px; /* If <= -4, .two box shifts up */
display: inline-block;
}
.two {
float: right;
}
</style>
<div class="container">
<div class="box one"></div>
<div class="box two"></div>
</div>
Can someone explain the mystery? What's special about the number -4 in this case?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
4px
恰好是该font-size
处“空间”的宽度。如果将
#container
的font-size
更改为32px
,它坏了。解决此问题的明智方法包括:
margin-right: -4px
,然后删除之间的空格HTML 中的div
。display: inline-block
。相反,float: left
左侧div
和float: right
右侧div
。高度时它会破裂
在容器上,那么您必须清除浮动。在容器上使用overflow:hidden
,或使用 clearfix。overflow:hidden
(除非您有 具体问题)4px
just happens to be the width of a "space" at thatfont-size
.If you change the
font-size
of#container
to say,32px
, it breaks.Sensible ways to fix this include:
margin-right: -4px
and then remove the whitespace between thediv
s in the HTML.display: inline-block
. Instead,float: left
the leftdiv
, andfloat: right
the rightdiv
.height
on the container, then you must clear the floats. Useoverflow: hidden
on the container, or use clearfix.overflow: hidden
(use this unless you have specific problems)