您现在的位置是:网站首页> 编程资料编程资料
浅谈CSS浮动的特性Css实现清除浮动的方法汇总深入理解CSS overflow:hidden——溢出,坍塌,清除浮动CSS清除浮动方法大全(小结)CSS3 清除浮动的方法示例深入理解css布局之定位与浮动CSS实现元素浮动和清除浮动的方法
2021-09-04
1062人已围观
简介 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。这篇文章主要介绍了浅谈CSS浮动的特性,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本文介绍了CSS浮动的特性,分享给大家,顺便给自己留个笔记
浮动具有以下特性:
- 盖不住的文本
- 浮动元素后面不是块级元素,后面的元素将会和它并排(除非设置了元素的宽度,并且屏幕放不下时将会换行)
- 浮动元素的上一个元素如果没有浮动,浮动只在当前行浮动;当浮动遇到浮动,它们将在一行排序,除非没有位置了
- 当元素设置定位值为absolute、fixed时,浮动将被忽略
- float引起父元素高度塌陷
- 浮动元素会被后一个元素的margin-top影响
盖不住的文本
item1item2

可以看到,item2的div除了文本,其他的内容都看不见了,因为它跑到item1下面了。为什么文字不会被浮动的元素盖住呢?因为浮动的本质就是用来实现文字环绕的。
从上面也可以得出:浮动元素后面的块级元素会占据浮动元素的位置,并且浮动元素总是在标准流元素上面。
浮动元素后面不是块级元素,后面的元素将会和它并排(除非设置了元素的宽度,并且屏幕放不下时将不会换行)
item1item2

浮动元素的上一个元素如果没有浮动,浮动只在当前行浮动;当浮动遇到浮动,它们将在一行排序,除非没有位置了
item1item2item3

item1item2item3item4

可以设置width为百分比来实现自适应
div{ width:25%; height:100px; float: left; }
当元素设置定位值为absolute、fixed时,浮动将被忽略
浮动遇上定位

行内元素使用浮动以后生成一个块框,因此它就可以使用width,height,margin,padding等属性了
item1item2

float引起父元素高度塌陷
在网页设计中,很常见的一种情况是给内容一个div作为包裹容器,而这个包裹容器不设置高度,而是让里面的内容撑开包裹容器的高度。如果不给子元素设置浮动的话,并不会出现什么问题,而一旦给子元素设置了浮动,父元素会无法自适应浮动元素的高度,会出现父元素高度为0,从而背景色什么的都不能展示了。原因是:
因为没有预先设置div高度,所以div高度由其包含的子元素高度决定。而浮动脱离文档流,所以子元素并不会被计算高度。此时的div中,相当于div中子元素高度为0,所以发生了父元素高度塌陷现象。

解决办法,
1.给父元素增加“overflow:hidden"
当然也可以是"overflow:auto"。但为了兼容IE最好用overflow:hidden。
.box{ overflow:hidden; }那么为什么“overflow:hidden"会解决这个问题呢?
是因为“overflow:hidden”会触发BFC,BFC反过来决定了"height:auto"是如何计算的
,即计算BFC的高度时,浮动元素也参与计算,因此此时父元素会自适应浮动元素的高度。
所以呢,也可以设置"display:inline-block"、"position:absolute"、"float:left"来解决父元素高度坍塌的问题。因为凡是能创建一个BFC,就能达到包裹浮动子元素的效果。因此网上都说成“BFC能包裹浮动元素”.
2.在父元素内容的后面或者前面增加伪元素+清除浮动
可以给父元素的内容添加一个伪元素,可以用::before或者::after,然后内容为空,这样就不会占据位置,最后为伪元素加上“clear:both"来清除浮动。

为什么这样可以呢?
弄清原因需要知道两点:一是伪元素的实际作用,二是css的清除浮动(clear)只能影响使用清除的元素本身,不能影响其他元素,并且清除浮动可以理解为打破横向排列。
首先需要搞清除::after和::before起的作用,它们不是在一个元素的后面或者前面插入一个伪元素,而是会在元素内容后面或者前面插入一个伪元素(是在元素里面),之前我一直以为:before和:after伪元素 插入的内容会被注入到目标元素的前或后注入,其实注入的内容将是有关联的目标元素的子元素,但它会被置于这个元素的任何内容的“前”或“后”。我们来举个例子,可以看到.box的高度为300px,说明两个伪元素已经插入到.box内容里了。

综上,所以我们常用下列方式来清除浮动
.box::after{ content:''; display:block; clear:both; } 或者 .box::before{ content:''; display:block; clear:both; } 或者 .box::before,.box::after{ content:''; display:block; clear:both; } //::before和::after必须配合content属性来使用,content用来定义插入的内容,content必须有值,至少是空。默认情况下,伪类元素的display是默认值inline,可以通过设置display:block来改变其显示。在父元素的内容前后插入一个伪元素,content为空可以保证不占据位置(高度为0)。"clear:both"可以清除父元素左右的浮动,导致.box::before和.box::after遇到浮动元素会换行,从而会撑开高度,父元素会自适应这个高度从而不会出现高度坍陷。
其他解决高度坍塌的方法都是基于这两个思想的,一个是触发BFC,一个是添加元素+清除浮动(clear)。
浮动元素会被后一个元素的margin-top影响
div1div2

可以看到第一个div也跟着下来了,解决办法是给后一个元素设置clear,此时后一个元素的margin-top将无效
div1div2

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- 前端应该掌握的CSS实现多列等高布局技巧css设置多列等高布局的方法示例利用CSS3的flexbox实现水平垂直居中与三列等高布局浅析CSS等高布局的6种方式用CSS实现三列DIV等高布局以传达更好的视觉效果多列等高的CSS实现代码CSS 三栏等高布局实现方法CSS实例:CSS实现的等高网页布局CSS实例:三列等高布局-CSS教程-网页制作-网页教学网css多种方式实现等高布局的示例代码
- 使用CSS和Bootstrap图标制作上下跳动的指示箭头动画效果纯CSS制作各种各样的网页图标(三角形、暂停按钮、下载箭头、加号等)CSS制作箭头图标代码(圆,三角形,椭圆) css实现的交互小三角箭头图标纯CSS实现箭头、气泡让提示功能具有三角形图标CSS多级数字序号的目录列表(2.2.1. 2.2.2 列表序号)GitHub倡导的CSS编写风格及文件目录部署指南完美解决调用上级目录中的css样式文件的路径问题CSS拾遗之箭头,目录,图标的实现代码
- 纯HTML和CSS实现JD轮播图效果HTML5轮播图全代码
- CSS3 清除浮动的方法示例css浮动 float属性详解CSS实现元素浮动和清除浮动的方法纯CSS3+SVG实现的机器人悬浮动画效果源码html/css中float浮动的用法实例详解Css实现清除浮动的方法汇总什么是BFC? CSS 使用伪元素清除浮动的方法CSS使用placeholder-shown伪类实现输入框浮动文字效果CSS 清除浮动与BFC的方法
- CSS3之transition实现下划线的示例代码css3 中translate和transition的使用方法结合 CSS3 transition transform 实现简单的跑马灯效果的示例详解css3 Transition属性(平滑过渡菜单栏案例)CSS3 transition 实现通知消息轮播条
- CSS3实现可翻转的hover效果CSS3实现伪类hover离开时平滑过渡效果示例CSS3鼠标hover图片遮罩层文字动画特效5种纯CSS3鼠标hover按钮动画特效源码CSS3制作hover下划线动画16种基于css3 Bootstrap图片hover悬停遮罩效果jQuery+CSS3实现的遮罩图片hover翻转效果源码css3实现图片遮罩效果鼠标hover以后出现文字CSS3实现的鼠标经过按钮后图标翻转特效源码纯CSS3 3D魔方翻转动画特效源码纯css3实现的鼠标滑过图片左右3d翻转效果源码
- CSS实现精灵图与字体图标纯CSS3实现带有字体图标效果的灰白色下拉网站导航css设置矢量图字体图标的方法(图解)让我来教你使用css中的字体图标的方法
- css实现背景半透明文字不透明的效果示例纯css实现背景图片半透明内容不透明的方法利用CSS3制作简单的3d半透明立方体图片展示用CSS设定一个元素半透明css3实现的半透明遮罩lightbox效果源码纯CSS实现多级半透明效果菜单代码 纯CSS实现鼠标放上滑动出半透明效果的文字说明(新手小白 必看)
- CSS3实现多样的边框效果css3实现六边形边框的实例代码CSS3径向渐变radial-gradient实现波浪边框和内倒角的方法CSS3+SVG实现的文字边框线条流动动画特效源码css3 边框、背景、文本效果的实现代码纯CSS3实现的鼠标悬停文字线条边框动画特效源码CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集CSS3 边框效果
- 纯CSS实现的大型下拉菜单的示例代码js+css3制作下拉城市菜单多选代码CSS中的导航栏和下拉菜单的实现HTML+CSS实现下拉菜单的实现纯CSS实现下拉菜单的示例代码纯css3制作鼠标悬停波浪形状弹性下拉菜单特效源码纯CSS+HTML大型下拉菜单特效HTML+CSS实现简单下拉菜单效果利用纯css做一个下拉菜单功能的示例代码
