Display inline-block 会生成一个我无法删除的 margin-bottom

Display inline-block generates a margin-bottom that i can't remove

我尝试了 display、float、width/height 的所有组合,并将所有边距和填充设置为 0,但容器带有 display: inline-block 总是生成一个 margin-bottom,我只能通过添加样式 "margin-bottom: - ... px "

请看一下代码,非常基础index.php

无论如何,我对任何类型的解决方案都持开放态度,我只希望 div“.posts”包含帖子,所以如果有没有 "display: inline-block" 的解决方案,我也可以。

先谢谢大家

首先,您在多个地方使用了#post。这是非常糟糕的做法。使用 ID 应该是唯一的。因此,您将得到非常复杂的 CSS 输出。将它们更改为 .post。参见 https://css-tricks.com/the-difference-between-id-and-class/

其次,.posts 应该是 display: block,因为您没有将它们排成一行。参见:http://designshack.net/articles/css/whats-the-deal-with-display-inline-block/

第三,您的 .sep 有 margin: 8px 33px,它正在创建 space。如果您删除该边距,您将不会拥有 space.

我想我也可以 post 这个作为答案:

我不明白为什么它首先需要 inline-block 而不是常规的 block,但以防万一 - 因为 inline-block 使元素内联,它从 line-height 获得额外的高度。如果您设置其父级(在本例中为 #main 的)line-height: 0,您将不会拥有额外的 space.

您稍后必须通过为您的内部元素提供不同的 line-height 来弥补这一点,例如 .posts { line-height:1.5 },否则您的文本将没有任何高度。

您看到的 space 是给予字母 descender 高度的 space,例如小写 yg 当元素的显示值设置为 inline-block; 时。当您将元素设置为 display: inline-block;.

时,您实际上是在将其视为文本

要修复,请从您的 .posts DIV 中删除 display: inline-block;。您的布局不需要它。

您可以将font-size:0 属性添加到class post中,并根据您的要求更改其在post class中的值