组队大项目零基础学习(十)——css学习笔记(五)grid布局 | 青训营笔记

141 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第九天

1. grid布局应用场景

grid布局是二维布局,即同时考虑行和列

相对于flex布局更加的适合网页布局,flex有时更适合移动端

2. grid布局语法

1. grid容器

  • grid容器设置

display:grid 设置容器

  • 单元格的设置

grid-template-columns 属性设置列数和宽

grid-template-rows 属性设置行数和宽

这里可以用 px 单位,也可以用 fr 将余下空间按比例划分

  • 设置grid项目在单元格中的排列顺序

grid-auto-flow

colunmrow两个属性值,分别用于改变纵向和横向排列元素

  • 设置grid项目单元格中对齐方式

justify-items设置单元水平位置

align-items设置单元垂直位置

默认的情况下,grid容器单元格内的块元素(grid项目)会适应单元格的宽度和高度,设置justify-items后,单元格内的元素会适应自身内容的宽度,设置align-items后,单元格内的元素会使用内容的高度。

startcenterendstretch四个属性值控制内容在单元格中位置,默认第四个延伸,即单元格铺满且内容为start位置,设置为前三个单元格会按照内容大小压缩。

将justify-items和align-items两个属性设置为center,可以将单元格内的内容垂直水平居中显示。

  • 设置单元格grid容器中对齐方式

justify-content控制内容的水平位置

aling-content控制内容的垂直位置

  • 溢出单元格大小设置

grid-auto-columns

grid-auto-rows

2. grid项目

  • 合并单元格

grid-column-start水平起始线

grid-colunm-end水平结束线

grid-column简化写法,start + / + end

下面是定义垂直

grid-row-start

grid-row-end

grid-row

默认两条线相邻

更改了单个grid项目所占线之后,其他项目按照原有顺序排列

  • 更改单个grid项目在单元格的位置

justify-self

align-self

一个简单布局案例

 <!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>
     <style>
         *{
             margin: 0px;
             padding: 0px;
         }
         .container{
             display: grid;
             width: 800px;
             margin: 0 auto;
             border: 1px solid blue;
             grid-template-columns: 600px 200px;
             grid-template-rows: 80px 200px 200px 200px 50px;
         }
         .item{
             border: 1px solid red;
         }
         .header{
             grid-column: 1 / 3;
         }
         .aside{
             grid-column:2 / 3;
             grid-row: 2 / 5;
         }
         .footer{
             grid-column:1 / 3;
         }
     </style>
 </head>
 <body>
     <div class="container">
         <div class="item header">logo</div>
         <div class="item docs">docs</div>
         <div class="item blogs">blogs</div>
         <div class="item videos">videos</div>
         <div class="item aside">aside</div>
         <div class="item footer">footer</div>
     </div>
 </body>
 </html>

\