美文网首页
inline-block元素对齐问题

inline-block元素对齐问题

作者: newway_001 | 来源:发表于2019-06-25 11:29 被阅读0次

刚刚在网上看到一个有趣的例子:

<!DOCTYPE html>
<html>
<head>
<style>
    *{margin:0;
    padding:0;}
div{
  line-height: 30px;
    
  background: red;
}
span{
  display: inline-block;
  width: 50px;
  height: 30px;
  background: green;
}
</style>
</head>
<body>
  <div><span></span></div>
</body>
</html>
image.png

出来的效果图是这样的。
理论上来说,父元素行高和子元素高度一样,为啥父元素会比子元素高出一大截?
我们将span元素随便填充222,出来效果如下图:

image.png

可以看到父元素高度降低,子元素高度没有变化。
这是为什么呢?

看了张鑫旭大神的<<css世界>>;
有提到inline-block的对其问题。
不过我觉得他说的规则不太像人话。
我用我自己的理解说一下

inline-block元素中有内联元素且overflow为visible时,这个元素的基线是元素最后一行内联元素的基线;

否则基线就是这个inline-block元素的margin底边缘;

我们结合这个例子看:

在span内部啥也没有的时候。它遵循的是基线是margin底边缘;span的底边缘和span前面的‘幽灵空白节点’的基线对齐(非主动触发位移的内联元素基线对齐。)而幽灵空白节点的基线下面还有一个半行距。这个半行距撑开了父元素。使得父元素的高度高于span元素;

在span元素里面有内联元素时,就是上图中有222的状态;span元素遵循有内联元素且overflow为visible时,这个元素的基线是元素最后一行内联元素的基线;span元素的font-size和line-height是继承父元素的font-size和line-height;两个基线对齐,半行距也相等。。因此父元素和span元素一样高。

相关文章

  • inline-block元素对齐问题

    刚刚在网上看到一个有趣的例子: 出来的效果图是这样的。理论上来说,父元素行高和子元素高度一样,为啥父元素会比子元素...

  • overflow:hidden和display:inline-b

    同时拥有overflow hidden 和 display inline-block 的元素,会对行内元素垂直对齐...

  • 浮动与display:inline-block

    显示方式 inline-block 默认为行内块级元素,所以之间会有缝隙。 对齐方式 inline-block 没...

  • CSS布局篇

    1.单行时居中,多行时左对齐 原理:父元素设置居中对齐,子元素设置为inline-block元素,当单行时,整个子...

  • inline-block和inline的对齐问题

    这两个其实都是一个问题。因为inline-block对兄弟元素而言是行内元素。它默认对齐方式是baseline;基...

  • 前端css 小技巧

    在设置元素 ' inline-block'的时候 当出现元素上下未对齐,需要将元素设置vertical-alig...

  • inline-block 不对齐的问题

    在开发中,inline-block有时候会出现错乱问题,有些元素靠上对齐,有些元素靠中,有些靠下,这个时候需要和v...

  • css样式2

    inline-block有什么特性?如何去除缝隙?高度不一样的inline-block元素如何顶端对齐? inli...

  • 关于CSS:inline vertical-align

    前言 关于vertical-align表示内联元素相对于父元素的对齐方式。先上结论: ‘inline-block’...

  • 随手记

    Tips Tip1:float会使元素生成块级框Tip2:inline-block元素向下对齐Tip3:JavaS...

网友评论

      本文标题:inline-block元素对齐问题

      本文链接:https://www.haomeiwen.com/subject/gyqtcctx.html