仅使用填充控制高度
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>
我有 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>