html九宫格布局原理,CSS九宫格布局

Flex实现

原理: 使用flex弹性布局和flex-wrap来设置

//html代码

  • 九宫格1
  • 九宫格2
  • 九宫格3
  • 九宫格4
  • 九宫格5
  • 九宫格6
  • 九宫格7
  • 九宫格8
  • 九宫格9

// css代码

.box {

position: relative;

width: 100%;

height: 600px;

}

.box-inner {

position: absolute;

top: 0;

left: 0;

width: 100%;

height: 100%;

display: flex;

flex-wrap: wrap;

}

.box-inner > li {

overflow: hidden;

flex-grow: 1;

background-color: darkorange;

text-align: center;

color: #ffffff;

width: 33%;

height: 200px;

line-height: 200px;

margin: 1px;

text-align: center;

}

复制代码

效果图

0962f2eb23f48d9d9f122dc47bc7fa62.png

Grid实现

原理:使用grid创建网格布局,划分为3x3的等分布局

//html代码

九宫格1
九宫格2
九宫格3
九宫格4
九宫格5
九宫格6
九宫格7
九宫格8
九宫格9

//css代码

.box {

display: grid;

height: 600px;

width: 100%;

grid-template-columns: repeat(3, 1fr);

grid-template-rows: repeat(3, 1fr);

}

.box > div {

width: 98%;

margin: 1%;

background-color: deeppink;

text-align: center;

line-height: 200px;

}

.box > div:nth-child(even) {

background-color: black;

color: #fff;

}

复制代码

效果图

df703ec978e9c70d97c153c8c0d467ba.png

Float实现

原理:利用float布局和31%的百分比设置宽和高

//html代码

  • 九宫格1
  • 九宫格2
  • 九宫格3
  • 九宫格4
  • 九宫格5
  • 九宫格6
  • 九宫格7
  • 九宫格8
  • 九宫格9

//css代码

.box {

position: relative;

width: 100%;

height: 600px;

}

.box-inner {

position: absolute;

top: 0;

left: 0;

width: 100%;

height: 100%;

}

.box-inner > li {

position: relative;

float: left;

width: 31%;

height: 31%;

margin: 1%;

list-style-type: none;

background-color: springgreen;

text-align: center;

line-height: 200px;

}

.box-inner > li:nth-child(odd) {

background-color: silver;

}

复制代码

效果图

b4beac64f89fc3a15708067124dc6276.png

Table实现

原理1:使用原生table表格实现九宫格

缺点:单元之间的间隔使用border-spacing实现,不支持百分比,设置后为添加单元四周的间隔

//html代码

九宫格1九宫格2九宫格3
九宫格4九宫格5九宫格6
九宫格7九宫格8九宫格9

//css代码

.box {

position: relative;

width: 100%;

height: 600px;

}

.box-inner {

position: absolute;

top: 0;

left: 0;

width: 100%;

height: 100%;

margin: 10px;

border-spacing: 0.57em;

font-size: 20px;

empty-cells: hide;

table-layout: fixed;

}

.box-inner > tbody > tr > td {

text-align: center;

background-color: burlywood;

overflow: hidden;

}

复制代码

效果图

4a22f73c536b5615d0d64b5bfabef4ad.png

原理2:模仿table表格,模拟tr+td的方式实现,减少重置table某些样式

缺点:对margin值无反应,响应padding属性,内容溢出时会自动撑开父元素

包含三个li,li包含三个div

ul使用display:table,模拟

li使用display: table-row, 模拟

li包含的三个div使用display: table-cell,模拟

//html代码

  • 九宫格1
    九宫格2
    九宫格3
  • 九宫格4
    九宫格5
    九宫格6
  • 九宫格7
    九宫格8
    九宫格9

//csss代码

.box {

position: relative;

width: 100%;

height: 600px;

}

.box-inner {

position: absolute;

top: 0;

left: 0;

width: 100%;

height: 100%;

display: table;

margin: 10px;

}

.box-inner li {

display: table-row;

}

.box-inner li div {

display: table-cell;

width: 30%;

background-color: crimson;

border: 1px solid black;

line-height: 200px;

text-align: center;

font-size: 20px;

}

.box-inner li div:nth-child(even) {

background-color: seashell;

}

复制代码

效果图

ffbe49f8d6a0851b7028aea7f0338157.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值