热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

css两列自适应宽度布局(左定宽,右自适应)

1、利用BFC:<div><div>左<div><divclassrigh

1、利用BFC:

<div id="root">
    <div class="left">div>
    <div class="right">div>
div>
#root {
    height: 300px;
}
.left {
    float: left;
    width: 200px;
    height: 80%;
    background-color: rgba(255, 0, 0, 0.5);
}
.right {
    height: 100%;
    background-color: green;
}

现在结果如上图的效果,为什么呈现这种效果?

每个元素的margin box(.left、.right)的左边, 与包含块border box(#root)的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。所以.left盖在.right的上方。

怎么解决这种问题呢?-----BFC的区域不会与float box重叠。我们让.right成为一个BFC应该就可以了。

#root {
    height: 300px;
}
.left {
    float: left;
    width: 200px;
    height: 80%;
    background-color: rgba(255, 0, 0, 0.5);
}
.right {
    height: 100%;
    background-color: green;
    overflow: hidden; // 触发,成为BFC
}

可以了,达到我们想要的效果。

2、css3有了flex属性,轻而易举就实现这种布局,第一种方法当做开阔眼界吧。

#root {
    height: 300px;
    display: flex;
}
.left {
    width: 200px;
    height: 80%;
    background-color: rgba(255, 0, 0, 0.5);
}
.right {
    flex: 1;
    background-color: green;
}

 


推荐阅读
author-avatar
w3cbj.cn
w3c笔记,程序员专属笔记云平台,24种代码高亮!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有