代码之家  ›  专栏  ›  技术社区  ›  Tom Bom

为什么父div和子div的高度不一样?[副本]

  •  0
  • Tom Bom  · 技术社区  · 6 年前

    我有一个链接,看起来像一个按钮,我想设置背景颜色不同。

    但是,我不明白为什么 holder div的高度和它的孩子不一样。我不考虑填充物。

    .link {
      background-color: green;
      padding: .9rem 3rem;
    }
    
    .holder {
      background-color: red;
      text-align: center;
      margin-top: 40px;
    }
    <div class="holder">
      <a href="#" class="link">LINK</a>
    </div>
    3 回复  |  直到 6 年前
        1
  •  4
  •   Obsidian Age    6 年前

    你需要添加 display: inline-block 给你的 .link 元素:

    .link {
      background-color: green;
      padding: .9rem 3rem;
      display: inline-block;
    }
    
    .holder {
      background-color: red;
      text-align: center;
      margin-top: 40px;
    }
    <div class="holder">
      <a href="#" class="link">LINK</a>
    </div>

    <a> 元素是 display: inline ,并且其布局不受 the containing block . 也就是说,他们不允许 height width 设置,并且不尊重垂直填充和边距。

        2
  •  0
  •   arkhi    6 年前

    <a> 标记默认值 display inline ,所以它的父母会 display it vertically along its line box vertical-align 属性),您需要将其更改为 display: block inline-block ,这取决于你在寻找什么;

    .link {
      display: block;
      background-color: green;
      padding: .9rem 3rem;
    }
    
    .holder {
      background-color: red;
      text-align: center;
      margin-top: 40px;
    }
    <div class="holder">
      <a href="#" class="link">LINK</a>
    </div>
        3
  •  0
  •   George    6 年前

    因为默认情况下 a 标签将具有 display: inline; 所以一定要把 anchor 标记到 display: inline-block; display: block;