使用Grid网格布局的几种页面布局

项目居中布局

实现效果,不管页面大小,项目总是位于页面的中间

<style type="text/css">
			.ex-container {
			/*允许改变元素的宽高*/
				resize: both;
				position: relative;
				overflow: hidden;
				width: 300px;
				height: 300px;
				z-index: 2;
				box-shadow: 0 0 20px -10px #026b79;
				display: grid;
				align-items: center;
				background-color: white;
			}

			.parent {
				height: 100%;
				width: 100%;
				display: grid;
				place-items: center; /*start/end/stretch(左上/右下/拉伸)*/
				/*容器内项目居中显示*/
				background-color: #a9e2ea;
			}

			.box {
				font-size: 2rem;
				padding: 1rem;
				/* display: grid;
				place-items: end; */
				border-radius: 1rem;
				border-style: dashed;
				background-color: #f7c8ab;
				border-color: #feb180;
			}
		</style>
		<!-- 项目居中布局,不管容器的大小,项目总是占据中心点 -->
			<div class="ex-container">
				<div class="parent blue">
					<div class="box coral" contenteditable>
						:)
					</div>
				</div>
			</div>

在这里插入图片描述

2.并列布局

并列布局,就是多个项目并列,如果宽度不够的话,项目会往下排

<style type="text/css">
		.container {
			resize: both;
			position: relative;
			overflow: hidden;
			width: 400px;
			height: 400px;
			z-index: 2;
			box-shadow: 0 0 20px -10px #0000FF;
			display: grid;
			align-items: center;
			background-color: #fff;
		}
		.parent {
			display: flex;
			flex-wrap: wrap;
			justify-content: center;
			width: 100%;
			height: 100%;
		}
		/* flex属性是flex-grow、flex-shrink、flex-basis这三个属性的简写形式。 */
		/* flex-basis:项目的初始宽度。
flex-grow:指定如果有多余宽度,项目是否可以扩大。
flex-shrink:指定如果宽度不足,项目是否可以缩小 */
		.box {
			font-size: 2rem;
			padding: 1rem;
			border-radius: 1rem;
			border-style: dashed;
			background-color: #d4f2c4;
			border: 1px solid #b9dba9;
			margin: 5px;
			flex: 1 1 150px;
			flex: 0 1 150px;
			display: grid;
			place-items: center;
		}
	</style>
	<div class="container">
		<div class="parent">
			<div class="box">1</div>
			<div class="box">2</div>
			<div class="box">3</div>
		</div>
	</div>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.两栏布局

两栏布局,一个边栏,一个主栏,边栏宽度不变,主栏宽度会随着页面宽度而改变

在这里插入图片描述

<style type="text/css">
		.container {
			resize: both;
			position: relative;
			overflow: hidden;
			width: 400px;
			height: 400px;
			z-index: 2;
			box-shadow: 0 0 20px -10px #0000FF;
			display: grid;
			align-items: center;
			background-color: #fff;
		}
		.parent {
			width: 100%;
			height: 100%;
			display: grid;
			/*边栏宽度范围为150px~25%,第而列为剩下宽度*/
			grid-template-columns: minmax(150px, 25%) 1fr ;
		}
		.section{
			font-size: 1.5rem;
			padding: 1rem;
			border-style: dashed;
		}
		.yellow {
			background-color: #fee8b4;
			border: 1px solid #fee8b4;
		}
		.purple {
			background-color: #dfd3e4;
			border: 1px solid #dfd3e4;
		}
	</style>
	<div class="container">
		<div class="parent">
			<div class="section yellow">
				边栏
			</div>
			<div class="section purple">
				主栏
			</div>
		</div>
	</div>
4.三明治布局

即将页面分为页头,主体,尾部
在这里插入图片描述

<style type="text/css">
		.container{
			width: 400px;
			height: 400px;
			overflow: hidden;
			resize: both;
			position: relative;
			z-index: 2;
			box-shadow: 0 0 20px -10px #00FF00;
			display: grid;
			align-items: center;
			background-color: #eee;
		}
		.parent {
			width: 100%;
			height: 100%;
			display: grid;
			grid-template-rows: auto 1fr auto;
		}
		.section {
			font-size: 1.5rem;
			padding: 1rem;
			border-style: solid;
		}
		.blue {
			border: 1px solid #81cfd9;
			background-color: #a9e2ea;
		}
		.coral {
			border: 1px solid #f7c8ab;
			background-color: #feb180;
		}
		.purple {
			border: 1px solid #dfd3e4;
			background-color: #dfd3e4;
		}
	</style>
	<!-- 三明治布局,页面在垂直方向分成三部分:页眉,内容去,页脚 -->
	<div class="container">
		<div class="parent">
			<div class="section blue">Header</div>
			<div class="section coral">Main</div>
			<div class="section purple">Footer</div>
		</div>
	</div>
5.圣杯布局

和三明治布局类似,不过主体部分又区分了三栏

在这里插入图片描述
如下图,将容器分成9个单元格,头和尾部占据了3个单元格,主体的三栏每一栏占据一个单元格
在这里插入图片描述

<style type="text/css">
		.container {
			width: 400px;
			height: 400px;
			resize: both;
			overflow: hidden;
			display: grid;
			align-items: center;
			box-shadow: 0 0 20px -10px #0000FF;
		}
		.parent {
			display: grid;
			/*设置行高*/
			grid-template-rows: auto 1fr auto/ auto 1fr auto;
			width: 400px;
			height: 400px;
		}
		.section {
			font-size: 1.5rem;
			padding: 1rem;
		}
		.pink {
		/*grid-column:设置列的开始的网格线和结束的网格线*/
			grid-column: 1/4;
			background-color: #f5e0e9;
			border: 1px solid #f9bed6;
		}
		.left-side {
			grid-column: 1/2;
			background-color: #a9e2ea;
			border: 1px solid #81cfd9;
		}
		.coral {
			grid-column: 2/3;
			background-color: #f7c8ab;
			border 1px solid #feb180; 
		}
		.right-side {
			/* grid-column:grid-column-start和grid-column-end的合并简写表示开始和结束网格线 */
			grid-column: 3/4;
			background-color: #fee8b4;
			border: 1px solid #fee8b4;
		}
		.green {
			grid-column: 1/4;
			background-color: #d4f2c4;
			border: 1px solid #b9dba9;
		}
	</style>
	<div class="container">
		<div class="parent">
			<div class="section pink">Header</div>
			<div class="section left-side blue">left sideBar</div>
			<div class="section coral">main content</div>
			<div class="right-side yellow section">right sidebar</div>
			<div class="green section">footer</div>
		</div>
	</div>
6. 12跨越网格

12网格布局,如下图,将网格分为12列,每个项目跨越不同的网格,第一个项目跨越12列,

在这里插入图片描述

<style type="text/css">
		.container {
			/* both:允许用户控制元素的宽和高 */
			resize: both;
			width: 400px;
			height: 400px;
			overflow: hidden;
			display: grid;
			align-items: center;
			box-shadow: 0 0 20px -10px #0000FF;
		}
		.parent {
			width: 100%;
			height: 100%;
			display: grid;
			grid-template-columns: repeat(12, 1fr);
		}
		.section {
			display: grid;
			place-items: center;
			text-align: center;
		}
		.span12 {
		/*span:左右边框跨域的网格*/
			grid-column: 1/span 12;
			background-color: #d4f2c4;
		}
		.span6 {
			grid-column: 1/ span 6;
			background-color: #f7c8ab;
		}
		.span4 {
			grid-column: 4/span 4;
			background-color: #a9e2ea;
		}
		.span2 {
			grid-column: 3/ span 2;
			background-color: #fee8b4;
		}
	</style>
	<div class="container">
		<div class="parent">
			<div class="section span12">span12</div>
			<div class="section span6">span6</div>
			<div class="section span4">span4</div>
			<div class="section span2">span2</div>
		</div>
	</div>
7.设置间距

项目之间设置间距

在这里插入图片描述

<style type="text/css">
		.container {
			resize: both;
			width: 400px;
			height: 400px;
			overflow: hidden;
			display: grid;
			align-items: center;
			box-shadow: 0 0 20px -10px #000000;
		}
		.parent {
			width: 100%;
			height: 100%;
			display: grid;
			/* 行间距和列间距的合并简写 grid-gap: <grid-row-gap> <grid-column-gap> */
			grid-gap: 1rem;
			grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
		}
		.box {
			border-radius: 1rem;
			font-size: 2rem;
			padding: 1rem;
			display: grid;
			place-items: center;
		}
		.box1 {
			background-color: #f5e0e9;
		}
		.box2 {
			background-color: #dfd3e4;
		}
		.box3 {
			background-color: #a9e2ea;
		}
		.box4 {
			background-color: #d4f2c4;
		}
	</style>
	<div class="container">
		<div class="parent">
			<div class="box box1">1</div>
			<div class="box box2">2</div>
			<div class="box box3">3</div>
			<div class="box box4">4</div>
		</div>
	</div>
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值