🏍️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生
🛵个人主页:亦世凡华、
🛺系列专栏:CSS专栏
🚲给大家推荐一个网站😉很实用😚我一直在上面刷题:点击跳转进入网站 注册登录即可刷题
目录
盒子模型
什么是盒子?
box:盒子,每个元素在页面中都会生成一个矩形区域(盒子),盒子是用来储存物品;我们可以将盒子理解为一个快递包裹,由内容,填充物以及纸盒子组成。
盒子类型:
行盒,display等于inline的元素,行盒上不换行;块盒,display等于block的元素,块盒独占一行。
display默认值为inline
浏览器中默认样式表:
设置的块盒:容器元素、h1~h6、p
设置的行盒:span、a、img、video、audio
如何理解CSS中的盒子?
在CSS中一个盒子的组成部分有:内容(content)+内填充(padding)+边框(border)+外边距(margin)
一个盒子中的主要属性:width、height、padding、border、margin
width:宽度,这里的宽度指的是盒子里面内容的宽度,而不是盒子的宽度。
height:高度,这里的高度指的是盒子里面内容的高度,而不是盒子的高度。
padding:内填充,指的是盒子里面内容到盒子边距的距离。
border:外边框,指的是盒子的边框。
margin:外边距,指的是盒子与盒子之间的间距。
一个盒子的组成部分是什么?从内到外分别是:
content(内容)
width、height,设置的是盒子内容的宽高
内容部分通常叫做整个盒子的**内容盒 content-box**。
padding(填充)
盒子边框到盒子内容的距离,具体书写为:
padding-left、padding-right、padding-top、padding-bottom。
padding是简写属性,其书写顺序为:
padding: a b ; 上下、左右。
padding: a b c; 上、左右、下。
padding: a b c d; 上、右、下、左。
填充区+内容区 = **填充盒 padding-box**。
border(边框)
边框 = 边框样式 + 边框宽度 + 边框颜色
边框样式:border-style
边框宽度:border-width
边框颜色:border-color
边框+填充区+内容区=**边框盒 border-box**
margin(外边距)
边框到其他盒子的距离
margin-top、margin-left、margin-right、margin-bottom
margin是简写属性,其书写顺序为:
margin: a b ; 上下、左右。
margin: a b c; 上、左右、下。
margin: a b c d; 上、右、下、左。
盒子模型的举例
<!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>
.box{
width: 100px;
height: 100px;
border: 1px solid #f00;
padding: 20px;
}
</style>
</head>
<body>
<div class="box">文本内容文本内容文本内容文本内容文本内容文本内容</div>
</body>
</html>
那我们如何计算一个盒子的总 (宽) (高) 度呢?
一个盒子的总宽度 = 盒子里面内容的宽度 + 左右两边的填充 + 左右两边的边框线 。
一个盒子的总高度 = 盒子里面内容的宽度 + 上下两边的填充 + 上下两边的边框线 。
注意:一个盒子的高度一般情况下是不用设置的,因为一个盒子的高度它应该是由其内容来决定的
margin的注意事件
margin的塌陷现象
1.在标准文档流中,竖直方向的margin值不会叠加,它会取较大的值。
<!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>
div{
width: 100px;
height: 100px;
}
.div1{
background-color: #f00;
/* 下外边距 */
margin-bottom: 20px;
}
.div2{
background-color: #0f0;
/* 上外边距 */
margin-top: 40px;
}
</style>
</head>
<body>
<div class="div1"></div>
<div class="div2"></div>
</body>
</html>
2.横着方向是没有margin的塌陷现象。
<!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>
.s1{
background-color: #f00;
/* 右外边距 */
margin-right: 20px;
}
.s2{
background-color: #0f0;
/* 左外边距 */
margin-left: 40px;
}
</style>
</head>
<body>
<span class="s1">文本一</span><span class="s2">文本二</span>
</body>
</html>
3.浮动元素它是没有塌陷现象的。
<!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>
.box{
width: 100px;
border: 5px solid #000;
overflow: hidden;
}
.box div{
width: 100px;
height: 100px;
}
.div1{
background-color: #f00;
float: left;/* 向左浮动 */
margin-bottom: 20px;
}
.div2{
background-color: #00f;
float: left;/* 向左浮动 */
margin-top: 40px;
}
</style>
</head>
<body>
<div class="box">
<div class="div1"></div>
<div class="div2"></div>
</div>
</body>
</html>
margin居中
margin的值可以是auto,auto表示“自动”的意思,当左外边距与右外边距的值都是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>
.box{
width: 100px;
height: 100px;
background-color: #f00;
/* margin-left: auto;左外边距
margin-right: auto;右外边距
margin-top: 100px;上外边距
margin-bottom: 100px;下外边距 */
/* 使用简写属性 */
margin: 100px auto;
}
p{
height: 50px;
background-color: #00f;
}
</style>
</head>
<body>
<div class="box"></div>
<p></p>
</body>
</html>
注意:
1、使用margin来实现水平居中时,一定要有固定的宽度(给这个盒子设置一个宽度)
2、只有块元素可以实现水平居中,行内元素不能实现水平居中
3、只有标准文档流的盒子才可以使用margin来实现水平居中
4、margin属性是用来实现盒子的水平居中,而不是文本的水平居中
注意1:如果不给盒子设置宽度,其就会基础父元素的宽度,也就是body元素。
注意2:行内元素是不能实现水平居中的
注意3:标准文档流的盒子才可以使用margin来实现水平居中
注意4:margin属性是用来实现盒子的水平居中,而不是文本的水平居中;text-align这个属性它是用于实现文本的对齐方式,如果其值为center就表示文本水平居中,但是它不能实现盒子的水平居中。
使用父元素的padding而不是子元素的margin的原因
给一个案例,我们想让盒子内部里面的盒子距外层的盒子上外边距为100px,正常我们会这样做:
要解决上图的问题:有两种方法解决:
第一种方法:给其父元素设置边框线。但是这种方法不常用,因为边框一般主要是用于来调试代码的,很少会给一个盒子设置边跨。
第二种方法:不要使用子元素的margin而是要使用其父元素的padding
说明:margin这个属性它本意是用来描述兄弟与兄弟元素的关系,不是用于描述父子元素之间的关系的,如果是父子元素的关系,就最好使用给其父元素设置padding属性。
🍃前端的学习还是要以多练习为主,想要练习HTML的朋友,推荐可以去牛客网看一看,链接:牛客网 里面的IT题库内容很丰富,属于国内做的很好的了,最重要的是里面的资源是免费的,是课程+刷题+面经+求职+讨论区分享,一站式求职学习网站,感兴趣的可以去看看。
盒子相关知识讲解今天就到这了,码文不易,大家支持一下吧。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/140118.html