使用灵活布局(display: flex
)玩得很开心,我对它的功能印象深刻。但是,我遇到了一个问题,它与<!DOCTYPE html>
。
我想创建简单的页面。页眉和页脚(均为50px高度)和内容应占用剩余空间。页眉和页脚应始终可见,因此即使内容长于该屏幕,也不应显示滚动。
请查看以下代码段
<html>
<head>
<style>
body {
margin: 0;
padding: 0;
}
.container {
height: 100%;
display: flex;
flex-direction: column;
}
.header {
height: 50px;
background-color: red;
}
.content {
flex-grow: 1;
background-color: blue;
}
.footer {
height: 50px;
background-color: green;
}
</style>
<head>
<body>
<div class="container">
<div class="header"></div>
<div class="content"></div>
<div class="footer"></div>
</div>
</body>
工作正常。标题位于顶部,页脚位于底部,内容占据剩余空间。但是,如果我添加指令<!DOCTYPE html>
,则内容为0px高度,标题位于页脚旁边。内容未扩展。
这应该是这样的:
这就是<!DOCTYPE html>
的外观
任何人都知道原因是什么?怎么解决?为什么这个指令对渲染有如此大的影响?
答案 0 :(得分:3)
没有!DOCTYPE您的浏览器转到quirks mode并导致不同的box model。
Mateusz的代码似乎工作正常。
答案 1 :(得分:2)
由于在<!DOCTYPE html>
持续存在时使用HTML5标准模式,因此无法根据需要使用flex布局。要生成预期结果,您需要通过以下示例
.container{
position:absolute;
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
}
使用这个css-trick,你将同时包含html5和html4。