欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > CSS浮动详解

CSS浮动详解

2025/4/23 8:15:33 来源:https://blog.csdn.net/weixin_65752158/article/details/145946125  浏览:    关键词:CSS浮动详解

1. 浮动的简介

浮动是用来实现文字环绕图片效果的

2.元素浮动后会有哪些影响

对兄弟元素的影响: 后面的兄弟元素,会占据浮动元素之前的位置,在浮动元素的下面;对前面的兄弟 无影响。
对父元素的影响: 不能撑起父元素的高度,导致父元素高度塌陷;但父元素的宽度依然束缚浮动的元 素。

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>浮动产生的影响</title><style>.outer{width: 500px;background-color: gray;border: 1px solid black;}.box{width: 100px;height: 100px;background-color: aqua;border: 1px solid black;margin: 5px;}/* 对父元素的影响: 不能撑起父元素的高度,导致父元素高度塌陷;但父元素的宽度依然束缚浮动的元素。 */.box1,.box2,.box3{float: left;}</style>
</head>
<body><div class="outer"><!-- 对前面的兄弟无影响 --><!-- <div class="box box0">0</div> --><div class="box box1">1</div><div class="box box1">2</div><div class="box box1">3</div><!-- 对后面的有影响 --><!-- 123都浮动了,4在1后面,但是文字随图片浮动在下面 --><!-- <div class="box box4">4</div> --></div></body>
</html>

 对父元素的影响: 不能撑起父元素的高度,导致父元素高度塌陷;但父元素的宽度依然束缚浮动的元 素。

对兄弟元素的影响: 后面的兄弟元素,会占据浮动元素之前的位置,在浮动元素的下面;对前面的兄弟无影响。

对后面的兄弟也影响

对前面的兄弟无影响 

3.解决浮动产生的影响(清除浮动)

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>浮动产生的影响</title><style>.outer{width: 500px;background-color: gray;border: 1px solid black;/* 1. 方案一: 给父元素指定高度 */height: 112px;}.box{width: 100px;height: 100px;background-color: aqua;border: 1px solid black;margin: 5px;}.box1,.box2,.box3{float: left;}</style>
</head>
<body><div class="outer"><div class="box box1">1</div><div class="box box1">2</div><div class="box box1">3</div></div></body>
</html>

 1. 方案一: 给父元素指定高度

但是子元素后面元素还是在浮动元素的后面 

2. 方案二: 给父元素也设置浮动,带来其他影响。

效果跟方案1一样 

3. 方案三: 给父元素设置 overflow:hidden

 子元素后面的元素消失了更严重

但是父元素的兄弟元素没有影响

4. 方案四: 在所有浮动元素的最后面, 添加一个块级元素 ,并给该块级元素设置 clear:both

解决了 父元素的兄弟元素没有影响; 子元素后面的元素没有在浮动的元素后面

但是父元素的高度塌陷了

    .box4{/* 清除box4之前所有产生浮动元素的影响 */clear:both;}

添加的只能是块级元素 

总结:

在浮动元素后面添加一个没有高度文字块级标签,然后消除这个标签前面的所有浮动元素

 .mafa{/* 清除mafa之前所有产生浮动元素的影响 */clear:both;}

5. 方案五 : 给浮动元素的父元素,设置伪元素,通过伪元素清除浮动,原理与方案四相同。 ===> 推 荐使用

 /* ::after 在元素最后的位置,创建一个子元素(必须用 content 属性指定内容)。在父元素最后的位置创建一个子元素*/.outer::after{content: '';display:block;clear:both;}

完整代码

<!DOCTYPE html>
<html lang="zh-cn">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>浮动产生的影响</title><style>.outer{width: 500px;background-color: gray;border: 1px solid black;/* 1. 方案一: 给父元素指定高度 但是子元素后面还是在浮动元素的后面*//* height: 112px; *//* 2. 方案二: 给父元素也设置浮动,带来其他影响。但是子元素后面还是在浮动元素的后面 *//* float: left; *//* 3. 方案三: 给父元素设置 overflow:hidden 。 *//* overflow:hidden; *//* 4. 方案四: 在所有浮动元素的最后面,添加一个块级元素,并给该块级元素设置 clear:both 。 *//* 5. 方案五: 给浮动元素的父元素,设置伪元素,通过伪元素清除浮动,原理与方案四相同。===> 推荐使用 */}.box{width: 100px;height: 100px;background-color: aqua;border: 1px solid black;margin: 5px;}.box1,.box2,.box3,.box4{float: left;}.mafa{/* 清除mafa之前所有产生浮动元素的影响 */clear:both;}/* ::after 在元素最后的位置,创建一个子元素(必须用 content 属性指定内容)。在父元素最后的位置创建一个子元素*/.outer::after{content: '';display:block;clear:both;}</style>
</head>
<body><div class="outer"><div class="box box1">1</div><div class="box box1">2</div><div class="box box1">3</div><!-- 对后面的有影响 --><div class="box box4">4</div>   <!-- <div class="mafa"></div>   --></div><div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi adipisci accusantium veniam quos sint repellat porro neque, ex nesciunt dignissimos praesentium magni maxime saepe veritatis atque cumque illo aut facere.</div> </body>
</html>
布局中的一个原则:设置浮动的时候,兄弟元素要么全都浮动,要么全都不浮动。

4.浮动练习

<!DOCTYPE html>
<html lang="zh-cn"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>/* 清除默认样式 */* {padding: 0;margin: 0;}/* 左浮动 */.leftFD {float: left;}/* 左浮动 */.rightFD {float: right;}/* 清除浮动 */.clearFD::after {content: '';display: block;clear: both;}/* 设置盒子块水平居中 */.container {width: 960px;text-align: center;margin: 0 auto;}.logo,.banner1,.banner2 {height: 80px;background-color: aqua;line-height: 80px;}.logo {width: 200px;}.banner1 {width: 540px;margin: 0 10px;}.banner2 {width: 200px;}.menu {height: 30px;background-color: blueviolet;margin-top: 10px;}.content {margin-top: 10px;}.itme1,.itme2 {height: 198px;width: 368px;border: 1px solid black;margin-right: 10px;background-color: chocolate;line-height: 198px;}.item3,.item4,.item5,.item6 {height: 198px;width: 178px;border: 1px solid black;background-color: yellow;line-height: 198px;margin-right: 10px;}.bottom {margin-top: 10px;}.item7,.item8,.item9 {width: 198px;height: 128px;border: 1px solid 1px;line-height: 128px;margin-bottom: 10px;background-color: green;}</style>
</head><body><!-- 盒子模块 --><div class="container"><!-- 页面头部 --><div class="page-header clearFD"><div class="logo leftFD">logo</div><div class="banner1 leftFD">banner1</div><div class="banner2 leftFD">banner2</div></div><!-- 设置菜单 --><div class="menu">菜单</div><!-- 设置内容区 --><div class="content clearFD"><!-- 分左侧 --><div class="left leftFD"><!-- 分上侧 --><div class="top clearFD"><div class="itme1 leftFD">栏目一</div><div class="itme2 leftFD">栏目二</div></div><!-- 分下侧 --><div class="bottom clearFD"><div class="item3 leftFD">栏目三</div><div class="item4 leftFD">栏目四</div><div class="item5 leftFD">栏目五</div><div class="item6 leftFD">栏目六</div></div></div><!-- 分右侧 --><div class="right rightFD"><div class="item7">栏目七</div><div class="item8">栏目八</div><div class="item9">栏目九</div></div></div></div>
</body>
</html>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词