html - 行高和内联 block 导致边框和元素之间的空间

标签 html twitter-bootstrap css

我使用 bootstrap 已经有一段时间了,在我描述我的整个问题之前,我只是在使用 inline-block 而不是 float 时遇到了一个奇怪的行为,让我说我没有广泛使用内联 block ,而且错误似乎与行高有关。

好的 HERE 是错误,如您所见,导航项和边框之间存在间隙,这破坏了我的设计,现在发生这种情况是因为我将 float:left 更改为 inline-block 在下面一行:

    .navbar-nav {
        float: none;
        display: inline-block;
        margin: 0;
    } 

那么为什么会出现这种差距呢? (我知道使用 float 会从正常流中删除元素,而使用 inline block 元素将返回到文档的正常流中。)。

现在我发现这实际上是因为行高而发生的。

TWBS,默认行高是 1.4 左右,所以现在如果我在我的代码中添加以下行,我的问题就解决了:

.navbar-default .navbar-collapse {
            text-align: center;
            line-height: 0;
 }

上面的代码被添加到 ul 中。现在看看我是如何将行高降低到 0 的,我对 line-height 有一个中等的理解,我想问的是我在这里使用了正确的解决方案吗?为什么行高会导致此错误?

P.S. 这是“为什么”的问题,而不是“我如何解决这个问题”的问题。请用证据支持你的答案,那太好了:)

最佳答案

原因是 inline-block 将 block 级元素放在一行上,就像一行文本一样,然后它会沿该基线垂直对齐。当您将 line-height 设置为零时,这个事实就被掩盖了,因为沿着零高度的线的各个点之间没有区别。

您可以如下添加 vertical-align: bottom; 来更改内联 block 元素相对于基线的位置,它应该可以解决问题。

.navbar-nav {
  float: none;
  display: inline-block;
  margin: 0;
  vertical-align: bottom;
}

效果应该是无法区分的。

关于html - 行高和内联 block 导致边框和元素之间的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465905/

相关文章:

twitter-bootstrap - Bootstrap UI - 如何在选项卡展开时更改 Accordion 标题图标?

css - 如何仅使用 CSS 自动将绝对元素置于相对父元素的中心?

javascript - Canvas 渲染模糊不平滑

html - 仅使用 css 向下滑动下拉菜单

javascript - 如何在 md-sidenav 中实用地添加或禁用(删除)md-disable-backdrop

iPhone CSS 问题

css - 滚动不工作 : react-grid-layout: 0-showcase example

javascript - jquery ui 可排序垃圾箱显示和隐藏事件

jquery - 禁用悬停在特定的单元格上

css - 未通过 Bootstrap 的 sass 覆盖应用 body 覆盖