设备信息和错误图片
chrome: 114.0.5735.199 (正式版本) (64 位) (cohort: Stable)
图片是与下处同一个代码所得:
html和body以及div#wrapper都是1034*1020,不过html在页面一加载就会占据整个视窗,div#wrapper和body相比html边缘部分多出了h1.title的marginTop, 占据的空间是从marginTop到浏览器最底下的.
html是占据
参考https://segmentfault.com/a/1190000008516654第一种方法让footer置底,但是出现了滚动条,溢出了。看了元素的盒子模型是符合浏览器高度的.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>css lessons</title>
<style>
* {
font-family: myfont, Arial, Helvetica, sans-serif;
}
html,
body {
margin: 0;
padding: 0;
height: 100%;
}
body {
background-color: lightblue;
}
h1 {
text-align: center;
text-transform: uppercase;
letter-spacing: 1rem;
font-weight: bolder;
text-shadow: 1px 2px 3px lightslategray;
}
span {
font-size: large;
letter-spacing: normal;
font-weight: normal;
}
/* CONTAINER */
#container {
width: 1000px;
height: 400px;
background-color: #4524FB;
margin: 80px auto;
border-radius: 20px;
display: flex;
flex-direction: row;
}
.item1,
.item2,
.item3 {
width: 100px;
height: 50px;
background-color: lime;
border-radius: 10px;
text-align: center;
/* line-height和height相等时文本居中 */
line-height: 50px;
font-weight: bolder;
}
#wrapper {
min-height: 100%;
margin-bottom: -60px;
}
.placeholder,
footer {
height: 60px;
}
footer {
background-color: lightslategray;
}
</style>
</head>
<body>
<div id="wrapper">
<h1 class="title"><span>The Complete Guide to</span> <br>CSS Flexbox</h1>
<div id="container">
<div class="item1">1</div>
<div class="item2">2</div>
<div class="item3">3</div>
</div>
<div class="placeholder"></div>
</div>
<footer>
<span class="copyright">Posted by: Clarence</span>
<p class="info">
<span id="email">email: xxxxxx</span>
<span id="website">website: <a>xxxxxx</a></span>
</p>
</footer>
</body>
</html>
- 高度超过窗口高度原因?
- 为什么文章中第一种方法需要div.placeholder占位符,不需要可以吗?
第一个问题:
浏览器的部分元素是带有 默认样式 的,清除掉即可
第二个问题:
首先题主给出的链接中似乎没有
div.placeholder
,如果是指原文的div.push
,那就涉及到 文档流 了通常情况下,文档流中的元素会根据其内容自动撑开父容器的高度。但是,当我们将 margin-bottom 设置为负值时,这个元素实际上超出了其正常的布局边界,并且不再影响父容器的高度计算
它还有个广为人知的名字:
BFC
(块级格式化上下文)BFC
是 CSS 中的一种渲染机制,它会影响元素在布局中的表现和相邻元素之间的交互。当一个元素触发BFC
时,它会创建一个 独立 的渲染环境,并遵循一些特定规则进行布局,最常见的例子就是 绝对定位如果只是简单地将
footer
的margin-bottom
设置为负数,在没有其他调整的情况下,它可能会 重叠或覆盖 页面上其他内容。因此需要一个 同高 的占位 div 来代替被 footer 所占用的空间