WEB前端-css盒子模型

 WEB前端-css盒子模型


 WEB前端-css盒子模型

盒子模型

 盒子模型特性

1.内边距padding

2.外边距margin

3.边框属性

4.盒子模型的bug:

元素的可见性

 伪对象


盒子模型

我们说div就是一个块,它就是一个盒子。其实我们做网页的过程就是摆放盒子的过程

小米官网:www.mi.com

图示:

 盒子模型的组成

示意图

 盒子模型特性

4个组成部分:宽高、内间距、边框、外间距

1.内边距padding

<style>
	div{
		width:100px;
		height:100px;
		background:#f00;
		/* 内填充:设置了内填充,那么就要在对应的宽度或高度上减去填充的距离 */
		/*padding-top:50px;	
		
		padding-left:50px;
		
		padding-right:50px;
		
		padding-bottom:50px;*/
		/* 上下左右:一个值 */
		/*padding:50px;*/
		/* padding有两个值的时候:第一个值代表上下方向的内填充,第二个值代表的是左右两个方向的内填充 */
		/*padding:50px 20px;*/
		/* 三个值的时候,第一个是上方向,第二个值是左右两个方向,第三个值代表的是下方向 */
		/*padding:50px 50px 50px;*/
		
		/*  四个值的时候分别代表上,右,下,左四个方向*/
		padding:10px 20px 30px 40px;
		/* 160  x  140 */
	}	
</style>
<body>
<div>
	明天休息了!
</div>

示意图

注意:

  1. 添加了padding属性的元素,会加大盒子的宽或高,需要减去padding的大小
  2. 如果这个块级盒子没有width属性(从父级继承宽度)的时候,添加padding和border不会撑大盒子(盒子内容部分会自动压缩)

2.外边距margin

<style>
	div{
		width:200px;
		height:200px;
		background:#f00;
		margin:0 auto;/* 让盒子居中 */
		
		/*margin-left:50px;
		margin-top:50px;
		margin-right:50px;
		margin-bottom:50px;*/
		/*margin:10px 20px 30px 40px;*/
	}
</style>
<body>
<div>
	明天休息了!
</div>

示意图

 多学一招:margin:0 auto;可以让盒子在其父元素中居中

margin:0 auto;和text-align:center;的区别

margin:0 auto;text-align:center
针对的对象盒子---块元素(标签本身)标签内部的行元素
居中的范围在父盒子中居中自己内部

3.边框属性

边框有3要素:边框类型、边框颜色、边框厚度

a) 边框类型

语法:border-style:值

取值:

 (1)solid实线

 (2)dashed虚线

 (3)dotted点线

 (4)double双线

示意图

 

<style>
	.one {
		width: 100px;
		border-style: solid;
		color: red;
	}

	.two {
		width: 50%;
		border-style: dashed;
		color: green;
	}

	.three {
		width: 30em;
		border-style: dotted;
		color: blue;
	}

	.three {
		width: 30em;
		border-style: double;
		color: black;
	}
</style>
<body>
	<div class="one">
		实线
	</div>
	<div class="two">
		虚线
	</div>
	<div class="three">
		点线
	</div>
	<div class="four">
		双线
	</div>
</body>

b) 边框颜色

语法:border-color:颜色值

示意图

c) 边框厚度

语法:border-width:尺寸值

示意图

d) 一次性写好

语法:border:类型 颜色 宽度

示意图

<style>
	.one {
		width: 300px;
		height: 100px;
		border-style: solid;
		color: red;
		border-width: 20px;
		/* border: 10px green dotted; */ 一次性写
	}
</style>
<body>
	<div class="one">
	</div>
</body>

e) 单独方向的边框设置

语法:

 (1)上边框:border-top:三要素

 (2)左边框:border-left:三要素

 (3)下边框:border-bottom:三要素

 (4)有边框:border-right:三要素

示意图

 多学一招:可以设置none

示意图

f) 边框圆角

语法:border-radius:值

取值:可以是像素,也可以是百分比

示意图

 

多学一招:当盒子是正方形,圆角的值是边的一半或者百分比是50%的时候,是圆(ie8以下不支持),圆角和边框没关系

总结:元素加边框后,元素会变大

4.盒子模型的bug:

a) 盒子上下摆放,上盒子有下外边距,下盒子有上外边距,两个边距会重合,以大的边距为准

bug1图示

 bug1效果图

 解决:避免或将这个间距都给到一个元素上面

b) 两个盒子嵌套关系,两个盒子对于上外边距会重合,以大的边距为准

bug2图示

 bug2效果图

<style>
	.box {
		width: 100px;
		height: 100px;
		background-color: red;
		margin-top: 100px;
	}

	.box1 {
		width: 200px;
		height: 200px;
		background-color: green;
		overflow: hidden;
	}
</style>
<body>
	<div class="box1">
		<div class="box"></div>
	</div>
</body>

解决:

 a) 给外部盒子加上边框或者上padding-top

 b) 给外部盒子添加oveflow:hidden

元素的可见性

语法:visibility:值

取值:hidden隐藏,visible可见的

示意图

 多学一招:使用该属性隐藏的元素,在页面中还占用空间

语法:display:none

元素隐藏后在页面中不占用空间

示意图

 伪对象

概念:就是给元素追加一个虚拟标签,由css加载,可以节省html的资源开销,必须有content属性,默认是行元素,可以进行转换。(是加在内容中的

::after:在指定的标签后面添加一个对象

::before:在指定的标签前面添加一个对象

content:元素里面的内容(内容中不能写标签)

语法:

元素::after{
    content:"";
}

注意:伪对象样式中,必须有content属性,否则伪对象无效

多学一招:官方推荐使用双冒号,但是通常为了兼容性更好,我们使用单冒号

上面两个伪对象选择器需要结合属性content一起使用

<style type="text/css">
		.box{width:200px;background:#f00;height:300px;}
		.box::before{
			content:'开头的内容';height:100px;
			line-height:100px;color:#fff;background:#00f;
		}
		.box::after{
			content:'这是一个段落';
			background-color:green;
			display:block;height:50px;
		}
	</style>
</head>
<body>
	<div class="box"></div>
</body>

效果图

总结:

 1.什么是伪对象?不是实际标签,使用css样式模拟一个标签

 2.元素::after{}/元素::before{}

 3.在伪元素样式中,必须有content属性

 4.伪元素是行元素

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值