11 盒子模型

1 网页布局步骤

网页布局过程:

1 准备好相关的网页元素,网页元素基本都是盒子

2 利用CSS设置好盒子样式,然后摆放在相应的位置上

3 往盒子里面装上内容。

盒子模型定义:就是HTML页面中的布局元素看作矩形盒子,也就是承装内容的容器。

CSS盒子模型本质上是一个盒子,封装周围的HTML元素,它包括:边框、外边距、内边距和实际内容。

边框border:就是边框的粗细。

内边距padding:就是content内容与边框的距离

外边距margin:就是边框与边框之间的距离

1.1 边框border

border:border-width\border-style\border-color

border-style 边框样式

none:无边框

hidden:隐藏边框

dotted:点线

dashed:虚线

solid:实线边框

double:双线边框

groove:根据border-color的值画3D凹槽

ridge:根据border-color的值画菱形边框

inset:根据border-color的值画3D凹边

outset:根据border-color的值画3D凸边

<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>CSS特性</title>
		<style type="text/css">
			div {
				width:100px;
				height: 50px;
				border-width: 20px;
				border-color: red;
				/* 画3d凹边 */
				border-style: inset;
			}
		</style>
	</head>
	<body>
		<div></div>
	</body>


边框的简写

<style type="text/css">
			div {
				width:100px;
				height: 50px;
				/* border-width: 20px;
				border-color: red;
				/* 画3d凹边 */
				/* border-style: inset; */ 
				/* 边框属性的简写,没有先后顺序之分 */
				border:20px red dotted;
			}
		</style>


边框的上下左右边框

<style type="text/css">
			div {
				width:100px;
				height: 50px;
				/* border-width: 20px;
				border-color: red;
				/* 画3d凹边 */
				/* border-style: inset; */ 
				/* 边框属性的简写,没有先后顺序之分 */
				/* border:20px red dotted; */
				/* 边框的上下左右边框都可以调节 */
				border-top: red 20px dotted;
				border-bottom: blue 20px inset;
				border-left: pink 20px dashed;
				border-right: aqua 20px solid;
			}
		</style>


边框粗细合并

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>边框设置</title>
		<style type="text/css">
			table {
				width: 300px;
				height: 30px;
			}
			table,tr,td,th {
				border: red 1px solid;
				/* 表示相邻边框粗细合并 */
				border-collapse: collapse;
				text-align: center;
			}
		</style>
	</head>
	<body>
		<table align="center">
			<tr>
				<th>名称</th>
				<th>热度</th>
				<th>排名</th>
			</tr>
			<tr>
				<td>神雕侠侣</td>
				<td>189</td>
				<td>1</td>
			</tr>
			<tr>
				<td>三国演义</td>
				<td>188</td>
				<td>2</td>
			</tr>
			<tr>
				<td>射雕英雄传</td>
				<td>180</td>
				<td>3</td>
			</tr>
		</table>
	</body>
</html>


内边距:padding-left 左内边距; padding-right 右内边距; padding-top 上边距; padding-bottom 下边距,padding会影响盒子的大小。

值的个数表达意思
padding:5px1个值,代表上下左右都有5像素的内边  距                                                            
padding: 5px  10px;2个值,代表上下内边距是5像素,左右内边距是10像素
padding: 5px   10px   20px;3个值,代表上内边距5像素,左右内边距10像素  下内边距20像素
padding: 5px  10px  20px  30px;4个值,上5,右10,下20,左30顺时针
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>内边距</title>
		<style type="text/css">
			div {
				width: 200px;
				height: 200px;
				background-color: pink;
				padding-left: 30px;
				padding-right: 30px;
			}
		</style>
	</head>
	<body>
		<div id="">
			你好,我是来自M78星云的泰罗奥特曼,专门拯救世界,消灭破坏地球的怪兽
		</div>
	</body>
</html>


导航栏案例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>内边距</title>
		<style type="text/css">
			.nav a {
				text-decoration: none;
				color: #4c4c4c;
				font-size: 12px;
				display: inline-block;
				height: 41px;
				/* 上下内边距为0,左右内边距为20px */
				padding: 0 20px;
			}
			.nav a:hover {
				color:red;
				background-color: #EDEEF0;
			}
			.nav {
				height: 41px;
				/* 上边框为橙色,下边框为白色 */
				border-top: 3px #FF8500 solid;
				border-bottom: 1px #edeef0 solid;
				background-color: #fcfcfc;
				line-height: 41px;
			}
		</style>
	</head>
	<body>
		<div class="nav">
			<a href="#">新浪微博</a>
			<a href="#">搜狐</a>
			<a href="#">新闻网</a>
			<a href="#">手机新浪网</a>
		</div>
	</body>
</html>


外边距:其他属性类似padding

<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>外边距</title>
		<style type="text/css">
			.bottom {
				margin-top: 20px;
			}
			.bottom,.top {
				background-color: #FF0000;
				height: 50px;
				width: 100px;
			}
		</style>
	</head>
	<body>
		<div id="" class="top"></div>
		<div id="" class="bottom"></div>
	</body>


2 外边距典型应用

外边距可以让块级盒子水平居中,但是必须满足两个条件:

1 盒子必须指定了宽度。

2 盒子左右的外边距都设置为auto。

常见的写法:

margin-left:auto; margin-right:auto;

margin:0 auto;

<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>外边距</title>
		<style type="text/css">
			div {
				width: 200px;
				height: 200px;
				margin: 0 auto;
				background-color: #FF0000;
			}
		</style>
	</head>
	<body>
		<div id="">
			
		</div>
	</body>

可以实现div的居中


解决嵌套块的父元素塌陷问题:

1 可以为父元素定义上边框;

2 可以为父元素定义上内边距

3 可以为父元素添加overflow:hidden

<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>外边距</title>
		<style type="text/css">
			#par {
				width: 400px;
				height: 400px;
				background-color: #FF0000;
				margin-top: 50px;
				/* 边框不显示transparent */
				/* border: 1px #FF0000 transparent; */
				overflow: hidden;
			}
			#son {
				width: 200px;
				height: 200px;
				background-color: pink;
				margin-top: 100px;
			}
		</style>
	</head>
	<body>
		<div id="par">
			<div id="son">
				
			</div>
		</div>
	</body>


清除内外边距

网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致,因此我们在布局之前,首先应该清楚网页元素的内外边距

* {

padding:0;    /*清楚内边距*/

margin: 0;     /*清除外边距*、

}

注释:行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距,但是转换为块级和行内块元素就可以。

默认情况下有内外边距,为了让conten靠近左边

<head>
		<meta charset="utf-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>外边距</title>
		<style type="text/css">
			/* 通配符选择器* */
		* {
			margin: 0;
			padding: 0;
		}
		</style>
	</head>
	<body>
		<ol>
			<li>你好</li>
			<li>你也好</li>
			<li>大家好才是真的好</li>
		</ol>
	</body>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值