布局解决方案之多列布局
来源:互联网 发布:网络中数据包流动图 编辑:程序博客网 时间:2024/06/18 01:13
前端布局非常重要的一环就是页面框架的搭建,而在页面框架的搭建之中,居中布局、多列布局、全局布局是非常重要的一环,今天我们就来总结总结前端干货之布局的解决方案。
part 2:多列布局
一、定宽+自适应
方法一 float + margin
<div class="parent"> <div class="left"> <p>left</p> </div> <div class="right"> <p>right</p> <p>right</p> </div></div>
.left { float:left; width:100px;}.right { margin-left:120px;}
- 优点:简单,易理解
- 缺点:兼容性存在一定问题,ie6下有3px的bug。right下的p清除浮动将产生bug
方法二 float + margin 改良版
<div class="parent"> <div class="left"> <p>left</p> </div> <div class="rigth-fix"> <div class="right"> <p>right</p> <p>right</p> </div> </div></div>
.left { float:left; width:100px; position:relative;}.right-fix { float:right; width:100%; margin-left:-100px;}.right { margin-left:120px;}
- 优点:简单,易理解
方法三 float + overflow
<div class="parent"> <div class="left"> <p>left</p> </div> <div class="right"> <p>right</p> <p>right</p> </div></div>
.left { float:left; width:100px; margin-right:20px;}.right { overflow:hidden;}
- 优点:简单
- 缺点:不支持ie6
方法四 table
<div class="parent"> <div class="left"> <p>left</p> </div> <div class="right"> <p>right</p> <p>right</p> </div></div>
.parent { display:table; width:100%; table-layout:fixed;}.left { width:100px; padding-right:20px;}.right,.left { display:table-cell; }
方法五 flex
<div class="parent"> <div class="left"> <p>left</p> </div> <div class="right"> <p>right</p> <p>right</p> </div></div>
.parent { display:flex;}.left { width:100px; margin-right:20px;}.right { flex:1;}
- 优点:flex很强大
- 缺点:兼容性存在一定问题,性能存在一定问题
两列定宽+一列自适应
与两列定宽查不多
例子:
<div class="parent"> <div class="left"> <p>left</p> </div> <div class="center"> <p>center</p> </div> <div class="right"> <p>right</p> <p>right</p> </div></div>
.left,.center { float:left; width:100px; margin-right:20px;}.right { overflow:hidden;}
二、不定宽+自适应
方法一 float + overflow
<div class="parent"> <div class="left"> <p>left</p> </div> <div class="right"> <p>right</p> <p>right</p> </div></div>
.left{ float: left; margin-right: 20px; }.right{ overflow: hidden;}.left p{ width: 200px;}
- 优点:简单
- 缺点:ie6下兼容性存在一定问题
方法二 table
<div class="parent"> <div class="left"> <p>left</p> </div> <div class="right"> <p>right</p> <p>right</p> </div></div>
.parent{ display: table; width: 100%; }.left,.right{ display: table-cell;}.left{ width: 0.1%; padding-right: 20px;}.left p{ width:200px;}
- 缺点:ie6 ie7不支持
方法三 flex
<div class="parent"> <div class="left"> <p>left</p> </div> <div class="right"> <p>right</p> <p>right</p> </div></div>
.parent { display:flex;}.left { margin-right:20px;}.right { flex:1;}.left p{ width: 200px;}
- 优点:flex很强大
- 缺点:兼容性存在一定问题,性能存在一定问题
两列不定宽+一列自适应
与一列不定宽+一列自适应查不多
例子:
<div class="parent"> <div class="left"> <p>left</p> </div> <div class="center"> <p>center</p> </div> <div class="right"> <p>right</p> <p>right</p> </div></div>
.left,.center{ float: left; margin-right: 20px;}.right{ overflow: hidden;}.left p,.center p{ width: 100px;}
三、等分布局
公式转化:c = w * n + g * (n-1) -> c = w * n + g * n - g -> c + g = (w + g) * n
因此,我们需要解决两个问题:1.如何让总宽度增加g(即:c+g),2.如何让每个宽包含g(即:w+g)
方法一 float
<div class="parent"> <div class="column"><p>1</p></div> <div class="column"><p>2</p></div> <div class="column"><p>3</p></div> <div class="column"><p>4</p></div></div>
.parent{ margin-left: -20px;//c增加g}.column{ float: left; width: 25%; padding-left: 20px; box-sizing: border-box;//包含padding区域 w+g}
- 优点:兼容性较好
- 缺点:ie6 ie7百分比兼容存在一定问题
方法二 table
<div class="parent-fix"> <div class="parent"> <div class="column"><p>1</p></div> <div class="column"><p>2</p></div> <div class="column"><p>3</p></div> <div class="column"><p>4</p></div> </div></div>
.parent-fix{ margin-left: -20px;//c+g}.parent{ display: table; width:100%; table-layout: fixed;}.column{ display: table-cell; padding-left: 20px;//w+g}
- 优点:结构和块数无关联
- 缺点:增加了一层
方法三 flex
<div class="parent"> <div class="column"><p>1</p></div> <div class="column"><p>2</p></div> <div class="column"><p>3</p></div> <div class="column"><p>4</p></div></div>
.parent{ display: flex;}.column{ flex: 1;}.column+.column{ margin-left:20px;}
- 优点:代码量少,与块数无关
- 缺点:兼容性存在一定问题
四、定宽+自适应+两块高度一样高
方法一 table
<div class="parent"> <div class="left"> <p>left</p> </div> <div class="right"> <p>right</p> <p>right</p> </div></div>
.parent { display:table; width:100%; table-layout:fixed;}.left { width:100px; padding-right:20px;}.right,.left { display:table-cell;}
方法二 flex
<div class="parent"> <div class="left"> <p>left</p> </div> <div class="right"> <p>right</p> <p>right</p> </div></div>
.parent { display:flex;}.left { width:100px; margin-right:20px;}.right { flex:1;}
方法三 float
<div class="parent"> <div class="left"> <p>left</p> </div> <div class="right"> <p>right</p> <p>right</p> </div></div>
p{ background: none!important;}.left,.right{ background: #444;}.parent{ overflow: hidden;}.left,.right{ padding-bottom: 9999px; margin-bottom: -9999px;}.left{ float: left; width: 100px; margin-right: 20px;}.right{ overflow: hidden;}
- 优点:兼容性好
- 缺点:伪等高,不是真正意义上的等高
阅读全文
0 0
- 布局解决方案之多列布局
- CSS之多列布局
- 布局 -列布局 column
- 布局解决方案-居中布局
- 布局解决方案
- 三列布局-混合布局
- css布局之一列布局
- 分栏布局(多列布局)
- extjs 布局 -列布局 column
- 页面布局:两列布局
- 随手记之多分辨率布局
- 三列布局 两列布局
- 两列布局、三列布局
- 布局解决方案之居中布局
- 布局解决方案之全屏布局
- css 布局 两列布局与三列布局
- CSS2 三列布局
- Column列布局
- 利用Python实现基于协同过滤算法的影片推荐
- [安卓学习笔记]----意图
- C语言——第一部分 C语言概述以及编程基础
- 布局解决方案之居中布局
- Linux C编程学习笔记(2):open、creat、close函数及文件的创建、打开与关闭
- 布局解决方案之多列布局
- 布局解决方案之全屏布局
- 次方求模
- C#中数组Array、ArrayList、泛型List<T>的比较
- C#中字典集合HashTable、Dictionary、ConcurrentDictionary三者区别
- Axon Framework在聚合中处理命令
- 苹果CMS(maccms)模板中最新和最热分类显示处理方式
- 『AngularJS』$location 服务
- nRF51822低功耗CPU睡眠软件应用