css - 为什么 block 级元素会这样?

标签 css

.wrapper.one {
  outline: 1px solid;
  font-size: 0;
}
.wrapper.one > div {
  /* select all div with direct parent .wrapper  */
  background-color: rgb(44, 204, 55);
  font-size: 20px;
}
.wrapper.two {
  outline: 1px solid;
}
.wrapper.two > div {
  /* select all div with direct parent .wrapper  */
  background-color: rgb(55, 44, 204);
  font-size: 20px;
}
.wrapper.three {
  outline: 1px solid;
}
.wrapper.three > div {
  /* select all div with direct parent .wrapper  */
  background-color: rgb(204, 44, 55);
  font-size: 20px;
}
<!-- change font size-stuff-->
<div class="wrapper one">
  <div>
    <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
      <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        </p>
  </div>
  <div>
    <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
      <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        </p>
  </div>
</div>

<!-- closeopen tag-stuff -->
<div class="wrapper two">
  <div>
    <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
      <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        </p>
  </div>
  <div>
    <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
      <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        </p>
  </div>
</div>

<!-- comment out-stuff -->
<div class="wrapper three">
  <div>
    <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
      <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        </p>
  </div><!--
  --><div>
    <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
      <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        </p>
  </div>
</div>

在上面的示例中,您看到每个包装器中的两个直接子级之间有一条白线。我在网上找到了 3 条如何修复它的建议(例如)以及使用内联 block 元素(为什么???)。

我发现这无法清除它们之间的所有空间。

div {
  margin: 0;
  }

但是使用星号(全部获取)将清除它们之间的所有空间。

* {
  margin: 0;
  }

我知道:

  • block 级元素从换行符开始
  • 如果未设置 block 元素宽度为 100%

我不知道:

  • 为什么星号有效而 div 无效..
  • 即使行很清楚,为什么要从新行开始

非常欢迎任何建议:-)

最佳答案

使用 * 选择器是有效的,因为边距是由 p 元素引起的,它被该选择器捕获(但不是 div ).

你可以使用 p { margin: 0; },如下例所示。

p {
    margin: 0;
}
.wrapper.one {
  outline: 1px solid;
  font-size: 0;
}
.wrapper.one > div {
  /* select all div with direct parent .wrapper  */
  background-color: rgb(44, 204, 55);
  font-size: 20px;
}
.wrapper.two {
  outline: 1px solid;
}
.wrapper.two > div {
  /* select all div with direct parent .wrapper  */
  background-color: rgb(55, 44, 204);
  font-size: 20px;
}
.wrapper.three {
  outline: 1px solid;
}
.wrapper.three > div {
  /* select all div with direct parent .wrapper  */
  background-color: rgb(204, 44, 55);
  font-size: 20px;
}
<!-- change font size-stuff-->
<div class="wrapper one">
  <div>
    <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
      <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        </p>
  </div>
  <div>
    <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
      <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        </p>
  </div>
</div>

<!-- closeopen tag-stuff -->
<div class="wrapper two">
  <div>
    <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
      <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        </p>
  </div>
  <div>
    <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
      <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        </p>
  </div>
</div>

<!-- comment out-stuff -->
<div class="wrapper three">
  <div>
    <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
      <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        </p>
  </div><!--
  --><div>
    <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
      <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        <p><a>A </a><b>B </b><code>C </code><del>D </del><em>E </em>
        </p>
  </div>
</div>

关于css - 为什么 block 级元素会这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34369615/

相关文章:

javascript - 最小高度、高度、类别、id 优先级

javascript - 悬停在多个框上的效果

html - 通过 CSS 超链接图像,无需 JS、Action、Object 等

javascript - 单击另一个时如何从div中删除颜色

css - 有哪些可用的 CSS 调试工具?

css - 希望得到 “display: table-cell;” 和填充的指导

html - 如何在 CSS 中绘制形状?

html - div 内的表格,表格不能准确地放在 div 上

html - 过渡不适用于 FF

html - Github GH Pages 更改 h1 的字体