盒子模型(01)
所谓盒子模型:就是把HTML页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。每个矩形盒子都由元素的内容、内边距(padding)、边框(border)和外边距(margin)组成。
1. 盒子模型(Box Model)
所谓盒子模型:就是把HTML页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。每个矩形盒子都由元素的内容、内边距(padding)、边框(border)和外边距(margin)组成。
2.盒子模型的宽和高
盒子模型的总宽=width+左右内边距之和+左右边框宽度之和+左右外边距之和
盒子模型的总高度=height+上下内边距之和+上下边框宽度之和+上下外边距之和
3.盒子边框(border)
语法: border : border-width:上边 [左边 下边 左边] ; | border-style:上边 [左边 下边 左边] ;| border-color :上边 [左边 下边 左边] ;
属性 | 作用 |
---|---|
border-width | 定义边框粗细,单位是px |
border-style | 边框的样式 |
border-color | 边框颜色 |
边框样式(border-style),常用属性值如下: none:没有边框即忽略所有边框的宽度(默认值)
solid:边框为单实线(最为常用的)
dashed:边框为虚线
dotted:边框为点线
double:边框为双实线
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.con{
width: 400px;
height: 300px;
/* 粗细 边框样式 边框颜色 */
border: 20px solid red; /* 实线 */
margin: 20px;
}
.con1,
.con2,
.con3{
width: 200px;
height: 100px;
margin: 30px;
}
.con1{
/* 虚线 */
border: 10px dashed red;
}
.con2{
/* 点线 */
border: 10px dotted blue;
}
.con3{
/* 双实线 */
border: 10px double yellow;
}
</style>
</head>
<body>
<div class="con">1111</div>
<div class="con1">边框样式1</div>
<div class="con2">边框样式2</div>
<div class="con3">边框样式3</div>
</body>
</html>
3.1 边框综合设置
border:宽度 样式 颜色
/*没有顺序*/
border: 1px solid red;
上面的设置方式中,宽度 样式 颜色的顺序不分先后;可以只指定需要设置的属性,省略的部分将取默认值(样式不能省略)。
3.2 圆角边框(CSS3)
border-radius: 左上角 右上角 右下角 左下角;
-
其中每一个值可以为 数值或百分比的形式。
-
技巧: 让一个正方形 变成圆圈
border-radius:50%;
-
以上效果图矩形的圆角, 就不要用 百分比了,因为百分比会是表示高度和宽度的一半。
-
而我们这里矩形就只用 用 高度的一半就好了。精确单位。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.con1,
.con2,
.con3{
width: 200px;
height: 100px;
background-color: pink;
margin: 30px;
}
.con1{
/* border-radius: 10px 10px 10px 10px; */
/* 左上 右上 右下 左下 */
border-radius: 10px;
}
.con2 {
border-radius: 10px 20px 30px 40px;
}
.con3{
width: 200px;
height: 200px;
/* 圆的写法 */
/* border-radius:100px; */
border-radius: 50%;
}
</style>
</head>
<body>
<!-- 圆角边框 -->
<div class="con1"></div>
<div class="con2"></div>
<div class="con3"></div>
</body>
</html>
4. 内边距(padding)
padding属性用于设置内边距。 是指 边框与内容之间的距离。 padding-top:上内边距 padding-right:右内边距 padding-bottom:下内边距 padding-left:左内边距
4.1 属性值设置
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.con{
width: 200px;
height: 100px;
background-color: pink;
/* 1个值:上下左右都是20px */
padding: 20px;
padding: 10px 20px 30px;
/* 2个值:上下 左右 */
padding: 10px 20px;
/* 3个值:上 左右 下*/
padding: 10px 20px 30px;
}
</style>
</head>
<body>
<div class="con">同志们今天辛苦了</div>
</body>
</html>
在上面的属性中,取值可为auto(自动,默认值)、不同单位的数值、相对于父元素(或浏览器)宽度的百分比(%)。实际工作中最常用的是像素值;不允许使用负值。
同边框相关属性一样,使用复合属性padding定义内边距时,必须按顺时针顺序采用值复制,1个值为四边、2个值为上下/左右,3个值为上/左右/下 。
5. 外边距(margin)
margin-top:上外边距 margin-right:右外边距 margin-bottom:下外边距 margin-left:上外边距 margin:上外边距 右外边距 下外边距 左外边
可以让一个盒子实现水平居中,需要满足一下两个条件:
-
必须是块级元素。
-
盒子必须指定了宽度(width)
然后就给左右的外边距都设置为auto,就可使块级元素水平居中。
实际工作中常用这种方式进行网页布局,示例代码如下:
.header{ width:960px; margin:0 auto;}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.con{
width: 200px;
height: 100px;
background-color:pink;
/* 1个值:上下左右都是20px */
margin: 20px;
/* 2个值:上下 左右*/
margin: 10px 20px;
/* 3个值:上左右 下 */
margin: 10px 20px 30px;
/* 顺时针 上 右 下 左*/
margin: 10px 20px 30px 40px;
}
</style>
</head>
<body>
<div class="con">同志们今天辛苦了</div>
</body>
</html>
5.2 文字(行内元素)居中
1.文字水平居中是 text-align: center
2.盒子水平居中:左右margin 改为 auto
text-align: center; /* 文字居中水平 */ margin: 10px auto; /* 盒子水平居中 左右margin 改为 auto 就阔以了 */
5.3 清除元素的默认内外边距
为了更方便地控制网页中元素,制作网页时,可使用如下代码清除元素的默认内外边距:
* {
padding:0; /* 清除内边距 */
margin:0; /* 清除外边距 */
}
5.4外边距塌陷
使用margin定义块元素的垂直外边距时,可能会出现外边距的合并。
当上下相邻的两个块元素相遇时,如果上面的元素有下外边距margin-bottom,下面的元素有上外边距margin-top,则他们之间的垂直间距不是margin-bottom与margin-top之和,而是两者中的较大者。这种现象被称为相邻块元素垂直外边距的合并(也称外边距塌陷)。
可以为父元素定义1像素的上边框或上内边距。
可以为父元素添加overflow:hidden(overflow 属性规定当内容溢出元素框时发生的事情)。
解决方法:
-
可以为父元素定义1像素的上边框或上内边距。
-
可以为父元素添加overflow:hidden(overflow 属性规定当内容溢出元素框时发生的事情)。
.father{
width: 300px;
height: 300px;
background-color: pink;
/* 给元素设置边框;可以为父元素定义1像素的上边框或者上内边距 */
/* border-top: 1px solid red; */
/* padding-top: 1px; */
overflow: hidden;
}
6. 插入图片和背景图片区别
-
插入图片 我们用的最多 比如产品展示类 移动位置只能靠盒模型 padding margin
-
背景图片我们一般用于小图标背景 或者 超大背景图片 背景图片 只能通过 background-position
img {
width: 200px;/* 插入图片更改大小 width 和 height */
height: 210px;
margin-top: 30px; /* 插入图片更改位置 可以用margin 或padding 盒模型 */
margin-left: 50px; /* 插入当图片也是一个盒子 */
}div {
width: 400px;
height: 400px;
border: 1px solid purple;
background: #fff url(images/sun.jpg) no-repeat;
background-position: 30px 50px; /* 背景图片更改位置 用 background-position */
}
7.CSS盒模型大小计算
CSS3中可以通过box-sizing 来指定盒模型,即可指定为content-box、border-box,这样我们计算盒子大小的方式就发生了改变。
可以分成两种情况:
-
1、box-sizing: content-box 盒子大小为 content (width/heigth)+ padding + border, content-box:此值为其默认值,其让元素维持W3C的标准Box Mode。
-
2、box-sizing: border-box 盒子大小为 width/heigth 就是说 padding 和 border 是包含到width里面的。
7.1盒子模型的分类
盒模型的分类(最重要的部分) 盒模型分为 : W3C标准盒子 、IE盒子
1.W3C标准盒子(content-box):
在这种盒模型下,我们所说的元素的 width ,实际上只包含 content
盒子总宽度 = margin + border + padding + width
2.IE盒子(border-box):
又称怪异盒模型(边框盒子),是指块元素box-sizing属性为border-box的盒模型。
在这种盒模型下,我们所说的元素的 width ,实际上包含了 content + padding + border
盒子总宽度= margin + width
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
/* 标准的盒子模型:width/height+padding+ border */
/* 宽度:200+20+30+20+30 */
/* 2.IE盒子模型 /怪异盒子模型 */
.box{
width: 200px;
height: 300px;
padding: 20px;
border: 30px solid red;
margin: 40px;
/* 标准的盒子模型(默认的) */
/* box-sizing: content-box; */
/* IE盒子模型 /怪异盒子模型 */
/* box-sizing: border-box; */
}
/* 总结:
标准盒子模型:盒子总宽度=margin +border + padding + width */
/* 盒子总宽度=margin +width|*/
</style>
</head>
<body>
<div class="box">dox</div>
</body>
</html>
更多推荐
所有评论(0)