CSS技巧 (2) · 多列等高布局
前言
最近,面试的时候都碰到一些关于利用CSS实现多列等高布局或者一侧宽度固定,另一侧宽度自适应的问题,下面稍微总结一下:
先看一道题目
巧妙的多列等高布局
规定下面的布局,实现多列等高布局,要求两列背景色等高。
<div class="container">
<div class="left">多列等高布局左<br/>多列等高布局左</div>
<div class="right">多列等高布局右</div>
</div>
方法一:使用flex布局
<div class="container">
<div class="left">多列等高布局左<br/>多列等高布局左</div>
<div class="right">多列等高布局右</div>
</div>
.container{
display:flex;
}
.left,.right{
flex:;
}
.left{
background:pink;
}
.right{
background:green;
}
缺点: IE9及IE9以下版本不支持flex属性
优点:实现方便,还可以方便实现各种比例
方法二:给容器div使用单独的背景色(流体布局)
原理就是给每一列添加相对应用的容器,并进行相互嵌套,并在每个容器中设置背景色。这里需要提醒大家你有多少列就需要多少个容器,比如说我们说的三列,那么你就需要使用三个容器。如下所示:
<div id="container2">
<div id="container1">
<div id="col1">Column 1</div>
<div id="col2">Column 2;Column 2;Column 2;Column 2;Column 2</div>
</div>
</div>
// 在这里有两列,故需要两个容器
#container2 {
float: left;
width: 100%;
background: orange;
position: relative;
overflow: hidden;
} #container1 {
float: left;
width: 100%;
background: green;
position: relative;
right: 30%;/* 距离是第二列的宽度,加上2%的padding */
} #col1 {
width: 66%;
float: left;
position: relative;
left: 32%;/* container1容器right:30%;加上内边距2%,故为32%; */
} #col2 {
width: 26%;
float: left;
position: relative;
left: 36%;/* 加上三个内边距,所以是 36%;*/
}
优点:兼容各种浏览器
缺点:嵌套太多div元素
两列等高布局,请戳 Demo ;三列等高布局 ,请戳Demo;
方法三:使用内外边距相抵消,注意父元素设置 "overflow:hidden;"
<div id="container">
<div id="left" class="column aside">
<p>Sidebar</p>
</div>
<div id="content" class="column section">
<p>Main content;content;content;content;content</p>
</div>
<div id="right" class="column aside">
<p>Sidebar</p>
</div>
</div>
#container {
margin: 0 auto;
overflow: hidden;
width: 960px;
}
.column {
background: #ccc;
float: left;
width: 200px;
margin-right: 5px;
margin-bottom: -99999px;
padding-bottom: 99999px;
}
#content {
background: #eee;
}
#right {
float: right;
margin-right:;
}
优点:兼容所有浏览器
戳 Demo
方法四:边框模仿等高列
<div id="containerOuter">
<div id="container">
<div id="content">;Main Content;Main Content;Main Content;Main Content;Main Content;Main Content;Main Content</div>
<div id="left">Left Sidebar</div>
<div id="right">Right Sidebar</div>
</div>
</div>
#containerOuter {
margin: 0 auto;
width: 960px;
}
#container {
background-color: #0ff;
float: left;
width: 520px;
border-left: 220px solid #0f0;
/* 边框大小等于左边栏宽度,颜色和左边栏背景色一致*/
border-right: 220px solid #f00;
/* 边框大小等于右边栏宽度,颜色和右边栏背景色一致*/
}
#left {
float: left;
width: 200px;
margin-left: -220px;
padding:10px;
position: relative;
/* 测试 */
border:1px solid;
}
#content {
float: left;
width: 500px;
padding:10px;
margin-right: -520px;
}
#right {
float: right;
width: 200px;
padding:10px;
margin-right: -220px;
position: relative;
}
戳 Demo
小结:实现的方式还有很多~今天暂时总结这些~~日后再继续添加
CSS技巧 (2) · 多列等高布局的更多相关文章
- 纯css实现div三列等高布局的最简单方法简化版/也可以多列
使用正padding和负margin对冲实现多列布局方法 这种方法很简单,就是在所有列中使用正的上.下padding和负的上.下margin,并在所有列外面加上一个容器,并设置overflow:hid ...
- css设置多列等高布局
初始时,多个列内容大小不同,高度不同.现在需要设置不同的背景来显示,而且各个列的高度需要保持一致.那么这就需要利用到多列等高布局. 最终需要的效果: 1. 真实等高布局 flex 技术点:弹性盒子布局 ...
- CSS3中flexbox如何实现水平垂直居中和三列等高布局
最近这些天都在弥补css以及css3的基础知识,在打开网页的时候,发现了火狐默认首页上有这样一个东西.
- css两列等高布局
布局方案 等高布局有几种不同的方法,但目前为止我认为浏览器兼容最好最简便的应该是padding补偿法.首先把列的padding-bottom设为一个足够大的值,再把列的margin-bottom设一个 ...
- 正padding负margin实现多列等高布局(转)
转自: 巧妙运用CSS中的负值 (http://www.webhek.com/post/2345qwerqwer.html) 代码来自: https://codepen.io/Chokcoco/pen ...
- css奇技淫巧之—多列等高
什么是等高布局? 先来看一个案例: 上图中的页面的主体内容是两列结构,左列是用来导航的,右列是用来显示内容的.我们看到它们有一个共同的边框,中间还有一条分隔线,左右两列的高度都是不固定的.这种情况下就 ...
- 两列等高布局 padding+margin的负值 CSS布局奇淫技巧之-多列等高
代码: 效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/ ...
- 前端应该掌握的CSS实现多列等高布局
1.引言 我们在写页面的时候,有的时候会遇到多栏布局,每个栏目里面的内容有的时候可能不一样,这样就会导致每个栏目实际的高度也是不一样的,如果每个栏目有背景颜色的,就会导致每个栏目的底部是对不齐的,用户 ...
- 实现多列等高布局_flex布局
详情参见此篇博客 http://www.w3cplus.com/css/creaet-equal-height-columns 建议掌握方法四.五 其实,利用最新的flex布局 http://www. ...
随机推荐
- NLP(十五) 聊天机器人
对话引擎 1.了解目标用户 2.理解用于沟通得语言 3.了解用户的意图 4.应答用户,并给出进一步线索 NLTK中的引擎 eliza,iesha,rude,suntsu,zen import nltk ...
- visual studio code 应用到.net core 实战
鉴于visual studio 2019 近期动不动卡顿与切分支后F12等功能失效的问题,开始考虑用visual studio code 代替他,对,你没有看错,就是代替visual studio 这 ...
- CodeForces 474F Ant colony ST+二分
Ant colony 题解: 因为一个数是合法数,那么询问区间内的其他数都要是这个数的倍数,也就是这个区间内的gcd刚好是这个数. 对于这个区间的gcd来说,不能通过前后缀来算. 所以通过ST表来询问 ...
- icpc 江苏 D Persona5 组合数学 大数阶乘(分段阶乘) 大数阶乘模板
Persona5 is a famous video game. In the game, you are going to build relationship with your friends. ...
- CF999C Alphabetic Removals 思维 第六道 水题
Alphabetic Removals time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- uwsgi基本介绍安装和测试--使用Django建立你的第一个网站
一 基本介绍 对像我这样不是专业做网络的人来说,uuwsgi是一个陌生的东西.它是谁?它可以做什么?谁会用到它?其实,在不知道一个东西是什么的情况下,能够快速的了解并使用它,是一门很有艺术性的事情.最 ...
- git 中文乱码-一次被坑经历
git log和gitcommit中文出现乱码,花了大半天的时间试了网上的各种方法,还是搞不定. 只好放大招. 卸载软件后重装,还是不行.然后git config --list 发现一些奇怪的配置信息 ...
- Elasticsearch之联想词示例
public class LianXiangWord { private static RestClient client; static { client=RestClient.builder(ne ...
- ubuntu下安装rtl8811cu/rtl8821cu网卡 Tplink WDN5200H网卡
博客园第一篇博客,CSDN现在让人眼花缭乱了 @_@ 由于需要wifi调试,笔记本内置的网卡有点不太灵光,买了个TPLINK的WDN5200H AC网卡,给虚拟机用,折腾一下成功了github上有rt ...
- Net Core基于TopShelf程序运行于服务模式
目录 Net Core基于TopShelf程序运行于服务模式 1 背景 2 优势 2.1 服务模式可设置重启条件 2.2 避免误操作 3.使用 3.1 GUI方式安装Topshelf包 4 配置 5 ...