html - inline-block 适用于哪个元素?

标签 html css

我正在研究 inline-block 属性并且知道它有助于同一行上的元素(而不是像往常一样在每一行上)。但是我不知道 inline-block 是如何工作的。

inline-block 元素 X 是使 X 与前一个元素在同一行还是使下一个元素与 X 在同一行。

例如下面的代码:

div {
    background: #eee;
    color: black;
    margin: 10px;
}

.one {
    display: inline-block;
}
<div class="one">One</div>
<div class="two">Two</div>
<div class="one">Three</div>
<div class="one">Four</div>

我运行并看到结果是:一个在一行上(但换行),两个在新行上(不换行),三个和四个在同一行上(但与两个不同)。我无法解释。请告诉我为什么他们会这样。

最佳答案

inline-block 将元素放在行框上。这个线盒具体在哪里渲染取决于周围的元素以及容器的大小。

block 级元素将与任何行框垂直分离,除非它是 float 的(在这种情况下,如果有足够的空间,它将位于行框旁边)。这是因为line boxes是严格意义上的内联布局概念,在block布局中是不存在的,block级元素在正常流中是垂直布局的。这就是元素二在其自己的行上的原因。

元素三和四没有 block 级元素分隔它们,因此将出现在元素二之后的同一个行框(除非它们需要换行)。在这方面,它们的行为很像短语中的两个单独的词。

不幸的是,我不知道有任何好的引用资料描述了 block 布局和内联布局之间的交互。下一个最好的是 section 9.4 of CSS2.1 ,它描述了正常的流程,但作为一个技术规范,我怀疑大多数作者很难将它的大部分文本与这个例子联系起来。

关于html - inline-block 适用于哪个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30198315/

相关文章:

html - 如何通过bootstrap collapse显示同一日期的多行数据?

jquery - Angularjs Image Slider按键绑定(bind)不起作用并且

html - h3 和 anchor 标签样式问题

javascript - IOS Safari,在javascript中从鼠标点击的屏幕获取绝对位置,不包括滚动区域

css - 在没有父容器的情况下对齐两个 <div>

html - 如何使图像栏与移动菜单保持在顶部?

html - SSL 证书将网站重定向到不安全

java - 未使用CSS样式且未读取列表

css - LESS 使用变量

css - asp.net如何改变菜单的对齐方式