前端必知:34.网格布局认识与探索

目录

一.概述

二. 研究目的

1.了解网格布局的基本原理和概念:

2.探索网格布局的优势和适用性:

3.评估网格布局对用户体验的影响:

4.发展网格布局的最佳实践和指导原则:

三.网格布局的基础知识 

1.网格容器(Grid Container):

2.网格项目(Grid Items):

3.网格线(Grid Lines):

4.网格单元格(Grid Cells):

5.网格轨道(Grid Tracks):

6.网格区域(Grid Areas):

7.网格模板(Grid Template):

8.网格对齐(Grid Alignment):

四.网格布局的特性和功能 

1.自适应布局:

2.灵活的定位:

3.容错能力:

4.嵌套网格:

5.对齐和间距控制:

6.重叠布局:

五.网格布局的基础设置

1.声明网格布局的环境

2.设置列

3.设置行

4.行 列 合写

5.设置列间距

6.设置行间距

7.合写间距

8.指定开始行

9.指定结束行

10.指定开始列

11.指定结束列

相关代码 

 六.网格布局的局限性

兼容性:

学习曲线:

复杂性限制:

七.网格布局案例 

1.效果预览图

2.相关代码


一.概述

        网格布局是一种强大的CSS布局技术,用于将网页划分为行和列的网格结构,并通过定义网格单元格来定位和对齐网页中的元素。这种布局方法可以使开发者以直观且灵活的方式进行网页布局,实现自适应和响应式设计。

二. 研究目的

1.了解网格布局的基本原理和概念:

研究目的之一是深入了解网格布局的原理和概念,包括如何将页面划分为网格系统、如何定义网格的大小和间距以及如何在网格中放置内容等。通过研究,我们可以获得对网格布局的全面理解,为进一步的应用和实践打下基础。

2.探索网格布局的优势和适用性:

网格布局在响应式设计和网页布局中具有许多优势,例如可以实现自适应布局、提高页面的可读性和可导航性等。研究目的之一是探索网格布局的适用场景和优势,了解何时使用网格布局可以产生最佳的效果,并与传统布局方法进行比较。

3.评估网格布局对用户体验的影响:

研究目的之一是评估网格布局对用户体验的影响。通过实验和用户调研,我们可以了解网格布局对用户的理解和使用的影响,包括页面的可用性、可访问性和用户满意度等指标。这些评估结果可以帮助我们更好地优化和改进网格布局设计。

4.发展网格布局的最佳实践和指导原则:

通过研究网格布局,我们可以积累经验并形成一套最佳实践和指导原则,以帮助设计师和开发人员更好地应用网格布局。这些最佳实践可以涉及网格系统的设计、内容排版和响应式调整等方面,从而提高网页设计的效果和效率。

总体而言,网格布局研究的目的是深入理解网格布局的原理和概念,探索其优势和适用性,并评估其对用户体验的影响,以发展出最佳实践和指导原则,从而推动网页设计领域的发展和创新。

三.网格布局的基础知识 

当涉及网页设计和排版时,网格布局是一种常用的技术,用于将内容和元素组织成可视化网格结构。它通过使用水平和垂直的行和列来划分页面,并将内容放置在这些行和列的交点上。以下是网格布局的基础知识点:

1.网格容器(Grid Container):

网格布局的父元素称为网格容器。通过设置网格容器的 display 属性为 grid 或 inline-grid,可以将其定义为网格布局。

2.网格项目(Grid Items):

网格容器中的子元素称为网格项目。网格项目可以是页面上的任何元素,例如 div、span、img 等。每个网格项目都可以放置在网格的一个单元格中。

3.网格线(Grid Lines):

网格线是网格中的水平或垂直线,用于划分网格的行和列。网格线可以通过索引值或命名来引用。

4.网格单元格(Grid Cells):

网格单元格是由相邻的四个网格线所围成的矩形区域。一个网格项目可以占据一个或多个网格单元格。

5.网格轨道(Grid Tracks):

网格轨道是相邻网格线之间的空间,可以是行轨道或列轨道。行轨道是水平方向的空间,列轨道是垂直方向的空间。

6.网格区域(Grid Areas):

通过网格模板(Grid Template)定义的网格区域是一个或多个网格单元格的集合。每个网格区域可以分配给一个或多个网格项目。

7.网格模板(Grid Template):

网格模板用于定义网格的行和列的大小和结构。它可以通过使用 repeat()、fr(分数单位)等属性来指定网格的布局。

8.网格对齐(Grid Alignment):

网格对齐定义了网格项目在网格单元格中的位置。通过使用 justify-content、align-content、justify-items、align-items 等属性,可以控制网格项目在行和列上的对齐方式。

四.网格布局的特性和功能 

1.自适应布局:

网格布局使得网页可以自动调整和适应不同屏幕尺寸和设备,从而实现响应式设计。通过定义网格的列数、行高、项目大小等属性,可以以一种灵活的方式布局和排列内容。

2.灵活的定位:

可以精确控制网格项目在网格单元格中的位置。通过指定项目所占据的行数、列数以及项目在网格单元格内的起始和结束位置,可以实现精确的定位。

3.容错能力:

网格布局具有容错性,即使某项目的尺寸不同,也可以在网格中自动调整和对齐。这种灵活性使得网格布局适用于各种内容和元素的组合。些

4.嵌套网格:

网格布局可以嵌套,也就是说,网格项目本身也可以是一个网格容器,从而实现更复杂的布局结构。嵌套网格可以在一个网格区域内创建更细粒度的布局。

5.对齐和间距控制:

通过网格布局,可以很容易地控制网格项目在网格单元格内的对齐方式,并添加间距和空白空间来提升页面布局的美观性和可读性。

6.重叠布局:

利用网格布局的层叠性质,可以将元素重叠在彼此之上,从而实现各种创意的布局效果。

五.网格布局的基础设置

1.声明网格布局的环境

display: grid; (最常用)

        display:inline-grid 

2.设置列

   grid-template-columns

             值是 fr , 1fr 就代表一个比例划分有几列就可以设置几个fr

             每一个fr所占据的 宽度比例为1fr,如果需要设置其他比例的宽度

             则可以设置整倍fr

             grid-template-columns:1fr 2fr 3fr;

             设置了当前网格为三列,第一列的宽度为1fr,第二列的宽度是第一列

             的2倍,第三列宽度是第一列的3倍

             有几个fr值就有几列

             还可以直接设置 具体宽度

             grid-template-columns:100px 100px 200px;

             也可以设置宽度加+auto  auto 是除了具体宽度之外的 自适应宽度

             (auto实质上是一个宽度值 auto的宽度=总宽度-具体设置的宽度)

             也可以 宽度 + fr 组合

3.设置行

grid-template-rows

              值是行高,有几个值就设置几个行高

              grid-template-rows:100px 200px 300px;

              以上案例的含义是,设置了三行,第一行行高是 100px,第二行行高

              是200px,第三行行高是300px

              如果总行高小于父级wp的宽高,则父级剩余的高度会被剩余的子元素平分

4.行 列 合写

grid-template:行 / 列;

grid-template:100px 100px 100px/1fr 1fr 1fr;

5.设置列间距

column-gap:具体数值

6.设置行间距

  row-gap:具体数值

7.合写间距

gap:行(row) 列(column);

8.指定开始行

grid-row-start:1; 从第一行开始跨行

9.指定结束行

grid-row-end:span 3; 到第三行结束

10.指定开始列

grid-column-start:1; 从第一行开始跨行

11.指定结束列

grid-column-end:span 3; 到第三行结束

相关代码 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网格布局</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .wp{
            /* 创建网格布局 */
            display: grid;
            width: 600px;
            height: 400px;
            margin: 20px auto;
            border: 1px #f00 solid;
            /* 设置列 */
            /* grid-template-columns:1fr 1fr 1fr; */
            grid-template-columns:100px 100px 1fr 4fr;
            /* 设置行 */
            grid-template-rows:100px 100px  auto;

            /* 行列合写 */
            grid-template: auto auto auto/1fr 1fr 1fr;

            /* 列间距 */
            column-gap: 20px;
            /* 行间距 */
            row-gap: 20px;
            /* 合写间距 */
            gap: 40px 20px;

            
        }
        .wp div{
            border: 1px #f00 solid;
           
            
        }
        /* .row-s{
           grid-row-start: 1;
        } */
        .row-span{
            grid-row-start: 1;
           grid-row-end:span 3;
        }
        .col-span{
            grid-column-start: 1;
           grid-column-end:span 3;
        }
    </style>
</head>
<body>
    <!-- 
        网格布局,是css3新出的一种布局方式,常见的适用案例为 九宫格布局
       

        声明网格布局的环境
        display: grid; (最常用)
        display:inline-grid
        
        设置列
         grid-template-columns
             值是 fr , 1fr 就代表一个比例划分有几列就可以设置几个fr
             每一个fr所占据的 宽度比例为1fr,如果需要设置其他比例的宽度
             则可以设置整倍fr
             grid-template-columns:1fr 2fr 3fr;
             设置了当前网格为三列,第一列的宽度为1fr,第二列的宽度是第一列
             的2倍,第三列宽度是第一列的3倍
             有几个fr值就有几列

             还可以直接设置 具体宽度 
             grid-template-columns:100px 100px 200px;
             也可以设置宽度加+auto  auto 是除了具体宽度之外的 自适应宽度
             (auto实质上是一个宽度值 auto的宽度=总宽度-具体设置的宽度)

             也可以 宽度 + fr 组合

        设置行
        grid-template-rows
              值是行高,有几个值就设置几个行高
              grid-template-rows:100px 200px 300px;
              以上案例的含义是,设置了三行,第一行行高是 100px,第二行行高
              是200px,第三行行高是300px
              如果总行高小于父级wp的宽高,则父级剩余的高度会被剩余的子元素平分

        行 列 合写
          grid-template:行 / 列;
          grid-template:100px 100px 100px/1fr 1fr 1fr;

        设置列间距
            column-gap:具体数值

        设置行间距
            row-gap:具体数值

        合写间距
            gap:行(row) 列(column);

        指定开始行
        grid-row-start:1; 从第一行开始跨行
        指定结束行
        grid-row-end:span 3; 到第三行结束

        指定开始列
        grid-column-start:1; 从第一行开始跨行
        指定结束列
        grid-column-end:span 3; 到第三行结束
     -->
    <div class="wp">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div class="row-span">5</div>
        <div>6</div>
        <div>7</div>
        <div  class="col-span">8</div>
        <div class="col-span">9</div>
    </div>
</body>
</html>

 六.网格布局的局限性

兼容性:

尽管现代浏览器对网格布局有很好的支持,但一些旧版本的浏览器可能不支持网格布局的某些功能。为了确保广泛的兼容性,设计师可能需要提供替代的布局方案或进行降级处理。

学习曲线:

相对于传统的布局技术,如浮动和定位,网格布局可能需要一些时间和学习成本才能掌握。设计师需要熟悉网格属性和规则,并理解它们在不同情况下的工作原理。

复杂性限制:

尽管网格布局可以实现复杂的页面结构,但在某些情况下,特定的布局需求可能难以通过网格布局来实现。在这种情况下,设计师可能需要结合其他布局技术或使用自定义CSS代码来满足特定的需求。

七.网格布局案例 

1.效果预览图

网格布局案例

2.相关代码

<!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>
        *{
            margin: 0;
            padding: 0;
        }
        .wp{
            width: 80vw;
            height: 80vh;
            display: grid;
            margin: 20px auto;
            grid-template: auto auto auto auto auto/1fr 1fr 1fr 1fr 1fr;
        }
        .wp div{
            text-align: center;
        }
        img{
            width: 80%;
            height: 80%;
        }
    </style>
</head>
<body>
    <div class="wp">
        <div><img src="../img(4)/img/TB12iJnQV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1EnOXQV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1FmxFQV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1GBxKQV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1JomaQV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1kZRHQV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1OalFQV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1oCR6QV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1UeN.QV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1XhNOQV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1xQKXQV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1XYlAQV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1ylFIQV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1oCR6QV-160-160.png" alt=""></div>
        <div><img src="../img(4)/img/TB1oCR6QV-160-160.png" alt=""></div>
    </div>
</body>
</html>

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小姚学前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值