CSS自适应布局(一)
在写网页布局时,经常会遇到左侧固定宽度,右侧自适应宽度的需求。而我每次都要 Google 一遍,那索性就自己梳理一遍吧,以后看自己的文章就好了。
HTML
<div class="container">
<aside></aside>
<section></section>
</div>
方案一: 使用 flex 布局
.container {
display: flex;
flex-direction: row;
height: 100%;
aside {
width: 200px;
height: 100%;
background-color: #1d13fe;
}
section {
flex: 1;
height: 100%;
background-color: #52e6ff;
}
}
利:灵活,即便是在右侧新增一个固定宽度的侧边栏,非常简单快捷。
弊:flex 为 CSS3 新增的属性值,兼容性较差,但是现在有很多兼容性的解决方案,开发者不必过多担心。
方案二: 使用 calc CSS 函数
.container {
font-size: 0;
height: 100%;
aside {
display: inline-block;
width: 200px;
height: 100%;
background-color: #1d13fe;
}
section {
display: inline-block;
width: calc(~"100% - 200px");
height: 100%;
background-color: #52e6ff;
}
}
利:同上,对上下文不会产生消极影响
弊:calc 函数是 CSS3 新增的,IE9+、FF4.0+、Chrome19+、Safari6+ 较好支持,移动端的浏览器仅“firefox for android 14.0”支持
方案三: 使用 float 布局
通常这样写
.container {
height: 100%;
aside {
float: left;
width: 200px;
height: 100%;
background-color: #1d13fe;
}
section {
height: 100%;
margin-left: 200px;
background-color: #52e6ff;
}
}
也可以参考方案二
.container {
height: 100%;
aside {
float: left;
width: 200px;
height: 100%;
background-color: #1d13fe;
}
section {
float: left;
width: calc(~"100% - 200px");
height: 100%;
background-color: #52e6ff;
}
}
利:无兼容性问题
弊:由于使用了传统的浮动布局,需要清楚浮动
最后的效果图