【JavaWeb】——grid布局

目录

1.grid布局的含义

2.grid布局中的基础概念

3.grid布局中的容器属性

 3.1 容器触发网格

 3.2 设置行列

(1)初数值

 (2)百分比

 (3)以 fr 为单位的数据(作为分配可用空间的比例系数)

 (4) repeat() 函数

 (5)自动填充

 (6)minmax(min,max)函数

 (6)auto自动

 3.3 调整间距

 3.4 grid-auto-flow元素排布

3.5 对齐方式

3.5.1 项目位于单元格中的对齐方式

 ​编辑

 3.5.2 网格位于容器中的对齐方式

 ​编辑

 4.grid布局中的项目属性

4.1 合并单元格


1.grid布局的含义

grid布局,也被称为网格布局,是将页面中的父元素划分成一个一个的小格子,然后通过这些小格子进行合并来制作出各种不同的效果。

2.grid布局中的基础概念

grid容器:采用grid布局的父元素

grid内容:显示项目的区域

grid项目:grid布局中每一个格子内部放置的元素

行:横向

列:纵向

网格线:网格布局中的横向和纵向的线条

单元格:横纵线交汇的区域被称为单元格

间距:网格与网格之间的距离

3.grid布局中的容器属性

 3.1 容器触发网格

将某个元素的display属性设置为grid或者incline-grid,那么这个元素就会成为grid父容器,它的子元素将成为grid子元素。

属性说明
grid块网格
incline-grid行内块网格
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            /*开启grid布局*/
            display: grid;
        }
    </style>
</head>
<body>
<span>这是一个span标签</span>
<div class="box"></div>
<span>这是一个span标签</span>
</body>
</html>

效果如下: 

 3.2 设置行列

行属性:grid-template-rows

列属性:grid-template-columns

一共有6种取值方式:

(1)初数值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            /*开启grid布局*/
            display: grid;
            /* 设置行列 */
            /* 3行3列,行高100px,列宽100px */
            grid-template-rows:100px 100px 100px;
            grid-template-columns:100px 100px 100px;
        }
    </style>
</head>
<body>
<span>这是一个span标签</span>
<div class="box"></div>
<span>这是一个span标签</span>
</body>
</html>

效果如下: 

 (2)百分比

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            /*开启grid布局*/
            display: grid;
            /* 设置行列 */
            /* 3行3列*/
            grid-template-rows:20% 30% 50%;/*三行在总高的占比分别是20% 30% 50%*/
            grid-template-columns:20% 20% 60%;/*三列在总宽的占比分别是20% 20% 60%*/
        }
    </style>
</head>
<body>
<span>这是一个span标签</span>
<div class="box"></div>
<span>这是一个span标签</span>
</body>
</html>

效果如下:

 (3)以 fr 为单位的数据(作为分配可用空间的比例系数)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            /*开启grid布局*/
            display: grid;
            /* 设置行列 */
            /* 3行3列*/
            grid-template-rows:1fr 2fr 3fr;/*第一行占1/6,第二行占2/6,第三行占3/6*/
            grid-template-columns:1fr 1fr 1fr;/*第一行占1/3,第二行占1/3,第三行占1/3*/
        }
    </style>
</head>
<body>
<span>这是一个span标签</span>
<div class="box"></div>
<span>这是一个span标签</span>
</body>
</html>

效果如下:

 (4) repeat() 函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            /*开启grid布局*/
            display: grid;
            /* 设置行列 */
            /* 3行3列*/
            grid-template-rows: repeat(3, 100px);/*相当于 grid-template-rows: 100px 100px 100px*/
            grid-template-columns:repeat(3,100px);/*相当于 grid-template-rows: 100px 100px 100px*/
        }
    </style>
</head>
<body>
<span>这是一个span标签</span>
<div class="box"></div>
<span>这是一个span标签</span>
</body>
</html>

效果如下:

(5)自动填充

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            /*开启grid布局*/
            display: grid;
            /* 设置行列 */
            /* 3行3列*/
            grid-template-rows: repeat(3, 100px);/*相当于 grid-template-rows: 100px 100px 100px*/
            grid-template-columns:repeat(auto-fill,30%);
        }
    </style>
</head>
<body>
<span>这是一个span标签</span>
<div class="box"></div>
<span>这是一个span标签</span>
</body>
</html>

效果如下: 

 (6)minmax(min,max)函数

注意:如果条件允许,则一直使用最大值,如果条件不满足则使用中间值,如果剩下的距离不足以显示距离大小,则使用最小值。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            /*开启grid布局*/
            display: grid;
            /* 设置行列 */
            /* 3行3列*/
            grid-template-rows:100px 100px minmax(100px,200px);
            grid-template-columns:repeat(auto-fill,30%);
        }
    </style>
</head>
<body>
<span>这是一个span标签</span>
<div class="box"></div>
<span>这是一个span标签</span>
</body>
</html>

效果如下: 

 (6)auto自动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            /*开启grid布局*/
            display: grid;
            /* 设置行列 */
            /* 3行3列*/
            grid-template-rows:100px auto 100px;
            grid-template-columns:auto 100px 100px;
        }
    </style>
</head>
<body>
<span>这是一个span标签</span>
<div class="box"></div>
<span>这是一个span标签</span>
</body>
</html>

效果如下:

 3.3 调整间距

  • 行间距属性:grid-row-gap
  • 列间距属性:grid-column-gap

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            /*开启grid布局*/
            display: grid;
            /* 设置行列 */
            /* 3行3列*/
            grid-template-rows:100px 100px 100px;
            grid-template-columns:100px 100px 100px;
            grid-row-gap: 10px;
            grid-column-gap: 20px;
        }
    </style>
</head>
<body>
<span>这是一个span标签</span>
<div class="box"></div>
<span>这是一个span标签</span>
</body>
</html>

效果如下: 

  • grid-gap:第一个参数代表行间距,第二个代表列间距 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            /*开启grid布局*/
            display: grid;
            /* 设置行列 */
            /* 3行3列*/
            grid-template-rows:100px 100px 100px;
            grid-template-columns:100px 100px 100px;
            /*间距*/
            grid-gap: 10px 20px;/*相当于grid-row-gap: 10px;grid-column-gap: 20px;*/
        }
    </style>
</head>
<body>
<span>这是一个span标签</span>
<div class="box"></div>
<span>这是一个span标签</span>
</body>
</html>

 3.4 grid-auto-flow元素排布

属性说明

row

默认值,先行后列,在必要时增加新行

column

先列后行,在必要时新增新列

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            margin: 0 auto;
            /* 开启grid布局 */
            display: grid;
            /* 设置行列 */
            grid-template-rows:100px 100px 100px;
            grid-template-columns:100px 100px 100px;
            grid-auto-flow: row;
        }
        .box>div {
            border: 1px dashed red;
        }
    </style>
</head>
<body>
<div class="box">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
    <div>9</div>
</div>
</body>
</html>

效果如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            margin: 0 auto;
            /* 开启grid布局 */
            display: grid;
            /* 设置行列 */
            grid-template-rows:100px 100px 100px;
            grid-template-columns:100px 100px 100px;
            grid-auto-flow: column;
        }
        .box>div {
            border: 1px dashed red;
        }
    </style>
</head>
<body>
<div class="box">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
    <div>9</div>
</div>
</body>
</html>

 效果如下:

3.5 对齐方式

3.5.1 项目位于单元格中的对齐方式

  • justify-items 属性设置单元格内容的水平位置。
  • align-items 属性设置单元格内容的垂直位置。
  • place-items 是两者的复合属性,接收两个参数,第一个是align-items,第二个是justify-items,如果只写一个参数则表示两个属性相同。
属性值说明
start

紧靠单元格起始位置(左或上),默认

end

紧靠单元格结束位置(右或下)

center

居中

stretch

拉伸,默认值,占满整个单元格

/*对齐方式*/
justify-items: start;

 效果如下:

/*对齐方式*/
justify-items: end;

 

 /*对齐方式*/
justify-items: center;

 

/*对齐方式*/
justify-items: stretch;

 

/*对齐方式*/
 align-items: start;

 

/*对齐方式*/
align-items: end;

 

/*对齐方式*/
align-items: center;

 

/*对齐方式*/
align-items: stretch;

 

/*对齐方式*/
place-items: stretch start;/*相当于 align-items: stretch;justify-items: start;*/
           

 3.5.2 网格位于容器中的对齐方式

  • justify-content 属性控制整个内容区域在容器里面的水平位置
  • align-content 属性控制整个内容区域的垂直位置
  • place-content 是两者的复合属性,接收两个参数,第一个是align-content,第二个是justify-content,如果只写一个参数则表示两个属性相同
属性值说明
start

紧靠起始位置(左或上)

end

紧靠结束位置(右或下)

center

居中

stretch

项目大小没有指定时,拉伸占据整个网格容器;

place-around

行或列平均分布,首尾行或列与两端的距离等于行或列间距的一半;

space-between

行或列平均分布,首尾行或列与两端没有间距;

space-evenly

行或列平均分布,首尾行或列与两端的距离等于行或列间距;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            margin: 0 auto;
            /* 开启grid布局 */
            display: grid;
            /* 设置行列 */
            grid-template-rows:100px 100px 100px;
            grid-template-columns:100px 100px 100px;
            /* 网格位于容器中的对齐方式 */
            align-content: start;
        }
        .box>div {
            border: 1px dashed red;
        }
    </style>
</head>
<body>
<div class="box">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
    <div>9</div>
</div>
</body>
</html>

 /* 网格位于容器中的对齐方式 */
align-content: end;

 

/* 网格位于容器中的对齐方式 */
 align-content: center;

 /* 网格位于容器中的对齐方式 */
align-content: stretch;

 

/* 网格位于容器中的对齐方式 */
align-content: space-around;

 

/* 网格位于容器中的对齐方式 */
 align-content: space-between;

/* 网格位于容器中的对齐方式 */
align-content: space-evenly;

 

/* 网格位于容器中的对齐方式 */
place-content: center space-between;/*相当于align-content: center;justify-content: space-between;*/
            

 4.grid布局中的项目属性

4.1 合并单元格

合并单元格是将划分好的网格,通过让元素使用网格线占位的形式,来达到合并的效果。

属性说明

grid-column-start

纵向网格线开始占位

grid-column-end

纵向网格线结束占位

grid-row-start

横向网格线开始占位

grid-row-end

横向网格线结束占位

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            margin: 0 auto;
            /* 开启grid布局 */
            display: grid;
            /* 设置行列 */
            grid-template-rows:repeat(2,100px);
            grid-template-columns:repeat(4,100px);
            grid-gap: 10px 10px;

        }
        .box>div {
            border: 1px dashed red;
            background-color: coral;
        }
        .box1 {
            grid-column-start:1;
            grid-column-end:5
        }
    </style>
</head>
<body>
<div class="box">
    <div class="box1">1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>


</div>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        .box {
            width: 500px;
            height: 500px;
            border: 5px solid gray;
            margin: 0 auto;
            /* 开启grid布局 */
            display: grid;
            /* 设置行列 */
            grid-template-rows:repeat(4,100px);
            grid-template-columns:repeat(4,100px);
            grid-gap: 10px 10px;

        }
        .box>div {
            border: 1px dashed red;
            background-color: coral;
        }
        .box1 {
            grid-column-start:1;
            grid-column-end:3;
            grid-row-start:1;
            grid-row-end:3;
        }
    </style>
</head>
<body>
<div class="box">
    <div class="box1">1</div>
    <div class="box2">2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
    <div>9</div>
</div>
</body>
</html>

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值