IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> css的grid布局 -> 正文阅读

[JavaScript知识库]css的grid布局

css的grid布局

grid布局即网格布局是一种二维布局,可以同时控制行和列的排布和对齐方式,grid布局由水平线和垂直线构成,两条水平线之间的区域叫做行轨道,两条垂直线的区域叫做列轨道。

image-20220215210800799

image-20220215210825763

使用这种布局方式只需要给外层容器(父容器)设置 display: grid; 此时容器的直接子元素就会自动称为grid布局的元素。

.grid {
	display: grid
}

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-template-areas属性的用法:

<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布局的对齐方式

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布局和grid布局实现三列表格布局:

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>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 12:59:54  更:2022-02-16 13:02:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:08:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码