CSS + HTML <网格布局 grid>

2021-04-26 11:21:44 浏览数 (1)

介绍


你可能会问网格布局可以干什么,我这里简单的了解了一下。

发现类似计算器,键盘的排版都是可以用网格布局的,而且在项目开发中的一些商品布局或者文章布局等,也是可以用的。

但是也要看你的熟练度了,我之前多用的是弹性布局 display:flex,了解过网格布局 display:grid 后,发现有些东西用起来还是用后者要方便很多,但是具体也没用过,不敢说有没有一些坑位~~

但是多多益善,知道的多,日后必能派上用场,这里为大家提供一些相关学习网格布局的网站,也可以直接通过我这边代码的注释,直接去理解。

获取源码方式:点击左上方「网罗开发」关注并回复 “210410” 即可获取。

代码如下


代码语言:javascript复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            box-sizing: border-box;
        }

        body {
            min-height: 100vh;
            display: grid;
            /* 1ch 等于一个 0 的宽度 */
            /* 1ch = 1个英文 = 1个数字 */
            /* 2ch = 1个中文 */
            /* auto-fill;
            如果容器大小不固定,项目大小固定,可以用auto-fill关键字自动填充;*/
            /* 列 自动填充列,每列为30个字符宽度 */
            grid-template-columns: repeat(auto-fit, 30ch);
            place-content: center;
            /* 每个网格的间距为 5vh */
            grid-gap: 5vh;
            margin-left: auto;
            margin-right: auto;
            padding: 1rem;
        }

        #template {
            background: #fff;
            padding: 1rem;
            border-radius: 7px;
            box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.13);
            /* height: 25vh; */
            /* 网格布局 */
            display: grid;
            /* grid-gap:20px 20px; */
            /* row-gap和column-gap简写形式;行间距和列间距 */
            grid-gap: 0.5rem;
        }

        .col {
            background-color: #7B86F5;
            border-radius: 4px;
            display: grid;
            place-items: center;
            color: #fff;
            font-size: 1.5rem;
        }

        .template-2col {
            /* 重复写值很麻烦,可以用repeate函数;
         repeat(次数,大小);
         例如:repeat(3,100px); //重复3次,每次100px;
            */
            /* 2列,每列为1等分 */
            grid-template-columns: repeat(2, 1fr);
        }

        .template-3col {
            /* 3列,每列为1等分 */
            grid-template-columns: repeat(3, 1fr);
        }

        .template-4col {
            /* 2行 每行1等分/2列 每列1等分 */
            grid-template: repeat(2, 1fr)/repeat(2, 1fr);
        }

        .template-5col {
            /* 区域划分 2行2列 */
            grid-template: "sidebar mainA""sidebar mainB";
            /* 1列最小为100px最大为1等分  2列为1等分*/
            grid-template-columns: minmax(100px, 1fr) 1fr;
        }

        .template-5col .left {
            overflow: hidden;
            /* 区域划分 left占 sidebar 位*/
            grid-area: sidebar;
        }

        .template-5col .left img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }

        .template-6col {
            grid-template: "mainA sidebar""mainB sidebar";
        }

        .template-6col .right {
            grid-area: sidebar;
        }

        .template-7col {
            /* 3行 每行1等分/3列 每列1等分 */
            grid-template: repeat(3, 1fr)/repeat(3, 1fr);
        }

        .template-8col {
            /* 3行 每行1等分/3列 每列1等分 */
            grid-template: repeat(3, 1fr)/repeat(3, 1fr);
            /* 网格排列方式 默认row:水平排列  column:垂直排列  */
            grid-auto-flow: column;
        }

        .template-9col {
            grid-template: repeat(3, 1fr)/repeat(3, 1fr);
        }

        .template-9col .col:nth-child(1) {
            /* 从第1行和第1列开始,跨越1行3列 */
            grid-area: 1/1/span 1/span 3;
        }
        .template-9col .col:nth-child(3) {
            /* 从第2行和第2列开始,跨越2行2列 */
            grid-area: 2/2/span 2/span 2;
        }
        .template-9col .col:nth-child(5) {
            /* 从第1行和第1列开始,跨越1行3列 */
            grid-area: 4/1/span 2/span 1;
        }
</style>
</head>

<body>
    <div id="template" class="template-1col">
        <div class="col">1</div>
        <div class="col">2</div>
    </div>
    <div id="template" class="template-2col">
        <div class="col">1</div>
        <div class="col">2</div>
    </div>
    <div id="template" class="template-3col">
        <div class="col">1</div>
        <div class="col">2</div>
        <div class="col">3</div>
    </div>
    <div id="template" class="template-4col">
        <div class="col">1</div>
        <div class="col">2</div>
        <div class="col">3</div>
        <div class="col">4</div>
    </div>
    <div id="template" class="template-5col">
        <div class="col left">
            1
            <!-- <img src="./pexels-pixabay-355747.png" alt=""> -->
        </div>
        <div class="col">2</div>
        <div class="col">3</div>
    </div>
    <div id="template" class="template-6col">
        <div class="col right">1</div>
        <div class="col">2</div>
        <div class="col">3</div>
    </div>
    <div id="template" class="template-7col">
        <div class="col">1</div>
        <div class="col">2</div>
        <div class="col">3</div>
        <div class="col">4</div>
        <div class="col">5</div>
        <div class="col">6</div>
        <div class="col">7</div>
        <div class="col">8</div>
        <div class="col">9</div>
    </div>
    <div id="template" class="template-8col">
        <div class="col">1</div>
        <div class="col">2</div>
        <div class="col">3</div>
        <div class="col">4</div>
        <div class="col">5</div>
        <div class="col">6</div>
        <div class="col">7</div>
        <div class="col">8</div>
        <div class="col">9</div>
    </div>
    <div id="template" class="template-9col">
        <div class="col">1</div>
        <div class="col">2</div>
        <div class="col">3</div>
        <div class="col">4</div>
        <div class="col">5</div>
        <div class="col">6</div>
        <div class="col">7</div>
        <div class="col">8</div>
        <div class="col">9</div>
    </div>
</body>

</html>

如果觉得不错,素质三连、或者点个「赞」「在看」都是对笔者莫大的支持,谢谢各位大佬啦~

0 人点赞