html 元素之间的换行符打破了 html 布局

Newline between html element breaks html layout

我知道元素之间 html 中的换行符被视为 space,但我认为当您尝试使用响应式布局时,这非常可怕。

例如,这里我们有预期的正确行为,但要获得它,我必须删除元素之间 html 中的换行符: https://jsfiddle.net/xew2szfu/1/

<div class="recommend-friend__dialog">You should see only me</div><div class="recommend-friend__dialog recommend-friend__dialog--variant">... but NOT ME!</div>

这里我用换行符写了 html ,就像你通常做的那样,一切都坏了: https://jsfiddle.net/rL1fqwkc/1/

<div class="recommend-friend__dialog">You should see only me</div>
<div class="recommend-friend__dialog recommend-friend__dialog--variant">... but NOT ME!</div>

我知道我可以用 float: left 解决这个问题,但我想知道我是否遗漏了什么,默认行为对我来说真的不正确。

发生这种情况是因为 inline-block 在元素之间放置了一个 space,并且随着 space 第二个 div 向下移动,因为它不适合该行了。

有很多方法可以解决这个问题。正如你所说,浮动是其中之一。 This excellent CSS Tricks article is a great help, 但我将介绍您可能想要的那些:

负保证金:

nav a {
  display: inline-block;
  margin-right: -4px;
}

很简单,你可以有一个很好的 html 格式,但是移动元素以隐藏 space。

将字体大小设置为 0:

.recommend-friend__slider{
  font-size: 0;
}
.recommend-friend__dialog {
  font-size: 12pt;
}

或者,我个人最喜欢的,跳过内联块,改用 flexbox。