网格布局

这篇博客探讨了网格布局的优势,详细介绍了其四个关键组成部分:线、轨道、单元格和区域。通过实例展示了如何定义网格容器,如何基于线进行排版,以及如何设置网格间隔、命名网格线和使用区域进行布局。CSS代码示例帮助读者更好地理解和应用网格布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网格布局的优势:可以将页面的视觉顺序与标签的书写顺序进行解耦。
1.网格的四个组成部分
(1)线:线的序号从一开始,可以给线指定名称,以便在CSS代码中引用它们。
(2)轨道:两根线之间的间隔部分。
(3)单元格:单元格为垂直线和水平线之间的交错部分。
(4)区域:一个区域是可以由开发者指定的单元格组成的矩形。可以给指定区域指定姓名。
2.定义网格布局
(1)提供网格容器

.container{
display:grid;
grid-template-rows: 200px 100px; //网格模板,定义两行,第一行高为200px,第二行高100px.
//grid-template-rows: auto  //以内容自动定义行高
grid-template-columns: repeat(4,100px); //定义四列宽度都为100px

(2)以线为基础的排版

grid-row-start: 1;  //使用线的序号排放元素
gird-row-end: 2;

如果继续放置网格项,但不指定它们的排放位置,浏览器会根据内容尺寸来决定轨道大小。

(3)在你的网格布局中的行和列之间添加间隙

grid-gap: 3px;
//单独定义列与列或行与行之间的间隙
grid-column-gap: 1px;
grid-row-gap: 1px;

网格布局引入的单位:fr: 1fr代表可得到空间的1份。

(4)命名网格线

CSS代码:

.container{
    display: grid;
    width: 100%;
    height: 600px;
    grid-gap: 1rem;
    grid-template-columns: //利用以空格分隔的值定义网格的列和行。值的大小代表轨道的大小,并且他们之间的空格表示网格线
    [main-start sidebar-start] 200px
    [sidebar-end content-start] 1fr
    [column3-start] 1fr
    [content-end main-end];
    grid-template-rows: 
    [row1-start] 80px
    [row2-start] 1fr
    [row3-start] 1fr
    [row4-start] 100px
    [row4-end]; 
}
.container div{
    border: 1px solid lightblue;
}
.header{
    grid-column: main-start / main-end;
    grid-row: row1-start / row2-start;
}
.content1{
    grid-column: content-start / content-end;
    grid-row: row2-start / row3-start;
}
.content2{
    grid-column: content-start / column3-start;
    grid-row: row3-start / row4-start;
}
.content3{
    grid-column: column3-start / content-end;
    grid-row: row3-start / row4-start;
}

HTML代码:

 <div class="container">
 	 <div class="header">网页头部</div>
     <div class="sidebar">侧边栏</div>
     <div class="content1">内容1</div>
     <div class="content2">内容2</div>
     <div class="content3">内容3</div>
     <div class="footer">footer</div>
 </div>

(5)使用区域

CSS代码:

.container{
    display: grid;
    grid-template-rows: 100px auto 100px;
    height: 500px;
    grid-template-columns: 100px auto;
    grid-template-areas:
    "header header"
    "sidebar content"
    "footer footer";
}
.header{
    grid-area: header;
}
.sidebar{
    grid-area: sidebar;
}
.content{
    grid-area: content;
}
.footer{
    grid-area: footer;
}
.container div{
    border: 1px solid lawngreen;
}

HTML代码:

<div class="container">
 	<div class="header">网页头部</div>
    <div class="sidebar">网页边栏</div>
    <div class="content">网页内容</div>
    <div class="footer">网页脚注</div>
</div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值