html - 显示: inline-block adds vertical padding

标签 html css padding

我有以下 HTML 和 CSS:

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

body {
  margin: 0;
}

.row {
  background-color: red;
  /* display: inline-block; */
}

ul {
  list-style: none;
  padding: 0;
}

ul li {
  border: 2px solid green;
  display: inline-block;
  margin: 0;
  padding: 15px;
}
<div class="row">
  <ul>
    <li>one</li>
    <li>two</li>
    <li>one</li>
  </ul>
</div>

当我在 CSS 中使用 inline-block 时,它看起来像这样:

enter image description here

但如果没有 display:inline-block ,它看起来像这样(这完全没问题,假设默认情况下显示是 block ):

enter image description here

那么这个垂直内边距从何而来?

最佳答案

填充来自无序列表和折叠边距。当父级 (div.row) 上没有 display: inline-block 时,该 div 默认显示为 block 元素,并且 margins collapse 。您可以通过添加 overflow: auto 应用折叠边距的标准补救措施来看到这一点。到 div.row 元素。

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

body {
  margin: 0;
}

.row {
  background-color: red;
  /* display: inline-block; */
  overflow:auto;
}

ul {
  list-style: none;
  padding: 0;
}

ul li {
  border: 2px solid green;
  display: inline-block;
  margin: 0;
  padding: 15px;
}
<div class="row">
  <ul>
    <li>one</li>
    <li>two</li>
    <li>one</li>
  </ul>
</div>

消除多余空间的最简单方法是将 <ul> 上的边距设置为零。 .

关于html - 显示: inline-block adds vertical padding,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45802502/

相关文章:

html - CSS3 下拉菜单中的错误

javascript - HTML5 文件 api 和 octokit.js 以及二进制文件

html - Bootstrap 欢迎弹出窗口和悬停

css - 带填充的普通按钮

CSS - Float Left + Padding = Last Div Go Down?

html - 能够检查 iOS 设备上禁用的复选框

c# - 如何在代码隐藏中从 HTML Select 中获取选定的值/文本

css - 如何将特定格式应用于 Rails 中的标签

javascript - 滚动到固定标题顶部时延迟重绘

c# - 填充空字符串时如何避免异常