目标
盒子模型
1.1看透网页布局的本质
网页布局过程:
1.先准备好相关的网页元素,网页元素基本都是盒子Box
2.利用CSS设置好盒子样式,然后摆放到相应位置
3.往盒子里面装内容
网页布局的核心本质,就是利用CSS摆盒子。
1.2盒子模型组成
所谓盒子模型,就是把HTML页面中的布局元素看作是一个矩形的盒子,也就是盛装内容的容器。
CSS盒子模型本质是一个盒子,封装周围的HTML元素,它包括:边框、外边距、内边距和实际内容。
1.3 边框(border)
border可以设置元素的边框。边框有三部分组成:边框宽度(粗细)边框样式 边框颜色
语法:
border:border-width||border-style||border-color
| 属性 | 作用 |
| border-width | 定义边框粗细,单位是px |
| border-style | 边框样式 solide实线、dotted点线、dashed虚线线框 |
| border-color | 边框颜色 |
CSS 边框属性允许你指定一个元素边框的样式和颜色。
边框描写:
border:1px,solid red;没有顺序
<!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: 300px;
height: 200px;
border-width: 5px;
border-style: solid; */
/* border-style: dotted;点线 */
/* border-style: dashed;虚线边框 */
/* border-color: pink; */
width: 300px;
height: 200px;;
border: 1px,solid,pink;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
border-top:1px solid red;/*只设定上边框,其余同理*/
请给一个200*200的盒子,设置上边框为红色,其余边框为蓝色,提示:一定注意边框的层叠性
<!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: 300px;
height: 200px;
border-width: 5px;
border-style: solid; */
/* border-style: dotted;点线 */
/* border-style: dashed;虚线边框 */
/* border-color: pink; */
/* width: 300px;
height: 200px;;
border: 1px,solid,pink; */
width: 200px;
height: 200px;
border: 1px solid blue;
border-top:1px solid red;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
1.4 表格的细线边框
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>今日小说排行榜</title>
<style>
table {
width: 500px;
height: 249px;
}
table,
td,th {
border: 1px solid pink;
border-collapse: collapse;
font-size: 14px;
text-align: center;
}
</style>
</head>
<body>
<table align="center" cellspacing="0">
<thead>
<tr>
<th>排名</th>
<th>关键词</th>
<th>趋势</th>
<th>进入搜索</th>
<th>最近七日</th>
<th>相关链接</th>
</tr>
</thead>
<tr>
<td>1</td>
<td>鬼吹灯</td>
<td>上升</td>
<td>456</td>
<td>123</td>
<td><a href="#">贴吧</a><a href="#">图片</a><a href="#">百度</a></td>
</tr>
<tr>
<td>1</td>
<td>鬼吹灯</td>
<td>上升</td>
<td>456</td>
<td>123</td>
<td><a href="#">贴吧</a><a href="#">图片</a><a href="#">百度</a></td>
</tr>
<tr>
<td>1</td>
<td>鬼吹灯</td>
<td>上升</td>
<td>456</td>
<td>123</td>
<td><a href="#">贴吧</a><a href="#">图片</a><a href="#">百度</a></td>
</tr>
<tr>
<td>1</td>
<td>鬼吹灯</td>
<td>上升</td>
<td>456</td>
<td>123</td>
<td><a href="#">贴吧</a><a href="#">图片</a><a href="#">百度</a></td>
</tr>
<tr>
<td>1</td>
<td>鬼吹灯</td>
<td>上升</td>
<td>456</td>
<td>123</td>
<td><a href="#">贴吧</a><a href="#">图片</a><a href="#">百度</a></td>
</tr>
<tr>
<td>1</td>
<td>鬼吹灯</td>
<td>上升</td>
<td>456</td>
<td>123</td>
<td><a href="#">贴吧</a><a href="#">图片</a><a href="#">百度</a></td>
</tr>
</table>
</body>
</html>
border-collapse:合并单元格
1.5 边框会影响盒子的实际大小
边框会额外增加盒子的实际大小,因此,我们7欧两种方案解决:
1.测量盒子大小的时候,不量边框
2.如果测量的时候包含了边框,则需要width/height减去边框宽度。
1.6 内边距
padding 属于用于设置内边距,即边框与内容之间的距离。
| 属性 | 作用 |
| padding-left | 左行内距 |
| padding-right | 右行内距 |
| padding-top | 上内边距 |
| padding-bottom | 下内边距 |
padding属性(简写属性)可以有一到四个值。
| 值的个数 | 表达意思 |
| padding:5px; | 1个值,代表上下左右都有5像素内边距 |
| padding:5px 10px | 2个值,代表上下内边距5px,左右内边距是10px |
| padding:5px 10px 20px | 3个值,代表上内边距5像素,左右内边距10像素,下内边距20像素 |
| padding:5px 10px 20px 30px | 4个值,上5 右10 下20 左30 顺时针 |
<!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;
background-color: pink;
/* padding: 5px; */
/* 内边距复合写法(简写) */
/* padding: 5px 10px; */
/* padding: 5px 10px 20px; */
padding: 5px 10px 20px 30px;
}
</style>
</head>
<body>
<div>
盒子内容是content盒子内容是content盒子内容是content盒子内容是content
</div>
</body>
</html>
当我们给盒子指定padding值后,发生了2件事情:
1.内容和边框有了距离,添加了内边距。
2.padding影响了盒子实际大小。
也就是说,如果盒子已经有了宽度和高度,此时再指定内边框,会撑大盒子。
解决方案:
如果保证盒子跟效果图大小保持一致,则让width/height减去多出来的内边距大小即可。
综合案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>新浪导航</title>
<style>
.nav{
border-top: 3px solid #ff8500;
border-bottom: 1px solid #edeef0;
background-color: #fcfcfc;
height: 41px;
}
.nav a{
display: inline-block;
line-height: 41px;
padding: 0 20px;
font-size: 12px;
color: #4c4c4c;
text-decoration: none;
}
a:hover {
background-color: #eee;
color: orange;
}
</style>
</head>
<body>
<div class="nav">
<a href="#">新浪导航</a>
<a href="#">手机新浪网</a>
<a href="#">移动客户端</a>
<a href="#">微博</a>
<a href="#">三个字</a>
</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>
.nav{
width: 200px;
height: 40px;
font-size: 14px;
}
.nav a{
display: block;
background-color: #55585a;
color: #fff;
text-decoration: none;
line-height: 40px;
padding-left: 30px;
}
a:hover {
background-color: #ff6700;
}
</style>
</head>
<body>
<div class="nav">
<a href="#">手机 电话卡</a>
<a href="#">电视 盒子</a>
<a href="#">笔记本 平板</a>
<a href="#">出行 穿戴</a>
<a href="#">智能 路由器</a>
<a href="#">健康 儿童</a>
<a href="#">耳机 音响</a>
</div>
</body>
</html>

1.7 外边距(margin)
margin 属性用于设置外边距,即控制盒子和盒子之间的距离。
| 属性 | 作用 |
| margin-left | 左外边距 |
| margin-right | 右外边距 |
| margin-top | 上外边距 |
| margin-bottom | 下外边距 |
<!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 {
background-color: pink;
width: 200px;
height: 200px;
}
.one {
/* margin-bottom: 20px; */
margin: 20px 30px 20px 50px;
}
</style>
</head>
<body>
<div class="one">1</div>
<div class="two">2</div>
</body>
</html>
深入理解CSS盒子模型
2278

被折叠的 条评论
为什么被折叠?



