在 CSS 中,盒模型(Box Model) 是网页布局的基础。所有 HTML 元素在浏览器中都会被当作一个矩形“盒子”来处理,而 盒模型决定了这些“盒子”的尺寸、间距和显示方式。 盒模型的组成:
可以用下图理解盒模型的层级关系:
+------------------------+ <-- margin (外边距)
| |
| +------------------+ | <-- border (边框)
| | +------------+ | | <-- padding (内边距)
| | | 内容区 | | |
| | +------------+ | |
| +------------------+ |
| |
+------------------------+
基础属性:
solid
实线边框,dashed
虚线边框,dotted
点线边框。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
width: 500px;
height: 250px;
border-width: 10px;
border-style:solid;
border-color:green;
}
</style>
</head>
<body>
<div>
测试~
</div>
</body>
</html>
可以看到图中我们有了一个厚度达10px的边框,同时因为这个边框导致了我们盒子被撑大了,原本盒子:500*250变成了520*270。添加了边框的厚度。 如果你想要操作每一个边框,可以使用以下语法:
border-top/bottom/left/right
来分别控制每个方向的边框。 提问:有没有办法不撑大盒子? 有的,
* {
box-sizing: border-box;
}
加上这一段代码即可。
padding
设置内容盒边框的距离。
基础写法:
默认内容是顶着边框放置的,用padding
来控制距离。
同样的,可以控制4个方向:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
height: 200px;
width: 300px;
}
</style>
</head>
<body>
<div>
测试!
</div>
</body>
</html>
没加padding
加上padding
后
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
height: 200px;
width: 300px;
padding-top:5px;
padding-left:10px;
}
</style>
</head>
<body>
<div>
测试喵~
</div>
</body>
</html>
通过图片,我们看到了一个绿色的内边框。 注意:内边距同样会撑大盒子,解决方法同边框一样。
基础写法: 控制盒子与盒子之间的距离: 同样可以控制四个方向:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
width: 200px;
height: 200px;
margin-left:20px;
}
</style>
</head>
<body>
<div>
现在是北京时间22点33分~
</div>
</body>
</html>
通过观察图片我们可以看到,外边框是不占盒子大小了
现在我会让盒子的各个方向的部分都进行不同的处理。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
div{
width: 200px;
height: 200px;
border-left: 10px solid red;
padding-right: 10px;
margin-top: 10px;
}
</style>
</head>
<body>
<div>
<p>who are you?</p>
</div>
</body>
</html>
可以通过开发者模式下的该内容,来判断盒子的各个组成。
浏览器会给元素加上一些默认的样式, 尤其是内外边距. 不同浏览器的默认样式存在差别. 为了保证代码在不同的浏览器上都能按照统一的样式显示, 往往我们会去除浏览器默认样式. 使用通配符选择器即可完成这件事情.
* {
marign: 0;
padding: 0;
}
希望本文能帮助你理解css的盒模型~