以下内容若有问题烦请即时告知我予以修改,以免误导更多人。
本次内容主要整理来源:布局 - 代码库 - NEC : 更好的CSS样式解决方案
一. 单列布局
1. 水平居中
(1) 文本、图片等行内元素
1 | <style> |
(2) 定宽块级元素
1 | <style> |
(3) 不定宽块元素
- inline + text-align
1 | <style> |
- table + margin
1 | <style> |
- float + relative
1 | <style> |
- absolute + transform
1 | <style> |
(4) 多个块级元素(单个块级元素也可用)
- inline-block + text-align
1 | <style> |
- flex + justify-content
1 | <style> |
2. 垂直居中
(1) 父元素高度确定的单行文本
1 | <style> |
(2) 父元素高度确定的多行文本
1 | <style> |
(3) 子元素定高块级元素
1 | <style> |
(4) 子元素不定高块级元素
- absolute + transform
1 | <style> |
- flex + align-items
1 | <style> |
3. 水平垂直居中
(1) 定宽高
- absolute + 负margin
1 | <style> |
- absolute + margin auto
1 | .child { |
- absolute + calc
1 | .box { |
(2) 不定宽高
- inline-block + table-cell
1 | <style> |
- table-cell + absolute
1 | <style> |
- absolute + transform
1 | <style> |
- flex + justify-content + align-items
1 | <style> |
- grid
1 | .parent { |
- writing-mode
1 | <div class="grand"> |
1 | .grand { |
- jQuery
1 | <script> |
二. 两列布局
1. 两个div并排的多种方法
- 定位
- margin负值
- 浮动
- 行内块
- table
2. 左侧定宽,右侧自适应
- float + margin
1 | <style> |
1 | <div class="left">左侧定宽</div> |
- float + margin
1 | <style> |
1 | <div class="left">左侧定宽</div> |
- absolute + margin
1 | <style> |
1 | <div class="left">左侧定宽</div> |
- relative + float + margin
1 | <style> |
1 | <div class="g-sd1"> |
- absolute + margin
1 | <style> |
1 | <div class="parent"> |
3. 左侧自适应,右侧定宽(基本同理,不一一列举)
- margin + absolute
1 | <style> |
1 | <div class="left">左侧自适应</div> |
- relative + float + margin
1 | <style> |
1 | <div class="g-mn2"> |
三. 等高布局
- float + margin-bottom负值
1 | <style> |
1 | <div class="box"> |
- flex
1 | <style> |
1 | <div class="box"> |
四. 多列布局
1. 左右定宽,中间自适应
- absolute + margin
1 | <style> |
1 | <div class="left">左侧定宽</div> |
- relative + float + margin
1 | <style> |
1 | <div class="g-sd51"> |
圣杯布局
- 中间栏放到文档流前面,保证先行渲染
- 三栏全部float:left浮动
- 中间栏在添加相对定位,并配合left和right属性
效果上表现为三栏是单独分开的
1 | <style> |
1 | <div id="hd">header</div> |
双飞翼布局
- 中间栏放到文档流前面,保证先行渲染
- 三栏全部float:left浮动
- 在中间栏的div中嵌套一个div,内容写在嵌套的div里,然后对嵌套的div设置margin-left和margin-right
效果上表现为左右两栏在中间栏的上面
- 区别:双飞翼多了1个div,少用大致4个css属性(圣杯布局中间div padding-left和padding-right这2个属性,加上左右两个div用相对布局position: relative及对应的right和left共4个属性,一共6个;而双飞翼布局子div里用margin-left和margin-right共2个属性,6-2=4)
作者:吕延庆
链接:https://www.zhihu.com/question/21504052/answer/50053054
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
1 | <style> |
1 | <div id="hd">header</div> |
2. 左侧自适应,中间右侧定宽
1 | <style> |
1 | <div class="g-mn4"> |
3. 右侧自适应,中间左侧定宽
1 | <style> |
1 | <div class="g-sd31"> |
五. 图片绝对居中
1 | <style> |
1 | <div class="box"> |
图片居中溢出隐藏
1 | <style> |
1 | <div class="m-demo"> |
六. 两列三列自适应
1 | <style> |
1 | <div class="g-bd"> |
七. 全屏自适应
- absolute
1 | <style> |
1 | <div class="g-hd"> |
- flex
1 | <style> |
1 | <div class="wrapper"> |
八. 底部显示自适应
1 | <style> |
1 | <div class="g-doc"> |
九. 前自适应后跟随
1 | <style> |
1 | <div class="m-demo f-cb"> |
十. 图文问题
1 | <style> |
1 | <div class="m-demo"> |
十一. 表头固定内容滚动
1 | <style> |
1 | <div class="m-demo"> |
更多内容可以订阅本人微信公众号,一起开启前端小白进阶的世界!