CSS盒子模型

盒子模型解释 

元素在页面中显示成一个小方块,类似一个盒子,CSS盒子模型就是使用现实中盒子来做比喻,帮助我们设置元素对应的样式。盒子模型示意图如下:

把元素叫做盒子,设置对应的样式分别为:盒子的宽度(width)、盒子的高度(height),盒子的边框(border)、盒子的内容和边框之间的间距(padding),盒子与盒子之间的间距(margin)。

盒子的宽度 = witdh + padding左右 + border左右

盒子的高度 = height + padding上下 + border上下

 

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>盒子模型</title>
	<style type="text/css">
		.box{
			width:200px;  /*content宽*/
			height:200px;  /*content高*/
			
			/*border-top-color: #000;  黑色简写
			border-top-width: 10px;
			border-top-style: solid;  实线:solid 虚线:dashed 点线:dotted
			*/
			/*顶部边框*/
			border-top: #000 10px solid;

			/*左边边框*/
			border-left: #000 10px dashed; 
			
			/*右边边框*/
			border-right: #000 10px dotted;
			
			/*底部边框*/
			border-bottom: #000 10px solid;

			/*合并写四个边框*/
			border: #000 10px solid;
			
			/*盒子会变长
			padding-top: 20px; 
			padding-left: 40px;
			padding-right: 80px;
			padding-bottom: 100px;
			*/
			
			padding: 40px;  /*四个边的padding值*/
			
			/*
				分别设置盒子的 上边  右边 下边 左边的padding值
				padding: 20px 80px 100px 40px;

				分别设置盒子的 上边  左右 下边 的padding值
				padding: 20px 80px 100p;

				分别设置盒子的 上下边  左右 的padding值
				padding: 20px 80px;

				分别设置盒子的 上下左右 的padding值
				padding: 20px;
			*/ 
		
			/*
			margin-top: 100px;
			margin-left: 100px;
			*/
			margin: 100px 0 0 100px;




			background-color: gold;

		}

	</style>
</head>
<body>
	<div class="box">把元素叫做盒子,设置对应的样式分别为:盒子的宽度(width)、盒子的高度(height),盒子的边框(border)、盒子的内容和边框之间的间距(padding),盒子与盒子之间的间距(margin)</div>  <!--快捷键:.box-->

</body>
</html>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>盒子模型</title>
	<style type="text/css">
		.box01{
			width:380px;
			height:35px;
			font:bold 20px 'Microsoft Yahei';
			color: #333;

			border-top: 1px solid #f00;
			border-bottom:3px solid #666;
			padding-top: 15px;
			padding-left: 20px;
			line-height: 20px;
		}

		.box02{
			width:380px;
			height:35px;
			font:bold 20px 'Microsoft Yahei';
			color: #333;

			border-top: 1px solid #f00;
			border-bottom:3px solid #666;
			padding-top: 15px;
			/*padding-left: 20px;*/
			/*line-height: 20px;*/
			line-height: 50px;  /*等于高度 = 垂直居中*/
			text-align: 20px  /*首行缩进*/
		}

	</style>
</head>
<body>
	<h3 class="box01"> 新闻列表</h3>
	<br/>
	<h3 class="box02"></h3>

</body>
</html>

Margin使用技巧

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css"> 
		.box01{
			width: 200px;
			height: 200px ;
			background-color: gold;
			/*margin: 50px auto 100px auto;*/
			margin: 50px auto 100px;
		}



		body{
			margin: 0;  /*body本身带有8px的边框*/
		}

		.box02{
			width: 202px;
			height: 156px ;
			background-color: pink;
			/*margin-left: -50px; 缩小50px*/
			margin:50px auto 100px;

		}

		.box02 div{
			width: 200px;
			height: 30px;
			border: 1px solid green;
			/*border-bottom: 0px;  上下单元格有两条线*/
			background-color: gold;
			margin-top: -1px  /*上单元格叠一个像素*/
		}
		
		/*
		.box02 .last{
			border-bottom: 1px solid green;
		}
		*/

	</style>
</head>
<body>
	<div class="box01"></div>
	<div class="box02">
		<div></div>
		<div></div>
		<div></div>
		<div></div>
		<div class="last"></div>
	</div>
</body>
</html>

垂直外边距合并(左右不会合并)

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css"> 
		.box01,.box02{
			width: 200px;
			height: 200px;
			background-color: gold;
		}

		.box01{
			margin-bottom: 30px;
		}

		.box02{
			margin-top: 0px;
		}

	</style>
</head>
<body>
	<div class="box01">外边距合并</div>
	<div class="box02">外边距合并</div>
</body>
</html>

解决方法:

1、使用这种特性
2、设置一遍的外边距,一般设置margin-top
3、将元素浮动或者定位

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css"> 
		.box{
			width: 500px;
			border: 1px solid #000;
			margin: 50px auto 0;
		}

		.box div{
			/*
			margin-left: 20px;
			margin-right: 20px;
			margin-top: 20px;
			margin-bottom: 20px;  margin上下取最大值
			*/
			margin: 20px;
		}

	</style>
</head>
<body>
	<div class="box">
		<div>外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者
		</div>
		<div>外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者
		</div>
		<div>外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者
		</div>
		<div>外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者
		</div>
	</div>
</body>
</html>

margin-top的塌陷

在两个盒子嵌套的时候,内部的盒子设置的margin-top会加到外边的盒子上,导致内部的盒子margin-top设置失败,解决办法如下:

1、外部盒子设置一个边框

border: 1px solid #000;

2、外部盒子设置(缺点:元素溢出时会裁剪掉)

overflow: hidden;

3、使用伪元素类

.clearfix:before{
			content: "";
			display: table;
		}
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">

		.clearfix:before{
			content: "";
			display: table;
		}  /*第三种解决塌陷的方法类似于第一种方法*/
		
		.con{
			width: 300px;
			height: 300px;
			background-color: gold;
			/*border: 1px solid #000; 第一种解决塌陷的方法*/
			/*overflow: hidden;  第二种解决塌陷的方法*/

		}	
		
		.box{
			width: 200px;
			height: 100px;
			background-color: green;
			margin-top: 100px;  /*margin塌陷*/
			margin-left: 50px
		}



	</style>
</head>
<body>
	<div class="con clearfix">
		<div class="box">
			
		</div>
	</div>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值