CSS栅格布局的理解

介绍:CSS的栅格布局也被称为网格布局(Grid Layout),它是用来同时处理行和列,栅格系统也是由栅格容器包裹栅格元素进行使用。

基本思想:将一块区域绘制成格子,然后将元素填进去即可。(先规划出容器,再放入元素)

栅格容器:使用display: grid或者display: inline-gid声明一个元素为栅格容器。

grid:块级栅格容器,独占一行
inline-grid:内联块级栅格容器,不独占一行

1.首先声明grid,即块级栅格容器,可以看见容器本身是独占一行的:
CSS栅格布局的理解_第1张图片
2.其次是inline-grid,即内联块级栅格容器,容器本身不会独占一行:
CSS栅格布局的理解_第2张图片
这里是我的布局:

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>Documenttitle>
    <link rel="stylesheet" href="#">
    <style>
        main {
            border: solid 5px silver;
            /* 声明容器 */
            display: inline-grid;
            /*
            display: grid;
            display: inline-grid;
            */


            /* 划分行列 */
            grid-template-rows: repeat(3, 100px);
            grid-template-columns: repeat(3, 100px);
        }

        main div {
            background: blueviolet content-box;
            padding: 10px;
            border: 1px #000 dashed;
            text-align: center;
            line-height: 80px;
            color: #fff;
        }
    style>
head>

<body>
<main>
    <div>1div>
    <div>2div>
    <div>3div>
    <div>4div>
    <div>5div>
    <div>6div>
    <div>7div>
    <div>8div>
    <div>9div>
main>
<span>这是一个栅格划分htmlspan>
body>

html>

CSS栅格布局的理解_第3张图片

划分区域

display: grid;
grid-template-rows: 100px 100px 100px;
grid-template-columns: 100px 100px 100px;

grid-template-rows: repeat(3, 100px); // 3 个 100px

grid-template-rows: repeat(3, 100px 50px); // 100px 50px 交替出现

grid-template-rows: repeat(auto-fill, 100px); // 按照100px, 进行划分填充

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

grid-template-columns: 20% 20%;

间隙

row-gap: 10px; // 行间距10px
column-gap: 10px; // 列间距10px

gap: 20px 10px; // 控制行和列之间的间隙, 前行后列

线控制元素位置


grid-row-start: 1;
grid-column-start: 1;
grid-row-end: 2;
grid-row-end: 4;

给线取名

grid-template-rows: [r1-start] 100px [r1-end r2-start] 100px [r2-end];



div:first-child {
  grid-row-start: r1-start;
  grid-column-start: c1-start;
  grid-row-end: r1-end;
  grid-column-end: c1-end;
}


grid-template-rows: repeat(3, [r-start] 1fr [r-end]);
grid-template-columns: repeat(3, [c-start] 1fr [c-end]);

div {
  grid-row-start: r-start 1;
  grid-column-start: c-start 1;
}

定义跨度


.col-7 {
  grid-column-end: span 7;
}

通过区域控制位置

div:first-child {
  grid-area: 1/1/4/4; // 开始行/开始列/结束行/结束列
}

给区域取别名,名字相同的自动合并为一个

.contain {
  grid-template-areas: "header header"
    "nav main"
    "footer footer";
}



header {
  grid-area: header;
}

区域命名简写


.con {
  grid-template-areas: ". ."
    ". ."
    "footer footer";
}

对齐方式

.item {
  justify-items: center;
  align-items: end;
  
  place-items: center end;

  justify-content: space-evenly;
  align-content: center;
  
  place-content: center space-evenly;
}

div:nth-child(4) {
  justify-self: start;
  align-self: center;
  
  place-self: center start;

}

你可能感兴趣的:(css,前端,javascript)