为了账号安全,请及时绑定邮箱和手机立即绑定

为什么要往下推这个内联块元素?

为什么要往下推这个内联块元素?

千万里不及你 2019-06-01 15:04:23
为什么要往下推这个内联块元素?下面是我的代码,我想了解为什么#FirstDiv正在被所有浏览器向下推。我真的很想理解为什么它被向下推而不是以某种方式向上拉的事实的内在运作。(我知道如何对齐他们的顶部:)我知道它的溢出:隐藏的,这是导致它,但不确定它为什么要把它向下。body {  width: 350px;  margin: 0px auto;}#container {  border: 15px solid orange;}#firstDiv {  border: 10px solid brown;  display: inline-block;  width: 70px;  overflow: hidden;}#secondDiv {  border: 10px solid skyblue;  float: left;  width: 70px;}#thirdDiv {  display: inline-block;  border: 5px solid yellowgreen;}<div id="container">  <div id="firstDiv">FIRST</div>  <div id="secondDiv">SECOND</div>  <div id="thirdDiv">THIRD    <br>some more content<br> some more content  </div></div>http://jsfiddle.net/WGCyu/.
查看完整描述

4 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

只管用vertical-align:top;

演示


查看完整回答
反对 回复 2019-06-01
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

视点这,这个另一个例子。此类行为的原因将在CSS 3模块:行:3.2。线箱包装[1]:

一般来说,线框的起始边缘与其包含块的起始边缘相接触,而末端边缘则触及其包含块的末端边缘。但是,浮动框可能位于包含块边缘和行框边缘之间。因此,虽然相同内联格式上下文中的行框通常具有相同的行内推进(包含块的行内进度),但如果可用内联级数空间由于浮动而减少[.],则可能会有所不同。

如您所见,第三个元素被向下推,尽管它没有overflow财产。原因肯定是在别的地方。您注意到的第二个行为在级联样式表2级修订1(CSS 2.1)规范:9.5浮标[2]:

由于浮点数不在流中,所以在浮点数框之前和之后创建的非定位块框垂直地流动,就好像浮点数不存在一样。但是,在浮点数旁边创建的当前和后续行框在必要时会被缩短,以便为浮动的边距框腾出空间。

你所有的display:inline-block;DVS正在使用一种特殊的baseline在这种情况下10.8线高计算:“线高”和“垂直对齐”属性(极尾)[3]:

“内联块”的基线是其在正常流中的最后一行框的基线,除非它没有流内行框,或者它的“溢出”属性具有“可见”以外的计算值,在这种情况下,基线是底部边距。

所以当你使用浮动元素inline-block元素时,浮动元素将被推送到旁边,内联格式将根据1..另一方面,如果下一个元素不合适的话,它们就会被缩短。由于您已经使用了最少的空间,因此没有其他方法可以修改元素然后推送它们2..在这种情况下,最高元素将定义包装div的大小,从而定义baseline 3中所述的位置和宽度的修改。2不能应用于这种最小间距的最大高度元素。在这种情况下,我的第一个演示将产生一个行为。

最后,你overflow:hidden会防止#firstDiv被推到你的下边#container虽然我找不到理由第11条..无overflow:hidden它的工作方式是例外的,并由23演示

TL;DR:仔细查看W3建议和浏览器中的实现。在我看来,浮动元素决定表现出意想不到的行为,如果您不知道它们对您周围的元素所做的所有更改。这是另一个演示这显示了浮标的一个常见问题。


查看完整回答
反对 回复 2019-06-01
  • 4 回答
  • 0 关注
  • 552 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号