CSS基础知识4-盒子模型

盒子模型

简介

CSS处理网页时,它认为每个元素都包含在一 个不可见的盒子里。

为什么要想象成盒子呢?因为如果把所有的元素都想象成盒子,那么我们对网页的布局就相当于是摆放盒子。我们只需要将相应的盒子摆放到网页中相应的位置,即可完成网页的布局。

浏览器默认样式

浏览器为了在页面没有样式时也可以有一个比较好的显示效果,所以为很多元素都设置了默认的margin和padding,但是这些默认样式在正常情况下我们是不需要使用的。

所以我们往往在编写样式之前需要清除这些默认样式:

*{
margin = 0;
padding = 0;
}

边框

为元素设置边框必须为其指定三个样式(缺一不可),分别是:

border-width:边框宽度

border-color:边框颜色

border-style:边框样式 

使用border-width可以分别指定四个边框的宽度

如果在该样式中指定了四个值,则分别设置给上 右 下 左,按照顺时针的方向设置

如果在该样式中指定了三个值,则分别设置给上    左右    下 

如果在该样式中指定了两个值,则分别设置给上下    左右 

除了border-width,CSS中还提供了四个border-xxx-width,xxx的值可以是top,right,bottom,left。(其他两个样式也适用)

设置边框的样式,可选值:

none:默认值

solid:实线

dotted:点状边框

dashed:虚线

double:双线

也可以分别设置四条边的样式,规则同width。

边框简写属性

border:边框的简写样式,通过它可以同时设置四个边框的颜色、宽度和样式,而且没有顺序要求

border一指定就是同时指定四个边,不能分别指定,例子: 

border:red solid 10px;

也可以通过border-left、 border-top、 border-right、 border-bottom设置四个边的样式,规则和border一样。

内边距(padding)

内边距指的是盒子的内容区和盒子边框之间的距离,一共有四个内边距,可以通过:

padding-top、padding-right、padding-bottom、padding-left来设置四个方向的内边距。

内边距会影响盒子可见框的大小,元素的背景样式会延伸到内边距,盒子的大小由内容区、内边距和边框共同决定。

外边距(margin)

外边距指的是盒子与其他盒子之间的距离,它不会影响盒子可见框的大小,而是会影响盒子的位置。

盒子有四个方向的外边距:

margin-top、margin-right、margin-bottom、margin-left

由于页面中的元素都是靠左靠上摆放的,所以当我们设置上和左外边距时会导致盒子自身位置发生变化。

外边距可以是一个负值,这样元素会向反方向移动。

margin还可以设置为auto,auto一般只设置给水平方向的margin,如果只指定给左右外边距为auto则会将外边距设置为最大值。

通过auto可以达到使子元素在父元素中居中的效果:

margin:0px auto;

外边距同样可以使用简写属性margin,同时设置四个方向的外边距。 

垂直外边距的重叠 

相邻的垂直外边距会发生重叠现象:相邻元素外边距去最大值,子元素的外边距会传递给父元素。

水平外边距不会重叠而是取和。

解决方法:

垂直相邻的:把相加值设置给其中一个元素即可

父子元素的:为父元素设置内边距或者边框。

解决垂直外边距重叠问题(详细情况可查看该链接)

内联样式的盒子模型

内联样式是不能设置width和height的。

它可以设置水平内边距,会影响页面布局,会将水平方向其他元素挤开;但是垂直内边距则不会影响页面布局,它是选择覆盖其他元素。

它也可以设置边框,垂直边框不会影响页面布局,但是水平边框会(可以理解为跟水平内边距一样)

同时,内联元素支持水平方向的外边距,相邻元素外边距不会重叠而是求和。

内联元素不支持垂直外边框!

有兴趣的可以使用以下代码加深理解:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			
			span{
				background-color: #bfa;
			}
			
			.box1{
				width: 100px;
				height: 100px;
				background-color: red;
			}
			
			.s1{
				/*
				 	内容区、内边距 、边框 、外边距
				 * */
				
				/*
				 * 内联元素不能设置width和height
				 */
				/*width: 200px;
				height: 200px;*/
				
				/*
				 * 设置水平内边距,内联元素可以设置水平方向的内边距
				 */
				padding-left: 100px ;
				padding-right: 100px ;
				
				/*
				 * 垂直方向内边距,内联元素可以设置垂直方向内边距,但是不会影响页面的布局
				 */
				padding-top: 50px;
				padding-bottom: 50px;
				
				/*
				 * 为元素设置边框,
				 * 	内联元素可以设置边框,但是垂直的边框不会影响到页面的布局
				 */
				border: 1px blue solid;
				
				/*
				 * 水平外边距
				 * 	内联元素支持水平方向的外边距
				 */
				/* margin-left:100px ;
				margin-right: 100px; */
				
				/*
				 * 内联元素不支持垂直外边距
				 */
				margin-top: 200px;
				margin-bottom: 200px;
				
			}
			
			.s2{
				/*
				 * 为右边的元素设置一个左外边距
				 * 水平方向的相邻外边距不会重叠,而是求和
				 */
				/* margin-left: 100px; */
			}
			
			
		</style>
	</head>
	<body>
		<span class="s1">我是一个span</span>
		<span class="s2">我是一个span</span>
		<span>我是一个span</span>
		<span>我是一个span</span>
		
		<div class="box1"></div>
	</body>
</html>

display和visibility

通过display可以修改元素的类型

可选值:

inline:可以将一个元素作为内联元素显示

block:可以将一个元素作为块元素显示

inline-block:可以使元素既有内联元素的特点又有块元素的特点,既可以设置宽高又不会独占一行

none:不显示元素,并且元素不会在页面中继续占有位置

通过visibility可以设置元素的隐藏和显示状态

可选值:

visible:默认值,元素在页面中显示

hidden:元素隐藏不显示(但它的位置依然会保持)

overflow

子元素默认是存在于父元素的内容区中的,理论上讲子元素盒子模型的最大可以等于父元素内容区的大小,如果超出该大小,我们将超出的内容称为溢出的内容。

父元素默认是将溢出的内容在父元素外显示,通过overflow可以设置父元素如何处理溢出的内容。

可选值:

visible:默认值,不做任何处理

hidden:溢出的内容会被修剪不会显示

scroll:会为父元素添加滚动条,通过拖动滚动条可以查看完整内容,该属性不管内容是否溢出都会为父元素添加水平和垂直方向滚动条。

auto:会根据需求自动添加滚动条(相对灵活)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值