【前端夯实基础】-grid布局

grid布局

网格布局,顾名思义,方方正正的格子都用它布局

常见属性

网格容器属性:grid,grid-template-columns,grid-auto-rows,gap…

网格子元素属性:grid-row,grid-column,grid-area

属性 解释 人话
grid 更改容器的流布局为网格 容器切换到网格布局模式
grid-template-columns 网格中列的总数量 竖着一共排几列
grid-template-rows 网格中行的总数量 横着一共排几行
grid-auto-rows 预设网格每行的高度 容器的每行多高【未设置总行数时生效】
grid-auto-columns 预设网格每列的宽度 容器的每列多宽【未设置总列数时生效】
grid-template-areas 预设网格每一个子元素位置 手动一个一个排网格项【必须是矩形】
grid-area 网格元素按网格行线设置大小时使用的名字 给网格每个子元素起个名字【配合grid-template-areas用的】
grid-row 网格元素按网格行线设置大小 指定定网格元素具体占几行【类似表格纵向合并】
grid-column 网格元素按网格列线设置大小 指定定网格元素具体占几列【类似表格横向合并】

布局方案

使用grid布局的三个常见场景,掌握以下三个即可掌握grid布局【重要‼️‼️

  • 方正无缺、大小相同:

    直接设置grid-template-columns【见:九宫格方案】

  • 方正无缺、大小不同:

    类似表格合并,设置grid-row、grid-column【见:网格线方案】

  • 不正有缺、大小不同:

    排列无规律,且有缺角。设置grid-template-areas【见:网格区域方案】

常见用法

一、九宫格

    <div class="container">
        <div class="box box1">1</div>
        <div class="box box2">2</div>
        <div class="box box3">3</div>
        <div class="box box4">4</div>
        <div class="box box5">5</div>
        <div class="box box6">6</div>
        <div class="box box4">7</div>
        <div class="box box5">8</div>
        <div class="box box6">9</div>
    </div>

    .box{
        outline: 1px solid #000;
    }
    .container{
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        gap: 20px;
        grid-auto-rows: 100px;
    }

二、三栏布局

  1. 网格线方案
    <div class="container">
        <div class="box box1">1</div>
        <div class="box box2">2</div>
        <div class="box box3">3</div>
    </div>
    .box{
        outline: 1px solid #000;
    }
    .container{
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-template-rows: repeat(10, 50px);
        gap: 20px;
    }
    .box1{
        grid-column: 1 / -1;
    }
    .box2{
        /* 不设置总行数无法使用-1 */
        grid-row: 2 / -1; 
    }
    .box3{
        grid-column: 2 / -1;
        grid-row: 2 / -1;
    }
  1. 网格区域方案
    <div class="container">
        <div class="box box1">1</div>
        <div class="box box2">2</div>
        <div class="box box3">3</div>
    </div>
    .box{
        outline: 1px solid #000;
    }
    .container{
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-template-rows: repeat(3, 150px);
        gap: 20px;
        /* 三行两列 */
        grid-template-areas: 
            'a a a'
            'b c c'
            'b c c'
        ;
    }
    .box1{
        grid-area: a;
    }
    .box2{
        grid-area: b;
    }
    .box3{
        grid-area: c;
    }

详情参考:CSS布局网格

来源链接:https://www.cnblogs.com/yuyunhao/p/19027116

请登录后发表评论

    没有回复内容