css:flex和float margin布局
一、flex布局
顶部,底部固定,中间自适应(中间左固定,右自适应)。
<body>
<div class="container">
<div class="header"></div>
<div class="content">
<div class="left"></div>
<div class="right"></div>
</div>
<div class="footer"></div>
</div>
</body>
<style>
html,
body {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
.container {
height: 100%;
background-color: yellow;
display: flex;
flex-direction: column;
}
.header {
height: 80px;
background-color: red;
}
.content {
flex: 1;
display: flex;
background-color: green;
}
.left {
width: 200px;
background-color: hotpink;
}
.right {
flex: 1;
background-color: yellow;
}
.footer {
height: 80px;
background-color: blue;
}
</style>三栏平均分布局(两边可以定框)
<body>
<div class="container">
<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>
</div>
</body>
<style>
html,
body {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
.container {
height: 100%;
background-color: yellow;
display: flex;
}
.left {
flex: 1;
background-color: red;
}
.middle {
flex: 1;
background-color: green;
}
.right {
flex: 1;
background-color: blue;
}
</style>二、float + margin
两栏布局
宽高实际需要,不设置高度,通过子元素自动撑起。
<body>
<div class="container">
<div class="left"></div>
<div class="right"></div>
</div>
</body>
<style>
html, body {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
.container {
height: 100%;
background-color: yellow;
}
.left {
float: left;
width: 200px;
height: 100%;
background-color: red;
}
.right {
margin-left: 200px;
height: 100%;
background-color: green;
}
.container::after{
content: ‘‘;
display: block;
clear: both;
}
</style>/* 不需要清除浮动也可以 */
两边固定中间自适应
<body>
<div class="container">
<div class="left"></div>
<div class="right"></div>
<div class="middle"></div>
</div>
</body>
<style>
html, body {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
}
.container {
height: 100%;
background-color: yellow;
}
.left {
float: left;
width: 200px;
height: 100%;
background-color: red;
}
.right {
float: right;
width: 200px;
height: 100%;
background-color: green;
}
.middle {
margin-left: 200px;
margin-right: 200px;
height: 100%;
background-color: blue;
}
</style>因为排在后面的浮动元素会把前面的块级元素的位置空出来,所以这里右边的浮动元素把上面的位置空了下来,所以元素排序为:
<body>
<div class="container">
<div class="left"></div>
<div class="right"></div>
<div class="middle"></div>
</div>
</body>