FlexBox

HTML 结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
<div class="square"><ul class="square-inner flex"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>
</div>

抽取公共样式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.square{position: relative;width: 100%;height: 0;padding-bottom: 100%; /* padding百分比是相对父元素宽度计算的 */margin-bottom: 30px;
}
.square-inner{position: absolute;top: 0;left: 0;width: 100%;height: 100%; /* 铺满父元素容器,这时候宽高就始终相等了 */
}
.square-inner>li{width: calc(98% / 3);  /* calc里面的运算符两边要空格 */height: calc(98% / 3);margin-right: 1%;margin-bottom: 1%;overflow: hidden;
}

使用Flex的一个好处是不用再担心高度塌陷的问题,而且还可以轻松实现子元素横向竖向甚至按比例伸缩扩展的布局。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.flex{display: flex;flex-wrap: wrap;
}
.flex>li{flex-grow: 1; /* 子元素按1/n的比例进行拉伸 */background-color: #4d839c;text-align: center;color: #fff;font-size: 50px;line-height: 2;
}
.flex>li:nth-of-type(3n){ /* 选择个数是3的倍数的元素 */margin-right: 0;
}
.flex>li:nth-of-type(n+7){  /* 选择倒数的三个元素,n可以取0 */margin-bottom: 0;
}

FlexBox-效果图

Grid

对于网格布局来说,grid 比 flex 更为方便,代码量更少,可以处理更为复杂的结构。

1
2
3
4
5
6
7
8
9
10
11
12
13
<div class="square"><div class="square-inner grid"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div><div>9</div></div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
.grid{display: grid;grid-template-columns: repeat(3, 1fr); /* 相当于 1fr 1fr 1fr */grid-template-rows: repeat(3, 1fr); /* fr单位可以将容器分为几等份 */grid-gap: 1%; /* grid-column-gap 和 grid-row-gap的简写 */grid-auto-flow: row;
}
.grid>div{color: #fff;font-size: 50px;line-height: 2;text-align: center;background: linear-gradient(to bottom, #f5f6f6 0%,#dbdce2 21%,#b8bac6 49%,#dddfe3 80%,#f5f6f6 100%);
}

Grid-效果图

更多:CSS Grid布局指南

Float

浮动实现九宫格就不多说了,原理同上。

1
2
3
4
5
6
7
8
9
10
11
12
13
<div class="square"><ul class="square-inner float"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li></ul>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.float::after{content: "";display: block;clear: both;visibility: hidden;
}
.float>li{float: left;background-color: #42a59f;text-align: center;color: #fff;font-size: 50px;line-height: 2;
}
.float>li:nth-of-type(3n){margin-right: 0;
}
.float>li:nth-of-type(n+7){margin-bottom: 0;
}

Float-效果图

除了浮动,这里 li 也可以使用display: inline-block;实现同样的效果,不过要注意HTML代码非压缩情况下行块级元素之间会出现默认间隔,不同浏览器下表现还不一样,这时可以给父级元素设置font-size: 0;

Table

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<div class="square"><table class="square-inner table"><tbody><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr><tr><td>7</td><td>8</td><td>9</td></tr></tbody></table>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
.table{border-collapse: separate;border-spacing: 0.57em;font-size: 14px;empty-cells: hide;table-layout: fixed;
}
.table>tbody>tr>td{text-align: center;background-color: #889ed8;overflow: hidden;
}

九宫格布局自适应宽度相关推荐

  1. CSS 圣杯布局升级版---多个固定宽度一个自适应宽度

    1.一个div固定,一个div自适应宽度.两种情况,固定在左或者在右. HTML: <div class="box1"><div class="main ...

  2. CSS之左定宽度右自适应宽度并且等高布局

    一.两列布局:左边固定宽度,右边自适应宽度 方法1:浮动布局 采用的是左边浮动,右边加上一个margin-left值,让他实现左边固定,右边自适应的布局效果 HTML: CSS: 上面这种实现方法最关 ...

  3. 使用负边距创建自适应宽度的流体布局

    随着越来越大的浏览器的出现及普及,网站界面如何能满足不同分辨率浏览器使用者的浏览需求,逐渐成为前端开发工程师必须面对的问题.目前国内门户很多都进行了改版,采用目前的主流–960px左右的宽度. 我认为 ...

  4. html div自适应布局,css两个div自适应宽度布局方法大全(精华)

    第一种方法:BFC块级格式化上下文 -----左边固定宽度----- ----------------------------------------右边自适应宽度------------------ ...

  5. css布局:左边固定宽度,右边自适应宽度或右侧固定,左侧自适应三种方法

    方法一:浮动布局 这种方法我采用的是左边浮动,右边加上一个margin-left值,让他实现左边固定,右边自适应的布局效果 HTML Markup <div id="left" ...

  6. html九宫格布局原理,了解CSS九宫格布局的几大实现方法

    九宫格布局在制作一些Web App时还是经常可以用到的,本篇文章带大家了解一下CSS九宫格布局的几大实现方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 前提说明 除非特别说明, ...

  7. 九宫格布局方式有哪些,有什么优缺点?

    这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [九宫格布局方式 ...

  8. CSS实现九宫格布局方法

    在实际开发中经常会遇到九宫格布局,所以总结几种利用CSS实现九宫格布局的方法,仅供参考... 目录: 利用grid创建网络布局 利用display:table 利用absolute方位值 利用floa ...

  9. 【冰极峰教程系列之二】:牢不可破的九宫格布局

    原创:冰极峰 转载请注明出处 时间:2009年6月22日 8:40:16 冰极峰教程系列之一:九宫格基本布局 冰极峰教程系列之二:牢不可破的九宫格布局 冰极峰教程系列之三:三层分离的完美九宫格 冰极峰 ...

最新文章

  1. zynq学习03 zynq中三种实现GPIO的方式
  2. xp snapshot.
  3. 有序数组求和问题(Two Sum II - Input array is sorted)
  4. windows和linux下的文件路径表示
  5. 基于SSM的勤工助学管理系统
  6. selenium webdriver如何操作select下拉框
  7. eclipse 搭建python环境
  8. node js unknown option -v._mac os上搭建node环境(nvm, node.js, npm)
  9. 禁用校园网烦人的客户端下载自动弹窗
  10. C#窗体应用实战项目——绩效考核管理系统
  11. Python微信自动回复脚本
  12. vue实现鼠标拖拽div滚动效果-vue-dragscroll(整理)
  13. 计算机课程 图层关系认识 课件,PhotoShop系列视频讲座(八讲)
  14. qt中文乱码原因分析及解决方案
  15. 2017第49周二乌镇互联网大会总结
  16. VS2015报错C4996处理
  17. numpy.logspace讲解
  18. 对文件或文件夹进行删除、移动、windows10重命名等操作时,系统可能提示“操作无法完成,因为其中的文件夹已在另一程序中打开,请关闭该文件或文件夹,然后重试
  19. 数据库 string (varchar) 类型 按数值 进行排序
  20. 面向金融行业项目实施及开发。

热门文章

  1. 智慧记的那些事儿(三)
  2. 如本科技发布超大视野3D工业相机,用于物流、汽车制造大视野拆码垛、搬运场景
  3. 金仓数据库KingbaseES服务启动方法
  4. 朝阳群众举报阿里996造成交通严重堵塞!网友:谁举报下我们啊...
  5. Java基础教程百度云
  6. 配合式活体检测的python实现
  7. 破茧成蝶之用户体验设计师的成长之路-设计实施
  8. python之for循环和while循环的使用教程,小白也能学会的python之路
  9. 易源数据_国内十大API接口网站
  10. 从IIC通信原理到使用 —— MPU6050