我收到了您的答复,内容如下。"如果没有 display:block,anchor(a) 元素将被视为 display:inline。因此,在计算其父元素的大小时(高度默认为 auto),anchor(a) 元素的填充被省略,而它包含在 display:block 的情况下。”
这听起来是正确的,但我不明白为什么当这个元素是内联元素时,li 包括锚元素的填充顶部和填充底部的大小。我的意思是根据您之前的回答,当锚元素位于内联元素中时,锚元素的 padding-top 和 padding:bottom 应该被省略,因为它在这个标记中,因为 display:block 被注释掉了。
这个锚元素在某种程度上有两个父元素。li 元素是锚元素的直接父元素,ul 是 li 元素的父元素,ul 是锚元素的祖先。
如果我运行标记,则 li 元素的背景会更高,因为顶部填充和底部填充为 40px。当计算 ul 的高度时,它不包括锚元素的 padding-top 和 padding-bottom。
这是完整的标记和样式
<!DOCTYPE html>
<html>
<head>
body
{
font-family:Arial, sans-serif;
font-size:small;
width:820px;
margin:0;
padding:0;
}
#nav
{
float:left;
width:100%;
margin:0;
padding:10px 0 0 46px;
list-style:none;
background:#FFCB2D;
}
#nav li
{
float:left;
margin:0 1px 0 0;
font-family:"Lucida Grande", "sans-serif";
font-size:90%;
background:red;
}
#nav a
{
/*display:block;*/
margin:0;
padding:10px 8px;
color:#333;
text-decoration:none;
border:1px solid #9B8748;
border-bottom:none;
background:#F9E9A9;
}
#nav a:hover
{
color:#333;
padding-bottom:5px;
border-color:#727377;
background:#fff;
}
<meta charset="utf-8" />
<title>Chapter 3</title>
</head>
<body>
<ul id="nav">
<li id="t-intro"><a href="/">Introduction</a></li>
<li id="t-about"><a href="about.html">About Lance</a></li>
<li id="t-news"><a href="news.html">News & Events</a></li>
<li id="t-sponsors"><a href="sponsors.html">Sponsors</a></li>
</ul>
</body>
//托尼