赞
踩
grid布局即网格布局是一种二维布局,可以同时控制行和列的排布和对齐方式,grid布局由水平线和垂直线构成,两条水平线之间的区域叫做行轨道,两条垂直线的区域叫做列轨道。
使用这种布局方式只需要给外层容器(父容器)设置 display: grid; 此时容器的直接子元素就会自动称为grid布局的元素。
.grid {
display: grid
}
.grid {
/* 为grid盒子开启grid布局 */
display: grid;
/* 使用grid-template-column 属性指定每列的宽度,可以是固定宽度px,也可以是浮动宽度fr,fr是grid布局专用单位,代表grid剩余空间 */
/* grid-template-columns: 300px; */
/* 这里有三个数据,就说明grid的分布图为3列形式,这里都相等表示均分剩余空间 */
grid-template-columns: 1fr 1fr 1fr;
/* 使用column-gap属性设置列间距 */
column-gap: 10px;
/* 使用row-gap设置行间距 */
row-gap: 10px;
/* 或者使用gap属性统一设置,一下代码等同于上两行代码 */
gap: 10px;
}
<style> /* 使用grid布局实现三列布局 */ .grid { /* 为grid盒子开启grid布局 */ display: grid; /* 使用grid-template-column 属性指定每列的宽度,可以是固定宽度px,也可以是浮动宽度fr,fr是grid布局专用单位,代表grid剩余空间 */ /* grid-template-columns: 300px; */ /* 这里有三个数据,就说明grid的分布图为3列形式,这里都相等表示均分剩余空间 */ grid-template-columns: 1fr 1fr 1fr; /* 使用column-gap属性设置列间距 */ column-gap: 10px; /* 使用row-gap设置行间距 */ row-gap: 10px; /* 或者使用gap属性统一设置,一下代码等同于上两行代码 */ gap: 10px; } .grid div { /* width: 33vw; */ height: 70px; background-color: skyblue; border: 1px solid black; } .grid1 { margin-top: 50px; display: grid; /* 排列元素我们可以使用grid-template-areas属性,注意这里是设置了三行表格,并且每列用3分进行分布的 */ grid-template-areas: "header header header" "sidebar content content" "footer footer footer" } header { /* 命名此空间为header */ grid-area: header; background-color: skyblue; height: 60px; } aside { grid-area: sidebar; background-color: red; height: 60px; } main { grid-area: content; background-color: blue; height: 60px; } footer { grid-area: footer; background-color: green; height: 60px; } </style>
grid布局的对齐方式和flex布局对齐方式类似,有水平方向的行轴和垂直方向的块轴。
在垂直方向上对齐子元素(对网格中的元素)是使用align-items:
.grid {
display: grid;
align-items: center|end //沿垂直轴居中、靠下对齐
}
在水平方向上对齐子元素是使用justify-items:
.grid {
display: grid;
justify-items: center|end|space-between //居中、靠右、两段对齐
}
当行轨道和列轨道(整体网格)小于grid容器时,还可以对轨道进行对齐:
.grid {
display: grid;
align-content: center|end; //在垂直方向上使用align-content设置对其方式:
justify-content: center|end|between //在水平方向使用justify-content设置对其方式
}
完整代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <style> /* 使用flex布局实现三列排布 */ /* 使用grid布局实现三列布局 */ .grid { /* 为grid盒子开启grid布局 */ display: grid; /* 使用grid-template-column 属性指定每列的宽度,可以是固定宽度px,也可以是浮动宽度fr,fr是grid布局专用单位,代表grid剩余空间 */ /* grid-template-columns: 300px; */ /* 这里有三个数据,就说明grid的分布图为3列形式,这里都相等表示均分剩余空间 */ grid-template-columns: 1fr 1fr 1fr; /* 使用column-gap属性设置列间距 */ column-gap: 10px; /* 使用row-gap设置行间距 */ row-gap: 10px; /* 或者使用gap属性统一设置,一下代码等同于上两行代码 */ gap: 10px; } .grid div { /* width: 33vw; */ height: 70px; background-color: skyblue; border: 1px solid black; } .grid1 { width: 100vw; height: 100vh; border: 1px solid black; margin-top: 50px; display: grid; /* 排列元素我们可以使用grid-template-areas属性,注意这里是设置了三行表格,并且每列用3分进行分布的 */ grid-template-areas: "header header header" "sidebar content content" "footer footer footer" } header { /* 命名此空间为header */ grid-area: header; background-color: skyblue; height: 60px; } aside { grid-area: sidebar; background-color: red; height: 60px; } main { grid-area: content; background-color: blue; height: 60px; } footer { grid-area: footer; background-color: green; height: 60px; } .grid2 { border: 1px solid black; display: grid; grid-template-columns: 300px 300px 300px; gap: 20px; /* 让整个网格居中显示 */ justify-content: center; /* 使表格内部的表格元素居中显示 */ justify-items: center; } .grid2 div { height: 100px; background-color: skyblue; } </style> <body> <div class="grid"> <div class="column1">column1</div> <div class="column2">column2</div> <div class="column3">column3</div> <div class="column4">column4</div> <div class="column5">column5</div> <div class="column6">column6</div> </div> <div class="grid1"> <header>头部</header> <aside>侧边栏</aside> <main>内容</main> <footer>底部</footer> </div> <div class="grid2"> <div class="column1">column1</div> <div class="column2">column2</div> <div class="column3">column3</div> <div class="column4">column4</div> <div class="column5">column5</div> <div class="column6">column6</div> </div> </body> </html>
flex布局:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <style> /* 使用flex布局实现三列排布 */ .grid { display: flex; flex-wrap: wrap; /* box-sizing: border-box; */ width: 100vw; /* height: 100vh; */ } .grid div { width: 33vw; height: 70px; background-color: skyblue; border: 1px solid black; } /* 使用grid布局实现三列布局 */ </style> <body> <div class="grid"> <div class="column1">column1</div> <div class="column2">column2</div> <div class="column3">column3</div> <div class="column4">column4</div> <div class="column5">column5</div> <div class="column6">column6</div> </div> </body> </html>
grid布局实现:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <style> /* 使用flex布局实现三列排布 */ /* 使用grid布局实现三列布局 */ .grid { /* 为grid盒子开启grid布局 */ display: grid; /* 使用grid-template-column 属性指定每列的宽度,可以是固定宽度px,也可以是浮动宽度fr,fr是grid布局专用单位,代表grid剩余空间 */ /* grid-template-columns: 300px; */ /* 这里有三个数据,就说明grid的分布图为3列形式,这里都相等表示均分剩余空间 */ grid-template-columns: 1fr 1fr 1fr; /* 使用column-gap属性设置列间距 */ column-gap: 10px; /* 使用row-gap设置行间距 */ row-gap: 10px; /* 或者使用gap属性统一设置,一下代码等同于上两行代码 */ gap: 10px; } .grid div { /* width: 33vw; */ height: 70px; background-color: skyblue; border: 1px solid black; } </style> <body> <div class="grid"> <div class="column1">column1</div> <div class="column2">column2</div> <div class="column3">column3</div> <div class="column4">column4</div> <div class="column5">column5</div> <div class="column6">column6</div> </div> </body> </html>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。