CSS布局-grid布局与-响应式布局

容器属性(Container Properties):

display: 指定网格容器的显示类型,可以设置为 grid 或 inline-grid。
grid-template-rows: 定义网格的行大小,可以使用长度单位(如像素)或百分比,也可以使用自动调整的关键字(如 fr)。
grid-template-columns: 定义网格的列大小,使用方式同上。
grid-template-areas: 使用命名的网格区域来定义网格布局,通过指定区域名称来安排网格项的位置。
grid-template: 缩写形式,同时定义 grid-template-rows、grid-template-columns 和 grid-template-areas。
grid-row-gap: 定义网格行之间的间距。
grid-column-gap: 定义网格列之间的间距。
grid-gap: 缩写形式,同时定义 grid-row-gap 和 grid-column-gap

项目属性(Item Properties):

grid-row-start: 定义项目开始的行位置。
grid-row-end: 定义项目结束的行位置。
grid-column-start: 定义项目开始的列位置。
grid-column-end: 定义项目结束的列位置。
grid-row: 缩写形式,同时定义 grid-row-start 和 grid-row-end。
grid-column: 缩写形式,同时定义 grid-column-start 和 grid-column-end。
grid-area: 定义项目的网格区域,缩写形式,同时定义 grid-row-start、grid-column-start、grid-row-end 和 grid-column-end。
justify-self: 定义项目在单元格内的水平对齐方式。
align-self: 定义项目在单元格内的垂直对齐方式。
place-self: 缩写形式,同时定义 justify-self 和 align-self。

网格行和列属性(Grid Line and Track Properties):

grid-auto-rows: 定义自动生成的网格行的大小。
grid-auto-columns: 定义自动生成的网格列的大小。
grid-auto-flow: 控制自动生成的项目如何填充网格,可以设置为 row、column 或 dense。

当涉及到CSS Grid布局的完整代码时,需要提供HTML和CSS两个部分。以下是一个示例,展示了如何使用CSS Grid布局创建一个简单的网格化布局

HTML部分代码:

123456

CSS部分代码: 

.container{display: grid;							/* 启用grid布局 */grid-template-columns:repeat(3,1fr);	/* 创建三列,每列宽度相等 */grid-gap: 10px;							/* 设置行列之间的距离 */
}
.container .item{background-color: #ccc;padding: 20px;text-align: center;
}

 以下是代码样式:

 

以下是一个:容器总宽度为600px,第一列和第三列宽为100px,并让浏览器将剩余的400px 分配给第二列:

HTML代码:

第一列第二列第三列

 CSS代码:

.container{display: grid;							/* 启用grid布局 */grid-template-columns:100px auto 100px;	/* 第一列和第三列宽度为100px,剩余的空间自动分配给第二列 */grid-gap: 10px;							/* 设置行列之间的距离 */width:600px;							/* 容器总宽度为600px */	
}
.container .item{background-color: #ccc;padding: 20px;text-align: center;
}

以下是代码样式: 

 

以下是一个示例:"Header-Sidebar-Content-Footer" 布局。它由一个顶部导航栏(Header)、一个侧边栏(Sidebar)、一个内容区域(Content)和一个底部区域(Footer)组成:

HTML代码:

HeaderSidebarContentFooter

CSS代码:

/* 定义网格容器样式 */
.container {display: grid;						   /* 启用grid布局 */grid-template-columns: 200px 1fr; 	  /* 定义两列,第一列宽度为200px,第二列自动分配剩余空间 */grid-template-rows: auto 1fr auto; 	 /* 定义三行,第一行和第三行根据内容自动调整高度,第二行自动分配剩余空间 */gap: 10px; 							/* 设置行列之间的间距 */height: 100vh; 					   /* 设置容器的高度为视口高度 */
}/* 定义网格项的共同样式 */
.item {padding: 20px;text-align: center;
}/* 定义网格项为头部 */
.header {grid-column: 1 / span 2; 					/* 头部跨越两列 */background-color: #f1c40f; 				/* 设置背景颜色为黄色 */
}/* 定义网格项为侧边栏 */
.sidebar {grid-row: 2 / span 2; 					/* 侧边栏跨越两行 */background-color: #3498db; 				/* 设置背景颜色为蓝色 */
}/* 定义网格项为内容 */
.content {grid-column: 2; /* 内容位于第二列 */background-color: #bf40bf; 				/* 设置背景颜色为紫色 */
}/* 定义网格项为页脚 */
.footer {grid-column: 1 / span 2;					/* 页脚跨越两列 */background-color: #e74c3c; 			   /* 设置背景颜色为红色 */
}

以下是代码样式:

以下是一个:多列网格布局(Multi-column grid layout)。使用CSS Grid布局来创建具有多个列和行的网格结构,使网页的布局更加灵活和响应式。在这个布局中,我们定义了网格容器和多个网格项,并使用grid-template-columns和grid-template-rows属性来定义列和行的大小和分布。通过使用这种布局,我们可以轻松地将页面分割成不同的区域,并自定义每个区域的宽度、高度和位置。 

HTML代码:

 HeaderSidebarMain ContentFooterExtra ContentResponsive Content

 CSS代码:

/* 定义网格容器样式 */
.container {display: grid;						  /* 启用grid布局 */grid-template-columns: 1fr 200px 2fr;  /* 定义3列,第一列和第三列按比例分配剩余空间,第二列固定宽度为200px */grid-template-rows: auto 1fr auto; 	/* 定义三行,第一行和第三行根据内容自动调整高度,第二行自动分配剩余空间 */gap: 20px; 						   /* 设置行列之间的间距 */height: 100vh;					  /* 设置容器的高度为视口高度 */
}/* 定义网格项的共同样式 */
.item {padding: 20px;text-align: center;color: white; 					/* 设置文字颜色为白色 */
}/* 定义网格项为头部 */
.header {grid-column: 1 / span 3; 			/* 头部跨越所有3列 */background-color: #2c3e50;	   /* 设置背景颜色为深蓝色 */
}/* 定义网格项为侧边栏 */
.sidebar {background-color: #34495e; 	/* 设置背景颜色为浅蓝色 */
}/* 定义网格项为主要内容 */
.main-content {grid-column: 1 / span 2; 		 /* 主要内容占据2列 */background-color: #2980b9; 	/* 设置背景颜色为亮蓝色 */
}/* 定义网格项为页脚 */
.footer {grid-column: 1 / span 3;		 /* 页脚跨越所有3列 */background-color: #e74c3c; 	/* 设置背景颜色为红色 */
}/* 定义网格项为额外内容 */
.extra {grid-column: 2; 				/* 额外内容位于第2列 */grid-row: 2;				   /* 额外内容位于第2行 */background-color: #9b59b6;  /* 设置背景颜色为紫色 */
}/* 定义网格项为响应式内容 */
.responsive {grid-column: 1 / span 3; 			/* 响应式内容跨越所有3列 */grid-row: 3; 					   /* 响应式内容位于第3行 */background-color: #c0392b; 	  /* 设置背景颜色为深红色 */
}/* 响应式布局:在较小的屏幕上,调整网格项的布局 */
@media screen and (max-width: 768px) {/* 重置网格容器样式 */.container {grid-template-columns: 1fr; 					/* 在较小的屏幕上,只显示一列 */grid-template-rows: auto auto auto auto; 	   /* 调整网格行数,让所有网格项都显示 */}/* 调整头部样式 */.header {grid-column: 1 / span 1; 						 /* 头部跨越1列 */}/* 调整侧边栏样式 */.sidebar {grid-column: 1 / span 1;					    /* 侧边栏跨越1列 */}/* 调整主要内容样式 */.main-content {grid-column: 1 / span 1; 						/* 主要内容跨越1列 */}/* 调整页脚样式 */.footer {grid-column: 1 / span 1;						 /* 页脚跨越1列 */}/* 调整额外内容样式 */.extra {grid-column: 1 / span 1; 						/* 额外内容跨越1列 */grid-row: 4; 								   /* 额外内容位于第4行 */}/* 调整响应式内容样式 */.responsive {grid-column: 1 / span 1; 						/* 响应式内容跨越1列 */grid-row: 5; 								   /* 响应式内容位于第5行 */}
}

PC端样式图:

响应式布局样式图:

 

以下是grid布局响应式布局的讲解和一个示例:

当使用CSS Grid布局实现响应式设计时,我们可以利用媒体查询(Media Queries)来根据不同的屏幕尺寸和设备特性,调整网格布局的结构和样式。通过使用媒体查询,我们可以针对特定的屏幕宽度范围或设备类型,修改网格容器和网格项的属性,从而实现响应式布局

当屏幕宽度小于等于768px时,媒体查询 @media screen and (max-width: 768px) 生效。我们将网格容器的列数修改为两列,使其在较小的屏幕上呈现为两列布局。
当屏幕宽度小于等于480px时,媒体查询 @media screen and (max-width: 480px) 生效。我们将网格容器的列数修改为一列,使其在更小的屏幕上呈现为单列布局。
通过这种方式,我们可以根据不同的屏幕尺寸,灵活地调整网格布局的结构,以适应不同的设备并提供最佳的用户体验。您可以根据实际需求和设计要求,使用媒体查询来自定义响应式网格布局的样式。 

 以下面是一个示例,演示如何在不同屏幕尺寸下调整网格布局:

HTML代码:

Item 1Item 2Item 3Item 4Item 5Item 6

CSS代码: 

/* 定义网格容器 */
.container {display: grid; 								/* 启用grid布局 */grid-template-columns: repeat(3, 1fr); 	   /* 初始情况下有3列,每列平均占据可用空间 */grid-gap: 20px;							  /* 网格项之间的间距 */
}/* 定义网格项 */
.item {padding: 20px; 						 /* 网格项的内边距 */text-align: center; 					/* 文本居中对齐 */
}/* 每个网格项的颜色 */
.item:nth-child(1) {background-color: #ff8080;		 /* 网格项1的背景颜色 */
}.item:nth-child(2) {background-color: #80b3ff; 		/* 网格项2的背景颜色 */
}.item:nth-child(3) {background-color: #b3ff80;		 /* 网格项3的背景颜色 */
}.item:nth-child(4) {background-color: #ffcc80;		 /* 网格项4的背景颜色 */
}.item:nth-child(5) {background-color: #cc80ff;		 /* 网格项5的背景颜色 */
}.item:nth-child(6) {background-color: #80ffd4;		 /* 网格项6的背景颜色 */
}/* 在较小的屏幕上调整布局 */
@media screen and (max-width: 768px) {.container {grid-template-columns: repeat(2, 1fr); 		/* 2列布局 */}
}/* 在更小的屏幕上调整布局 */
@media screen and (max-width: 480px) {.container {grid-template-columns: 1fr; 				/* 单列布局 */}
}

样式图:

 通过这种方式,我们可以根据不同的屏幕尺寸,灵活地调整网格布局的结构,以适应不同的设备并提供最佳的用户体验。您可以根据实际需求和设计要求,使用媒体查询来自定义响应式网格布局的样式。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部