盒子模型(border、margin、padding、box-sizing拯救布局、圆角边框、阴影)

什么是盒子模型?

在这里插入图片描述

盒子模型.png

(1)content:位于最中间,网页的主要显示内容。

(2)border:位于内边距外面,如果没有内边距就是包着内容的外框,它一般具有一定的厚度

(3)padding:位于边框内部的空隙,是内容和边距的距离。

(4)margin:位于边框外部空隙,边框外面周围的距离。

边框

1、边框的颜色border-color

属性 说明 示例
border-top-color 上边框颜色 border-top-color:#369;
border-right-color 右边框颜色 border-right-color:#369;
border-bottom-color 下边框颜色 border-bottom-color:#fae45b;
border-left-color 左边框颜色 border-left-color:#efcd56;
border-color
四个边框为同一颜色 border-color:#eeff34;
上下、 左右 border-color:#369 #000;
上 、 左右、下 border-color:#369 #000 #f00;
上、右、下、左 border-color:#369 #000 #f00 #00f;

2、边框的粗细border-width

  • thin 细
  • medium 中
  • thick 粗
  • 像素值
属性 示例
上边框 border-top-width:5px;
右边框 border-right-width:10px;
下边框 border-bottom-width:8px;
左边框 border-left-width:22px;
border-width
四条边框一样(一个值) border-width:5px ;
上下、左右(两个值) border-width:20px 2px;
上 、 左右 、下(三个值) border-width:5px 1px 6px;
上 、 右、 下、 左(四个值) border-width:1px 3px 5px 2px;

3、边框的样式border-style

属性值及说明
none 无边框 hidden 隐藏边框
dotted 点线边框 dashed 虚线边框
solid 实线边框 double 双线边框 边框的粗细是3的倍数
简写属性:border

同时设置粗细、样式、颜色

顺序:粗细—>样式—>颜色

border:1px solid #3a6587;
border: 1px dashed red;

外边距

  • 外边距(margin)位于盒子边框外,指与其他盒子之间的距离,也就是指网页中元素与元素之间的距离

在这里插入图片描述

外边距也分上、右、下、左边距,设置方式和顺序跟边框基本相同。

属性 说明 示例
margin-top 设置上外边距 margin-top:1px
margin-right 设置右外边距 margin-right:2px
margin-bottom 设置下外边距 margin-bottom:1px
margin-left 设置左外边距 margin-left:2px
margin
上右下左外边距都一样 margin :8px;
上下 、 左右 margin :3px 5px;
上 、左右 、 下 margin :3px 5px 7px;
上、右、下、左 margin :3px 5px 7px 4px;

网页中很多元素都会有默认的外边距,并且在不同的浏览器中,默认的外边距还不一样。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>外边距</title>
</head>
<body>
    <h2>CSS</h2>
</body>
</html>

在这里插入图片描述

为了使页面在不同的浏览器中显示的效果一样,通常在CSS中使用并集选择器统一设置这些标签的外边距为0px。这样页面中不会因为外边距而产生不必要的空隙。各浏览器显示的效果也会一样。

【注意】并集选择器是同时选中各个基本选择器所选择的范围,任何形式的选择器(包括标签选择器、类选择器、ID选择器等)都可以作为并集选择器的一部分。多个选择器通过逗号隔开。

<style>
	/*border和h2都有默认外边距*/
	body,h2{
    
    
    	margin: 0px;
	}
</style>

清除body和h2的外边距以后:
清除外边距.png

margin还有一个特殊的值—auto

/*这种方式可以让元素在父容器中水平居中*/
margin:0px auto;

条件:这个元素必须是块元素。其次要给div块设置固定宽度。

内边距

内边距(padding)用于控制内容与边框之间的距离,以便精确控制内容在盒子中的位置,内边距也分上、右、下、左内边距。

属性 说明 示例
padding-top 设置上内边距 padding-top:1px
padding-right 设置右内边距 padding-right:2px
padding-bottom 设置下内边距 padding-bottom:1px
padding-left 设置左内边距 padding-left:2px
padding
上右下左外边距都一样 padding :8px;
上下 、 左右 padding :3px 5px;
上 、 左右 、 下 padding :3px 5px 7px;
上、右、下、左 padding :3px 5px 7px 4px;

没有设置内边距
在这里插入图片描述

现在我们想让"CSS"和左边框有点距离

/*调左内边距*/
padding-left: 20px;

左内边距设为20px后
在这里插入图片描述

初学盒子模型的时候,大家对什么时候用内边距,什么时候用外边距有些迷惑。

大家记住原则:内边距在边框内部,外边距在边框外面。你可以去区分空隙是在边框内部还是外部。如果没有边框的情况下可以手动设置边框,作为调试使用,用完删除即可。

盒子模型的尺寸

/*设置盒子的宽度*/
width:10px;
/*设置盒子的高度*/
height:5px;

默认情况下,元素的宽度与高度计算方式如下:

w i d t h ( 宽 ) + p a d d i n g ( 内 边 距 ) + b o r d e r ( 边 框 ) = 元 素 实 际 宽 度 width(宽) + padding(内边距) + border(边框) = 元素实际宽度 width()+padding()+border()=
h e i g h t ( 高 ) + p a d d i n g ( 内 边 距 ) + b o r d e r ( 边 框 ) = 元 素 实 际 高 度 height(高) + padding(内边距) + border(边框) = 元素实际高度 height()+padding()+border()=

这就意味着我们在设置元素的 width或height 时,元素真实展示的高度与宽度会更大,因为元素的边框与内边距也会计算在 width或height 中。

.div1 {
    
    
    width: 300px;
    height: 100px;
    border: 1px solid blue; 
}
.div2 {
    
    
    width: 300px;
	height: 100px;
    padding: 50px;
	border: 1px solid red;
} 

在这里插入图片描述

以上两个 < div > 元素虽然宽度与高度设置一样,但真实展示的大小不一致,因为 div2 指定了内边距,内边距也被加到了宽度和高度上。

box-sizing拯救布局

盒子的总尺寸不光包括内容宽度(width),还包括内边距和边框等,这样设计师每次使用都要去计算,其实也很麻烦。

1.box-sizing的语法

为了解决这种问题,CSS3增加了一个盒子模型属性box-sizing,能够事先定义盒子模型的尺寸解析方式。

/*语法:*/
box-sizing:content-box  ||   border-box  ||  inherit
  • content-box:默认值,盒子的宽度或高度 = border + padding + (margin) + width / height。
  • border-box:盒子的宽度或高度等于元素内容的宽度或高度。这里内容宽度或高度包含了元素的border、padding、内容的宽度或高度(此处的内容宽度或高度 = 盒子宽度或高度 - border - padding)。
  • inherit:元素继承父元素的盒子模型模式。
2.浏览器兼容性
属 性 名 IE Firefox Chrome Opera Safari
box-sizing 8+ 1.5+ 1.0+ 9.0+ 3.1+
3.box-sizing的使用

如果在元素上设置了 box-sizing: border-box; 则 padding(内边距) 和 border(边框) 也包含在 width 和 height 中

/*以下是两个 <div> 元素添加 box-sizing: border-box; 属性*/
.div1 {
    
    
    width: 300px;
    height: 100px;
    border: 1px solid blue;    
	box-sizing: border-box;
}
.div2 {
    
    
    width: 300px; 
	height: 100px;
    padding: 50px;
    border: 1px solid red;
    box-sizing: border-box;
} 

两个 div 现在是一样大小的!
在这里插入图片描述

从结果上看 box-sizing: border-box; 效果更好,也正是很多开发人员需要的效果。

以下代码可以让所有元素以更直观的方式展示大小。很多浏览器已经支持 box-sizing: border-box; (但是并非所有)

所有元素使用 box-sizing 是比较推荐的:

* {
    
    
    box-sizing: border-box;
}

圆角边框

属性 描述
border-top-left-radius 定义了左上角的弧度
border-top-right-radius 定义了右上角的弧度
border-bottom-right-radius 定义了右下角的弧度
border-bottom-left-radius 定义了左下角的弧度
border-radius
四个角都一样 border-radius:1px;
第一个值左上角和右下角,第二个值右上角和左下角 border-radius:1px 2px;
第一个值左上,第二个值右上角和左下角,第三个值右下 border-radius:1px 2px 3px;
左上 、右上 、右下 、 左下 border-radius:1px 2px 3px 4px;

参考https://www.runoob.com/css3/css3-border-radius.html

盒子阴影

box-shadow的语法:

box-shadow:inset  x-offset   y-offset  blur-radius  color;

这个属性有五个值

  1. 阴影类型,可选值,如果不设置,默认的投影方式是外阴影;如果设置了inset是内阴影。
  2. x-offset:X轴位移,如果是正值,阴影在对象的右边。如果是负值,阴影在对象左边。
  3. y-offset:Y轴位移,如果是正值,阴影在对象的底部。如果是负值,阴影在对象顶部。
  4. blur-radius:模糊半径,代表阴影向外模糊的模糊范围。值越大向外模糊的范围越大,阴影的边缘就越模糊。这个只能是正值,如果是0,表示不具有模糊效果,是可选值。
  5. color:阴影颜色
.div1 {
    
    
     width: 300px;
     height: 100px;
     padding: 50px;
     border: 1px solid red;
     box-sizing: border-box;
     background: lightcoral;
    /*设置阴影*/
     box-shadow: 3px 3px 6px #ff5656;
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45277249/article/details/111998994
今日推荐