仅使用填充控制高度

Control height only with padding

我有 font-size:14px, line-height:14px, padding top and bottom 7px。总和应该是28px。

这正好在 div 中,高度为 28px。但是在 ul li a 中也是一样,就是 30px。有人可以向我解释为什么吗?这个2px从哪里来的?

(我需要 ul 中的精确高度。我想我需要用 ul li a 中的填充来控制它,因为我想让它全部可点击)

这里是播放和检查的例子: http://jsfiddle.net/nyv4x9jv/

#menu {
    padding:7px 14px;
    font-family: 'verdana', sans-serif;
    font-size:14px; line-height:14px;
    margin:0;
    display: inline-block;
    background-color:red;

}

#menu2 ul li a {
    padding:7px 15px;
    font-size:14px; line-height:14px;
    font-family: 'verdana', sans-serif;
    list-style-type:none;
    text-decoration: none;
    margin:0;
    background-color:red;
}

#menu2, ul, li, a  {
    margin:0; padding:0; border:0;
}


<div id="menu"> menu </div>

    <br><br>

    <div id="menu2">
    <ul>
        <li><a href="#"> menu</a></li>
    </ul>
</div>

尝试将填充设置应用于 ul 元素本身,而不是 a 元素。

#menu2 ul{
 padding:7px 15px;
}

JSFiddle:http://jsfiddle.net/mqbazaoj/

因为div是块元素而a是内联元素

所以有区别

如前所述,您不应在 a 字段上应用行高,而应在上层应用(只需从 CSS 中删除 a)

#menu2 ul li{
    padding:7px 15px;
    font-size:14px; line-height:14px;
    font-family: 'verdana', sans-serif;
    list-style-type:none;
    text-decoration: none;
    margin:0;
    background-color:red;
}

有关行高属性的更多信息,您可以查看

https://developer.mozilla.org/en-US/docs/Web/CSS/line-height

使用 box-sizing:border-box 将允许您在锚 link 上设置固定高度,其中包括填充和边框。

那么只需要确保 padding + line-height 等于您设置的总高度即可。

* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
#menu2 ul {
  font-family: 'verdana', sans-serif;
  list-style-type: none;
  text-decoration: none;
  margin: 0;
  background-color: red;
}
#menu2,
ul,
li,
a {
  margin: 0;
  padding: 0;
  border: 0;
}
#menu2 ul li a {
  font-size: 14px;
  line-height: 14px;
  padding: 7px;
  height: 28px;
  display: inline-block;
  text-align: center;
  text-decoration: none;
  color: white;
  background: #f09d09;
}
#menu2 ul li a:hover {
  background: green;
}
<div id="menu2">
  <ul>
    <li><a href="#"> menu</a>
    </li>
  </ul>
</div>