代码之家  ›  专栏  ›  技术社区  ›  mcbeav

为什么内联块元素的边距会影响同级内联块元素

  •  1
  • mcbeav  · 技术社区  · 8 年前

    我不明白为什么 margin-top 的 <nav> 元素(位于 <hgroup> 元素)影响 页边距顶部 或 <hgroup> . 通过向 <导航(>); 元素 <hgroup> 元素也向下移动,好像它也有 top-margin 应用于it

    heading {
      position: relative;
      display: inline-block;
      border: 1px solid #333;
    }
    
    heading hgroup {
      display: inline-block;
      font-family: "Avenir";
      font-size: 5em;
      border: 1px solid yellow;
    }
    
    nav {
      position: relative;
      display: inline-block;
      margin: 500px 0 0 -1.618em;
      border: 1px solid red;
    }
    <heading>
      <hgroup>
        <h1>NERD</h1>
        <h1>CO.</h1>
      </hgroup>
      <nav>
        <ul>
          <li><a href="#">articles</a></li>
          <li><a href="#">podcast</a></li>
          <li><a href="#">social</a></li>
          <li><a href="#">about</a></li>
          <li><a href="#">contact</a></li>
        </ul>
      </nav>
    </heading>
    1 回复  |  直到 8 年前
        1
  •  1
  •   Julio Feferman Mohamed Mostafa Goda    8 年前

    这个 inline-block 元素的行为类似于 inline 元素,因为它将受制于定位属性,例如 line-height 和 vertical-align . 一旦您增加 margin-top 属于 nav 过去的 500px 或者,线条的高度大于 hgroup . 默认值 垂直对齐 属于 baseline 推送 hgroup集团 向下换句话说,元素是根据内联流定位的。

    请注意,在下面的代码片段中,当我设置 垂直对齐 到 top 比 hgroup集团 放置在该行的顶部。

    heading {
      position: relative;
      display: inline-block;
      border: 1px solid #333;
    }
    
    heading hgroup {
      display: inline-block;
      font-family: "Avenir";
      font-size: 5em;
      border: 1px solid yellow;
      vertical-align: top;
    }
    
    nav {
      position: relative;
      display: inline-block;
      margin: 550px 0 0 -1.618em;
      border: 1px solid red;
    }
    <heading>
      <hgroup>
        <h1>NERD</h1>
        <h1>CO.</h1>
      </hgroup>
      <nav>
        <ul>
          <li><a href="#">articles</a></li>
          <li><a href="#">podcast</a></li>
          <li><a href="#">social</a></li>
          <li><a href="#">about</a></li>
          <li><a href="#">contact</a></li>
        </ul>
      </nav>
    </heading>