第五章 css盒模型

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 行级元素外边距合并

  1. 不合并:行级元素之间的垂直外边距通常不会合并。
  2. 水平外边距:行级元素的水平外边距可以叠加,但不会超过最大值。
  3. 垂直外边距:行级元素的垂直外边距之间不会合并,即使它们相邻。

5.3.2.2 块级元素外边距合并

  1. 相邻兄弟元素:相邻块级元素的垂直外边距会合并成两者中的最大值。
  2. 父子元素:如果子元素的顶部与父元素的底部相邻,它们的垂直外边距也会合并。
  3. 避免合并
    • 使用 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元素的定位

  1. static:默认值,元素按照正常文档流进行排列。
  2. relative:元素按照正常文档流进行排列,但可以通过 toprightbottomleft 属性进行微调。
  3. absolute:元素脱离文档流,通过 toprightbottomleft 属性相对于其最近的非静态定位祖先元素进行定位。
  4. fixed:元素脱离文档流,通过 toprightbottomleft 属性相对于视口(浏览器窗口)进行定位。
  5. sticky:元素基于用户的滚动位置进行定位,通常是结合 toprightbottomleft 属性使用。
    <!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>

定位的偏移属性

  1. top:元素上边缘的位置。
  2. right:元素右边缘的位置。
  3. bottom:元素下边缘的位置。
  4. left:元素左边缘的位置。

5.4.1 static 定位

  1. 正常流:元素按照正常的文档布局顺序排列。
  2. 无偏移toprightbottomleft 属性不会被应用。
  3. 无层叠:元素不会创建新的层叠上下文。

5.4.2 relative定位

  1. 参照自己:元素是相对于自己的初始位置进行偏移的。
  2. 占据空间:原位置仍然保留,不释放。
  3. 可层叠:可以与其他元素重叠。
  4. 偏移属性toprightbottomleft 属性有效。
.sonl{
	border: 2px double red;
	background-color: yellow;
	width: 200px;
	height: 80px;
				
	position: relative;
	top: 20px;
	left: 40px;
}

 

5.4.3 absolute定位

  1. 脱离文档流:元素完全脱离正常文档流,不占据原位置的空间。
  2. 相对于非静态定位祖先元素:如果没有这样的祖先元素,那么相对于初始包含块进行定位。
  3. 可层叠absolute 定位的元素可以覆盖其他元素。
  4. 偏移属性toprightbottomleft 属性有效。
position: absolute;
bottom: 20px;
right: 40px;

5.4.3.1 相对浏览器绝对定位

5.4.3.2 相对父盒子绝对定位

  1. 父元素定位

    • 父元素需要设置 position: relative; 或 position: absolute;
  2. 子元素定位

    • 子元素设置 position: absolute;
  3. 定位效果

    • 子元素将相对于父元素的内边距(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定位

  1. 视口固定:元素位置相对于浏览器窗口固定。
  2. 脱离文档流:元素完全脱离文档流,不占据原位置的空间。
  3. 不随滚动条滚动:即使页面滚动,固定定位的元素也会停留在相同的屏幕位置。(小广告)
  4. 偏移属性toprightbottomleft 属性有效。
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 盒子的浮动清除

由于浮动元素不占据空间,可能会导致某些布局问题,如父元素的高度塌陷。为了解决这些问题,可以使用以下方法清除浮动:

  1. 使用 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:'楷体' ";>版权所有&copy;呢心美食空间<br />
		地址:江门市大学路XXX号 邮编:5000000 电话:0750-9999999</center>
		</div>
		</div>
	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值