html - 将 HTML 元素的位置更改为绝对位置是否也会更改元素的内容类别?
问题描述
我正在学习 CSS 的定位和 HTML 的内容类别。而且我想知道为什么在我的浏览器中添加position: absolute;
内部header
元素会style.css
导致一个狭窄的标题元素块。
我希望 header 是一个块级元素并延伸到 body 元素的边框,即触摸我的屏幕边框。
索引.html
<!DOCTYPE html>
<html>
<head>
<title>Please Participate in Our Survey!</title>
<link href="https://fonts.googleapis.com/css?family=Oswald:300,700|Varela+Round" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<header>
<ul>
<li>Question 1</li>
<li>Question 2</li>
<li>Question 3</li>
<li>Question 4</li>
<li>Question 5</li>
<li>Question 6</li>
</ul>
</header>
<div class="welcome">
<h1>Welcome to our survey!</h1>
<p>We're looking forward to getting your answers so we can make sure our products and services are the best they can be!</p>
</div>
<div class="question">
<h4>Question 1</h4>
<h2>I like participating in physical activity such as running, swimming, or biking.</h2>
<div class="answer">
<h3>Disagree</h3>
</div>
<div class="answer">
<h3>Neutral</h3>
</div>
<div class="answer">
<h3>Agree</h3>
</div>
</div>
<div class="question">
<h4>Question 2</h4>
<h2>I try to keep up to date with the latest fashion in active wear.</h2>
<div class="answer">
<h3>Disagree</h3>
</div>
<div class="answer">
<h3>Neutral</h3>
</div>
<div class="answer">
<h3>Agree</h3>
</div>
</div>
<div class="question">
<h4>Question 3</h4>
<h2>I purchase clothing online regularly.</h2>
<div class="answer">
<h3>Disagree</h3>
</div>
<div class="answer">
<h3>Neutral</h3>
</div>
<div class="answer">
<h3>Agree</h3>
</div>
</div>
<div class="question">
<h4>Question 4</h4>
<h2>I try to buy goods that are designed and/or manufactured in my home country.</h2>
<div class="answer">
<h3>Disagree</h3>
</div>
<div class="answer">
<h3>Neutral</h3>
</div>
<div class="answer">
<h3>Agree</h3>
</div>
</div>
<div class="question">
<h4>Question 5</h4>
<h2>I look to famous athletes when trying to choose what to wear when training.</h2>
<div class="answer">
<h3>Disagree</h3>
</div>
<div class="answer">
<h3>Neutral</h3>
</div>
<div class="answer">
<h3>Agree</h3>
</div>
</div>
</body>
</html>
样式.css
body {
background-color: #FFF;
margin: 0 auto;
}
header {
background-color: #466995;
border-bottom: 1px solid #466995;
position: absolute; // This line!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
border: thin solid red !important;
}
ul {
margin: 30px auto;
padding: 0 20px;
text-align: center;
}
li {
color: #FFF;
font-family: 'Oswald', sans-serif;
font-size: 16px;
font-weight: 300;
text-transform: uppercase;
}
li:hover {
color: #DBE9EE;
}
h1 {
color: #466995;
font-family: 'Oswald', sans-serif;
font-size: 32px;
font-weight: 300;
text-transform: uppercase;
}
h2 {
color: #333;
font-family: 'Varela Round', sans-serif;
font-size: 26px;
font-weight: 100;
margin: 0 auto 20px auto;
}
h3 {
color: #466995;
font-family: 'Oswald', sans-serif;
font-size: 18px;
text-align: center;
font-weight: 700;
text-transform: uppercase;
padding: 30px;
}
h4 {
color: #466995;
font-family: 'Oswald', sans-serif;
font-size: 18px;
font-weight: 300;
letter-spacing: 2px;
text-align: center;
text-transform: uppercase
}
p {
color: #333;
font-family: 'Varela Round', sans-serif;
font-size: 18px;
}
footer {
background-color: #DBE9EE;
text-align: center;
}
.welcome {
background-color: #DBE9EE;
box-sizing: border-box;
padding: 40px;
text-align: center;
width: 100%;
}
.question {
text-align: center;
position: relative;
top: 40px;
}
.answer {
border: 1px solid #466995;
margin: 20px;
}
.answer:hover {
background: #C0D6DF;
color: #FFF;
}
解决方案
一个流入的、不可替换的块级盒子遵守这个等式:
margin-left + border-left-width + padding-left + width +
padding-right + border-right-width + margin-right = width of containing block
如果在您的情况下,宽度被指定为auto
,则宽度被拉伸以占据所有必要的空间以使等式成立。
一个绝对定位的、不可替换的块级盒子遵守这个等式:
left + margin-left + border-left-width + padding-left + width +
padding-right + border-right-width + margin-right + right = width of containing block
首先,如果在您的情况下,left
并且right
是auto
,宽度是包含内容所需的最小值(即它是缩小以适应),并且正确的值被拉伸以占用所有必要的空间以使等式成立.
如果您将left
and设置right
为0
,那么在设置width
为 auto 的情况下,宽度会被拉伸以占据所有必要的空间以使等式保持不变,并且您的标题将增长到接触边框或两侧。
有关更多案例和详细信息,请参阅CSS 2.2 规范的第 10.3 节计算宽度和边距。
推荐阅读
- oracle - rownum 不适用于包含更新查询的 PL/SQL 中的更新
- kubernetes - Helm 错误:错误:服务器已要求客户端提供凭据
- r - 根据第三个变量绘制线
- scipy - Scipy.stat.gamma.ppf 返回 inf 值
- docker - 使用 Jib 和 Gitlab-CI 构建 docker 镜像
- python - 如何将 ResNet50 隐藏层与另一个模型输入连接起来?
- javascript - 如何为登陆页面创建卡通图像
- c# - 使用 tableSorter Jquery 插件对特定列进行排序
- python - 请求:Python Post Request 仅返回错误代码 400
- elasticsearch - 如何从服务器访问 ElasticSearch?