CSS-(3)浮动

1.元素浮动

        CSS 的 Float (浮动),会使元素向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为 止,其周围的元素也会重新排列。
        示例:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			img{
				width: 60px;
				height: 60px;
				border: 1px solid black;
				/*向右浮动*/
				/*float: right;*/
			}
		</style>
	</head>
	<body>
		<div>
			<img src="img/搜索.jpg" alt="加载失败"/>
			<p>
				浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动
				浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动
				浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动
				浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动
				浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动
				浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动
				浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动
				浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动
				浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动
				浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动浮动
			</p>
		</div>
	</body>
</html>

          正常实现效果图:

         打开float: righ;的注释后,图片实现向右浮动的效果,得到效果图:

         如图可以看到,图片向右浮动后一直到接触包含框停止,文字也进行了重新排列,将图片半包裹起来。

2.彼此相邻的浮动元素

        如果把几个浮动的元素放到一起,如果有间隙的话,它们会消除,彼此相邻。

        示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			img{
				width: 60px;
				height: 60px;
				border: 1px solid black;
				/*向右浮动*/
				<!--float: right;-->
			}
		</style>
	<body>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
	</body>
</html>

        效果图:

        

        当我们连续加载四张图片时,会发现图片与图片之间有间距,但是在通配选择器中已经设置了边距margin为0,内边距padding为0,此时可能是HTML中的图片默认为行内元素(inline elements)。如果你在HTML代码中图片标签之间有空白字符(包括空格、制表符或换行符),浏览器会将这些空白字符渲染为间距。要想解决这个问题,就可以使用浮动。

        打开float: righ;的注释后效果图:

                

        如图所示,此时图片之间的间距就会被消除。

3.清除浮动

        元素浮动之后,周围的元素会重新排列,为了避免这种情况,使用 clear 属性清除浮动。clear 属性指定元素两侧不能出现浮动元素。

        示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>清除浮动</title>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			img{
				width: 60px;
				height: 60px;
				border: 1px solid black;
				/*向左浮动*/
				float: left;
			}
			/*p{
				clear: both;
			}*/
		</style>
	</head>
	<body>
		<p>第一行</p>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<p>第二行</p>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
		<img src="img/搜索.jpg" alt="加载失败"/>
	</body>
</html>

        效果图:

        产生这样结果的原因,p为块元素,独占一行,内容为第一行的p标签渲染之后,第一组图片向左浮动,内容第二行的p标签和第二组图片重新排列,p会紧跟在第一组图片后面的空白进行渲染,第二组在剩下的空白位置渲染(寻找空白是从左到右,从上到下),布局如下。

         但是我们想得到如下效果:

        此时我们就需要让内容为第二行的p标签保持在图片浮动前的位置,就需要消除浮动对p标签的影响。

        打开clear:both;的注释后效果图为:

 

        此时,就消除了样式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值