九宫格布局自适应宽度
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; } |
九宫格布局自适应宽度相关推荐
- CSS 圣杯布局升级版---多个固定宽度一个自适应宽度
1.一个div固定,一个div自适应宽度.两种情况,固定在左或者在右. HTML: <div class="box1"><div class="main ...
- CSS之左定宽度右自适应宽度并且等高布局
一.两列布局:左边固定宽度,右边自适应宽度 方法1:浮动布局 采用的是左边浮动,右边加上一个margin-left值,让他实现左边固定,右边自适应的布局效果 HTML: CSS: 上面这种实现方法最关 ...
- 使用负边距创建自适应宽度的流体布局
随着越来越大的浏览器的出现及普及,网站界面如何能满足不同分辨率浏览器使用者的浏览需求,逐渐成为前端开发工程师必须面对的问题.目前国内门户很多都进行了改版,采用目前的主流–960px左右的宽度. 我认为 ...
- html div自适应布局,css两个div自适应宽度布局方法大全(精华)
第一种方法:BFC块级格式化上下文 -----左边固定宽度----- ----------------------------------------右边自适应宽度------------------ ...
- css布局:左边固定宽度,右边自适应宽度或右侧固定,左侧自适应三种方法
方法一:浮动布局 这种方法我采用的是左边浮动,右边加上一个margin-left值,让他实现左边固定,右边自适应的布局效果 HTML Markup <div id="left" ...
- html九宫格布局原理,了解CSS九宫格布局的几大实现方法
九宫格布局在制作一些Web App时还是经常可以用到的,本篇文章带大家了解一下CSS九宫格布局的几大实现方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 前提说明 除非特别说明, ...
- 九宫格布局方式有哪些,有什么优缺点?
这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [九宫格布局方式 ...
- CSS实现九宫格布局方法
在实际开发中经常会遇到九宫格布局,所以总结几种利用CSS实现九宫格布局的方法,仅供参考... 目录: 利用grid创建网络布局 利用display:table 利用absolute方位值 利用floa ...
- 【冰极峰教程系列之二】:牢不可破的九宫格布局
原创:冰极峰 转载请注明出处 时间:2009年6月22日 8:40:16 冰极峰教程系列之一:九宫格基本布局 冰极峰教程系列之二:牢不可破的九宫格布局 冰极峰教程系列之三:三层分离的完美九宫格 冰极峰 ...
最新文章
- zynq学习03 zynq中三种实现GPIO的方式
- xp snapshot.
- 有序数组求和问题(Two Sum II - Input array is sorted)
- windows和linux下的文件路径表示
- 基于SSM的勤工助学管理系统
- selenium webdriver如何操作select下拉框
- eclipse 搭建python环境
- node js unknown option -v._mac os上搭建node环境(nvm, node.js, npm)
- 禁用校园网烦人的客户端下载自动弹窗
- C#窗体应用实战项目——绩效考核管理系统
- Python微信自动回复脚本
- vue实现鼠标拖拽div滚动效果-vue-dragscroll(整理)
- 计算机课程 图层关系认识 课件,PhotoShop系列视频讲座(八讲)
- qt中文乱码原因分析及解决方案
- 2017第49周二乌镇互联网大会总结
- VS2015报错C4996处理
- numpy.logspace讲解
- 对文件或文件夹进行删除、移动、windows10重命名等操作时,系统可能提示“操作无法完成,因为其中的文件夹已在另一程序中打开,请关闭该文件或文件夹,然后重试
- 数据库 string (varchar) 类型 按数值 进行排序
- 面向金融行业项目实施及开发。