博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS 常用布局方式,让你青铜到王者
阅读量:5798 次
发布时间:2019-06-18

本文共 4790 字,大约阅读时间需要 15 分钟。

放图震贴

单栏布局

复制代码

margin

代码实现
header
复制代码
效果

inline-block + text-align

代码实现
header
复制代码
效果

flexbox

代码实现
header
复制代码
效果

双栏布局

复制代码

margin + float

代码实现

left

float + margin

1.浮动左列

2.右列自适应,且设置margin-left

实用性:兼容性好,但是浮动后超出无法顶开父容器高度

复制代码
效果

float

代码实现

left

float + margin

1.浮动左列

2.右列自适应, 右列负margin-left

3.右列子元素正margin-left

实用性:兼容性虽好,但是相当麻烦的方案,从布局角度看 右列 部分超到了 左列 部分,还额外需要一个子元素,父元素由于两个子元素都浮动,高度彻底塌陷,还额外需要清除浮动

复制代码
效果

float + overflow

代码实现

left

left

left

left

left

left

float + overflow

1.浮动左列,左列指定宽度

2.右列overflow: hidden, 触发右列 BFC 模式

3.父元素 overflow 之后,触发 BFC 模式,浮动后仍然可以撑开父容器高度

实用性:兼容性好,较为常用的实现方式,基本没什么后遗症

复制代码
效果

表格布局

代码实现

left

表格布局

1.父元素设置 display:table; table-layout:fixed; 设置宽度

2.子元素设置 table-cell

3.左列设置宽度

实用性:不需要用到浮动,高度不会塌陷,且可以实现双边等高布局,但是也只会是等高布局,无法设置左右列边距

复制代码
效果

flexbox布局

代码实现

left

flexbox

1.父元素 display:flex

2.左列设置宽度,右列flex:1

3.右列flex:1

4.align-items: start; 设置为 start 就不撑满

实用性:PC端IE9+,简洁明了的布局方式,可以通过控制 align-items 实现等高或者不等高。

复制代码
效果

网格布局

代码实现

left

网格布局

1.父元素 设置 display:grid

2.父元素 设置 grid-template-columns: 200px 1fr; 实现 左列100px 右列自适应

3.align-items: start; 设置为 start 就不撑满

实用性:更加简洁,高效的二维布局方式,但是兼容性 ie11+ 还是相对蛋疼

复制代码
效果

三栏布局

复制代码

圣杯布局

代码实现

圣杯布局

两边固定宽度,中间自适应

1. 子元素都左浮动,父元素 padding 留出空间

2. 中间元素宽度100%

3. 左右元素相对定位 配合负边距

缺点: 如果center部分宽度效于left部分,会造成布局塌陷,旁边两列不能自动填充高度

left

right

复制代码
效果

缺陷

双飞翼布局

代码实现

双飞翼布局

圣杯布局的优化,实现内容和布局的分离

1.在圣杯布局的基础上

2.设定 parent 元素的最小宽度

3.center 元素再增加一个子元素来撑开双边

优点: 避免使用了无用的定位,由于父元素使用了 overflow 三个部分都能撑开高度

缺点: 增加了一个 inner 层

left

right

复制代码
效果

表格布局

代码实现

left

表格布局

1.父元素 diplay:table

2.子元素 display: table-cell

3.左右两边设置宽度,中间元素不设置宽度

优点: 实现等高布局,兼容性很好,如果需要兼容flex不能用的情况,优先考虑此种实现

缺点: 无法设置栏边距,等高布局无法改变,对SEO不友好

right

复制代码
效果

flexbox 布局

代码实现

left

flexbox布局

1.父元素 diplay:flex

2.左右两边 设置宽度

3.中间元素 flex: 1

4.父元素 align-items: stretch(填满)/start/end/center;控制是否填满等高

优点:书写方便简洁,可以等高也可以不等高,基本就是一个属性设置的区别,移动端常用

缺点:PC端IE10才开始支持

right

复制代码
效果

网格布局

代码实现

left

网格布局

1.父元素diplay:grid

2.父元素设置 grid-template-columns

3.align-items: stretch(填满)/start/end/center;控制是否填满等高

优点:布局强大,二维布局能力出色,可以玩出很多骚操作。未来最流弊的布局方案了

缺点:ie 谷歌一条街,打听打听谁是爹

right

复制代码
效果

转载于:https://juejin.im/post/5cb54bb3e51d456e8a12ef83

你可能感兴趣的文章
使用第三方类、库需要注意的正则类RegexKitLite的使用
查看>>
iOS \U7ea2 乱码 转换
查看>>
FCN图像分割
查看>>
ios xmpp demo
查看>>
设计模式之-工厂模式、构造函数模式
查看>>
python matplotlib 中文显示参数设置
查看>>
数据库事务隔离级别
查看>>
os模块大全详情
查看>>
【ros】Create a ROS package:package dependencies报错
查看>>
从内积的观点来看线性方程组
查看>>
kali linux 更新问题
查看>>
HDU1576 A/B【扩展欧几里得算法】
查看>>
廖雪峰javascript教程学习记录
查看>>
WebApi系列~目录
查看>>
限制CheckBoxList控件只能单选
查看>>
Java访问文件夹中文件的递归遍历代码Demo
查看>>
项目笔记:测试类的编写
查看>>
如何迅速分析出系统CPU的瓶颈在哪里?
查看>>
通过容器编排和服务网格来改进Java微服务的可测性
查看>>
re:Invent解读:没想到你是这样的AWS
查看>>