5.1盒模型的定义
5.2 CSS元素的高度和宽度
5.2.1 盒模型的宽度
5.2.2 盒模型的高度
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
div{
width: 500px;
height: 440px;
border: 10px #ff0000 solid;
margin: 30px;
}
</style>
</head>
<body>
</body>
</html>
5.3 边距设置和边框设置
CSS中边距(margin)和边框(border)
5.3.1 外边距设置
5.3.1.1 上外边距
margin-top
:上边距。
5.3.1.2 右外边距
margin-right
:右边距。
5.3.1.3 下外边距
margin-bottom
:下边距。
5.3.1.4 左外边距
margin-left
:左边距。
5.3.1.5 外边距
margin: 30px;
5.3.2 外边距的合并
外边距合并(Margin Collapse)是CSS中一个特定现象,指的是两个垂直外边距相遇时,它们将合并为一个外边距,其值等于两者之间的最大值。
5.3.2.1 行级元素外边距合并
- 不合并:行级元素之间的垂直外边距通常不会合并。
- 水平外边距:行级元素的水平外边距可以叠加,但不会超过最大值。
- 垂直外边距:行级元素的垂直外边距之间不会合并,即使它们相邻。
5.3.2.2 块级元素外边距合并
- 相邻兄弟元素:相邻块级元素的垂直外边距会合并成两者中的最大值。
- 父子元素:如果子元素的顶部与父元素的底部相邻,它们的垂直外边距也会合并。
- 避免合并:
- 使用
overflow: auto;
或overflow: hidden;
在子元素上。 - 在父子元素之间插入一个空的行级元素。
- 使用
display: inline-block;
将子元素转换为内联块级元素。
- 使用
5.3.3 内边距设置
padding: 30px;
5.3.4 边框设置
5.3.4.1上边框
border-top: 10px #ff0000 solid;
5.3.4.2右边框
border-right: 10px #00ff00 solid;
5.3.4.3下边框
border-bottom: 10px #0000ff solid;
5.3.4.4 左边框
border-left: 10px #000000 solid;
5.3.4.5 边框样式
5.3.4.6 边框宽度
5.3.4.7 边框
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
img{
width: 600px;
height: 440px;
}
div{
width: 600px;
height: 440px;
border: 10px #ff0000 solid;
margin: 30px;
display: block;
padding: 30px;
border-top: 10px #ff0000 solid;
border-right: 10px #00ff00 dashed;
border-bottom: medium #0000ff solid;
border-left: 10px #000000 solid;
border-radius: 100px;
box-shadow: -20px 10px 30px #ff00ff;
}
</style>
</head>
<body>
<div><img src="img/01.jpg"/></div>
<div><img src="img/01.jpg"/></div>
</body>
</html>
border-top: 10px #ff0000 solid;
border-right: 10px #00ff00 dashed;
border-bottom: medium #0000ff solid;
border-left: 10px #000000 solid;
5.3.5 新增边框属性
5.3.5.1圆角边框
border-radius: 100px;
5.3.5.2阴影边框
box-shadow: -20px 10px 30px #ff00ff;
5.3.5.3图片绘制边框
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>示例5.11</title>
<style type="text/css">
div{
margin: 100px;
border: 50px solid blue;
border-image: url(img/02.jpg)5 10 round;
}
</style>
</head>
<body>
<div>
利用 border-image 属性设置图片边框铺满效果。上下向内偏移5像素 左右10像素
</div>
</body>
</html>
5.4 CSS元素的定位
static
:默认值,元素按照正常文档流进行排列。relative
:元素按照正常文档流进行排列,但可以通过top
,right
,bottom
,left
属性进行微调。absolute
:元素脱离文档流,通过top
,right
,bottom
,left
属性相对于其最近的非静态定位祖先元素进行定位。fixed
:元素脱离文档流,通过top
,right
,bottom
,left
属性相对于视口(浏览器窗口)进行定位。sticky
:元素基于用户的滚动位置进行定位,通常是结合top
,right
,bottom
,left
属性使用。<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>示例5.12</title> <style type="text/css"> .father{ border: 2px solid red; width: 300px; height: 250px; } .sonl{ border: 2px double red; background-color: yellow; width: 200px; height: 80px; } .son2{ border: 2px double red; width: 200px; height: 25px; margin-top: 50px; } </style> </head> <body> <div class="father">父盒子:无定位 <div class="sonl">子盒子1:无定位的盒子 <h2>静态定位的盒子</h2> </div> <div class="son2">子盒子2:无定位的盒子 </div> </div> </body> </html>
定位的偏移属性
top
:元素上边缘的位置。right
:元素右边缘的位置。bottom
:元素下边缘的位置。left
:元素左边缘的位置。
5.4.1 static 定位
- 正常流:元素按照正常的文档布局顺序排列。
- 无偏移:
top
,right
,bottom
,left
属性不会被应用。 - 无层叠:元素不会创建新的层叠上下文。
5.4.2 relative定位
- 参照自己:元素是相对于自己的初始位置进行偏移的。
- 占据空间:原位置仍然保留,不释放。
- 可层叠:可以与其他元素重叠。
- 偏移属性:
top
,right
,bottom
,left
属性有效。
.sonl{
border: 2px double red;
background-color: yellow;
width: 200px;
height: 80px;
position: relative;
top: 20px;
left: 40px;
}
5.4.3 absolute定位
- 脱离文档流:元素完全脱离正常文档流,不占据原位置的空间。
- 相对于非静态定位祖先元素:如果没有这样的祖先元素,那么相对于初始包含块进行定位。
- 可层叠:
absolute
定位的元素可以覆盖其他元素。 - 偏移属性:
top
,right
,bottom
,left
属性有效。
position: absolute;
bottom: 20px;
right: 40px;
5.4.3.1 相对浏览器绝对定位
5.4.3.2 相对父盒子绝对定位
-
父元素定位:
- 父元素需要设置
position: relative;
或position: absolute;
。
- 父元素需要设置
-
子元素定位:
- 子元素设置
position: absolute;
。
- 子元素设置
-
定位效果:
- 子元素将相对于父元素的内边距(padding)进行定位。
.father{
border: 2px solid red;
width: 300px;
height: 250px;
position: relative;
}
.sonl{
border: 2px double red;
background-color: yellow;
width: 200px;
height: 80px;
/*position: relative;
top: 20px;
left: 40px;
*/
position: absolute;
bottom: 20px;
right: 40px;
}
5.4.4 fixed定位
- 视口固定:元素位置相对于浏览器窗口固定。
- 脱离文档流:元素完全脱离文档流,不占据原位置的空间。
- 不随滚动条滚动:即使页面滚动,固定定位的元素也会停留在相同的屏幕位置。(小广告)
- 偏移属性:
top
,right
,bottom
,left
属性有效。
position: fixed;
bottom: 20px;
right: 40px;
5.5 CSS元素的浮动
5.5.1 盒子的浮动
在CSS中,"浮动"(Float)是一种定位机制,用于将元素从文档流中"拿出",并向左或向右浮动,直到它的外边缘接触到包含框或另一个浮动元素的边缘。浮动元素不占据文档流中的间隙,这意味着其他元素的布局不会考虑浮动元素占据的空间。
<div class="father">
<h2>父盒子</h2>
<div style="float: right;">右浮动盒子</div>
<div style="float: right;">标准流盒子2</div>
<div style="float: right;">标准流盒子3</div>
<p >css 中,有一个 foat 属性,默认为 none,也就是标准流通常的情况。若果将 foat 属性的值设置
为lett 或 night,元素就会向其父级元素的左侧或右侧靠近,同时默认的情况下,盒子的宽度不再伸展,而是
根据盒子里面的内容的宽度确定。</p>
</div>
5.5.2 盒子的浮动清除
由于浮动元素不占据空间,可能会导致某些布局问题,如父元素的高度塌陷。为了解决这些问题,可以使用以下方法清除浮动:
- 使用
clear
属性:clear: both;
:清除元素两侧的浮动。clear: left;
:只清除左侧的浮动。clear: right;
:只清除右侧的浮动。
<body>
<div class="father">
<h2>父盒子</h2>
<div style="float: right;">右浮动盒子</div>
<div style="float: right;">标准流盒子2</div>
<div style="float: right;">标准流盒子3</div>
<p style="clear: both;">css 中,有一个 foat 属性,默认为 none,也就是标准流通常的情况。若果将 foat 属性的值设置
为lett 或 night,元素就会向其父级元素的左侧或右侧靠近,同时默认的情况下,盒子的宽度不再伸展,而是
根据盒子里面的内容的宽度确定。</p>
</div>
</body>
5.6 综合案例——昵心美食空间
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>呢心美食空间</title>
<style type="text/css">
*{
background-color: #ffff99;
}
a{
color: red;
}
.all{
width: 700px;
height: 650px;
margin: 10px auto;
padding: 5px;
background-image: url(img/bg1.JPG);
}
.banner{
width: 700px;
height: 70px;
}
.menu{
width: 690px;
height: 40px;
padding: 5px;
}
.main{
width: 700px;
height: 450px;
margin: 5px 0px;
position: relative;
}
.left,.right{
width: 150px;
height: 440px;
border: 1px solid #999;
float: left;
}
.middle{
width: 384px;
height: 450px;
margin: 0px 5px;
float: left;
font-size: 20px;
font-family: "楷体";
font-weight: 700;
color: #0000ff;
}
.one{
width: 380px;
height: 155px;
border: 1px solid #999;
}
.two{
width: 255px;
height: 100px;
border: 5px double red;
margin-top: 20px;
margin-bottom: 20px;
border-radius: 25px;
}
.three{
width: 380px;
height: 135px;
border: 1px solid #999;
}
.bottom{
width: 700px;
height: 70px;
}
</style>
</head>
<body>
<div class="all">
<div class="banner">
<img src="img/banner.jpg" width="700px" height="70px"/>
</div>
<div class="menu">
<img src="img/menu.jpg" width="690px" height="40px"/>
</div>
<div class="main">
<div class="left">
<marquee direction="up">
<img src="img/mm_1.jpg" width="150px" height="140px"/>
<img src="img/mm_2.jpg" width="150px" height="140px"/>
<img src="img/mm_3.jpg" width="150px" height="140px"/>
</marquee>
</div>
<div class="middle">
<div class="one">
<img src="img/font.jpg" width="25px" height="25px"/>为您推荐
<br><br>
<img src="img/x_1.jpg" width="80px" height="40px"/>
<img src="img/x_2.jpg" width="80px" height="40px"/>
<img src="img/x_3.jpg" width="80px" height="40px"/>
<img src="img/x_4.jpg" width="80px" height="40px"/>
<img src="img/x_5.jpg" width="80px" height="40px"/>
<img src="img/x_6.jpg" width="80px" height="40px"/>
</div>
<center>
<div class="two">
<h1>呢心美食空间</h1>
</div>
</center>
<div class="three">
<img src="img/font.jpg" width="25px" height="25px"/>团购信息
<br>
<a href="#">1. 火锅团购</a><br>
<a href="#">2. 烧烤团购</a><br>
<a href="#">3. 自助餐团购</a><br>
<a href="#">4. 新春特惠</a>
</div>
</div>
<div class="right">
<marquee direction="up">
<img src="img/good_1.jpg" width="150px" height="140px"/>
<img src="img/good_2.jpg" width="148px" height="140px"/>
<img src="img/good_3.jpg" width="148px" height="140px"/>
</marquee>
</div>
</div>
<div class="bottom">
<hr color="#0000ff"/>
<center style="font-family:'楷体' ";>版权所有©呢心美食空间<br />
地址:江门市大学路XXX号 邮编:5000000 电话:0750-9999999</center>
</div>
</div>
</body>
</html>