您现在的位置是:网站首页> 编程资料编程资料
深入理解和应用css中Float属性详解css中的floatCSS重要属性之float学习心得(分享)css(display,float,position)深入理解老生常谈css中float的用法CSS使用float属性设置浮动元素的实例教程使用CSS的overflow属性防止float撑开div的方法CSS清除浮动float的三种方法小结
2021-09-04
928人已围观
简介 本篇文章主要介绍了css中Float属性, 顾名思义,就是让设置的标签产生浮动效果,就是脱离原来页面的标准输出流。
一、Float的特性
1. 应用于文字围绕图片
2. 创建一个块级框
3. 多列浮动布局
4. 浮动元素的宽度、高度自适应,但可以设置其值。
二、核心解决的问题
文字围绕图片:img标签与多个文本标签放置在一个容器中,如果img浮动,文本标签会围绕图片。
001文件内容文件内容文内容文件内容
文件内容文件内容文件内容文件内容文件内内容文件内容
文件内容文件内容文件内容文件内容文件内容
文件内容文件内容文件内容文件内容文内容文件内容文件内容p标签文件内容文件内容文件内容文件内容文件内容文容文件内容文件内容文件内容
Div标签文件内容文件内容文件内容文件内容文件内容文件内容文件内容文件内容文件内容文件件内容文件内容文件内容
文件内容文件内容文件内容文件内容文件内容文件内容文件内容文件内容
文件内容文件内容文件内容文件内容文件内容文件内内容文件内容
文件内容文件内容文件内容文件容文件内容文件内容
文件内容文件内容文件内容文件容文件内容文件内容

2.1 这是一个问题
浮动元素与正常元素相邻,且浮动元素与正常元素之间没有清除浮动,此时正常元素会被浮动元素盖住,但包含的内容会围绕浮动元素显示。
001002
001浮动,002没有浮动,但002元素本身被001盖住,但内容却围绕001显示。

三、非核心且主要应用领域
分栏布局:让区块先水平排列,然后超出部分另起一行。
主要特点
1.父级高度塌陷(这也是一个严重的问题)
.wrap{ background:red; padding:10px; width:auto; } .left{ background:gray; width:200px; height:100px; float:left; } .right{ background:yellow; width:100px; height:100px; float:left; } leftright

2.宽、高变成自适应子元素,但宽、高的设置有效
.wrap{ background:red; padding:10px; float:left; } .left{ width:100px; background:gray; } .right:{ width:200px; background:yellow; } leftright

2. 解决高度塌陷的问题
首先我们需要了解BFC和IFC这两人个基本的概念,因为他与浏览器的渲染有着密切的关系。
1.BFC(块级格式化上下文)
他是一个独立渲染的区域,规定区域内部如何布局,且与外部毫不相干,主要规则如下:
1.1 内部的box会垂直方向,一个接一个地放置
1.2 Box垂直方向的距离由margin决定,属于同一个BFC的两个相邻box的Margin会发生重叠
1.3 BFC区域不会与float重叠
.head{ background:pink; margin: 20px 0px; height:100px; } .wrap{ background:red; padding:10px; margin:20px 0px; overflow:hidden; } .left{ width:100px; background:gray; margin:10px 0px; } .right:{ width:200px; background:yellow; margin:20px 0px; } headleftright

.head与.wrap两个box之间上下各设置有20px的外边距,但发生了重叠;
.head与.left两个之间,.head有20px的外边距,.left有10px的外边距,没有发生重叠,因为.wrap使其创建了BFC(overflow:hidden)。
1.4 每个box的margin 左边,与包含border box的左边相接触(右边一样),浮动也是如此
2. IFC(行级格式化上下文)
框从包含块的顶部开始,一个接一个水平放置。水平方向上的外边距、边框、内边距所占空间都放在一起(display为inline、inline-block;元素本身具有inline特性的元素都具体以下特征)。规则如下:
2.1 不能指定宽高
2.2 Margin、Padding、border垂直方向的无效
2.3 行框的左边紧贴包含块的左边,而行框的右边紧贴其包含框的右边,而浮动块可以插入在包含块边缘与行框之间。
2.4 行内框高度由line-height决定。
此节例子可以参考display章节的inline元素。
3. 解决方案
主要根据BFC的原理实现,因为BFC的渲染的是整块区域,也就会计算出宽、高。这也是传说中的清除浮动的方案
3.1 父容器创建BFC方法
3.1.1 创建BFC的方法
a) Float除了none以外的取值;
b) Overflow除了visible以外的值;
c) Display值为table-cell、table-caption、inline-block、flex、inline-flex等
d) Position值为absloute、fixed
e) Fieldset元素
3.1.2 清除浮动
a) Float、overflow、display三种方式都可以清除浮动,但position、fieldset虽然创建了bfc但不可以清除浮动(也就是不能解决高度塌陷的问题)。主要原因为:position、fieldset都需要子元素来撑开父容器的高度,但子元素浮动后又不存在高度,所以失效。
b) Float、overflow、display示例代码:
.wrap{ background: gray; padding: 10px; overflow: auto; } .left, .right{ background: red; float: left; width: 200px; height: 100px; } .right{ background: yellow; } .footer{ background: pink; }leftright

3.1.3 最后一个子元素clear:both
利用clear:both触发父容器重新计算高度的原理实现,示例代码如下:
.wrap{ background: gray; padding: 10px; } .left, .right{ background: red; float: left; width: 200px; height: 100px; } .right{ background: yellow; } .footer{ background: pink; } .clear{ clear: both; zoom: 1; } leftright
3.1.4 After添加最后一个子元素
利用css的:after伪元素实现,动态插入元素并清除浮动:
.wrap{ background: gray; padding: 10px; } .wrap:after{ content: ''; display: block; overflow: hidden; clear: both; } .left, .right{ background: red; float: left; width: 200px; height: 100px; } .right{ background: yellow; } .footer{ background: pink; } leftright
4. 总结
1. 利用bfc方式清除浮动,简单、浏览器支持良好,但在IE6-版本支持存在问题。但是存在以下局限性,要适环境而用:
a) Overflow方式:滚动条会被隐藏,如果子内容超高则存在显示不全的问题;
b) Float方式:让父容器浮动,那么就存在对父容器同辈元素的影响;
c) Dipslay方式:让父容器变为table或者flex等,都存在不明确的影响,大家都不推荐使用。
2. 最佳解决方案:利用:after添加一个伪元素并给予clear:both和zoom:1来实现清除浮动,兼容性好,对环境影响最小。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- 纯CSS实现3D按钮效果实例代码基于CSS Bootstrap超酷3D按钮特效源码CSS3实现扁平化风格3D按钮鼠标悬停按钮动画过渡特效源码 CSS3实现的支持单按钮和按钮组3D按钮效果源码纯CSS3实现简易3D按钮可配置背景颜色纯CSS3实现的3D开机按钮附有阴影以及光泽jquery+css3实现无图片的超帅3D按钮效果jQuery+CSS利用阴影实现的超酷3D按钮和文字特效
- 利用css代码实现纸飞机效果实例源码利用CSS实现书签效果实例源码纯css3实现的圆形从中心向四周扩散动画效果源码使用CSS3实现一个3D相册效果实例纯CSS3实现鼠标悬停卡片翻转切换特效源码CSS3实现文字波浪线效果示例代码CSS3 2D模拟实现摩天轮旋转效果css3基于svg绘制的唐老鸭图片样式效果源码CSS3实现同时执行倾斜和旋转的动画效果CSS3实现个性可爱的甜品店动画幻灯片切换特效源码CSS3点击按钮实现背景渐变动画效果
- 用CSS属性transparent实现各种三角形示例代码 css 中的background:transparent到底是什么意思有什么作用利用css绘制三角形的方法及拓展CSS3 画基本图形,圆形、椭圆形、三角形等DIV+CSS实现带三角箭头的提示框 用CSS制作三角形和按钮的简单实例CSS仿网易首页的头部菜单栏按钮和三角形制作方法利用CSS伪元素创建带三角形的提示框的实现方法纯CSS绘制三角形箭头图案技术解析Html+CSS绘制三角形图标使用CSS实现小三角形效果【附实例】
- 利用CSS实现书签效果实例源码CSS3+DIV实现漂亮的动画彩色标签纯JS和CSS3炫酷桌面便签贴纸特效源码CSS基础教程十九之CSS图文混排,图像签名,多图拼接和图片特效 纯CSS实现Tab切换标签效果代码用CSS中的map标签制作单图多区域点击的示例HTML5 SVG和CSS3实现的表单浮动标签特效源码css3基于svg实现的地球旋转动画特效源码用CSS设定一个元素半透明Css3新特性应用之视觉效果实例纯css3实现的圆形从中心向四周扩散动画效果源码
- 详解CSS3浏览器兼容关于老式浏览器兼容HTML5和CSS3的问题css3强大的动画效果animate使用说明及浏览器兼容介绍
- 用CSS设定一个元素半透明css实现背景半透明文字不透明的效果示例纯css实现背景图片半透明内容不透明的方法利用CSS3制作简单的3d半透明立方体图片展示css3实现的半透明遮罩lightbox效果源码纯CSS实现多级半透明效果菜单代码 纯CSS实现鼠标放上滑动出半透明效果的文字说明(新手小白 必看)
- Css3新特性应用之视觉效果实例详解CSS3阴影 box-shadow的使用和技巧总结 5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)CSS3圆角边框和边界图片效果实例 CSS3实现翘边的阴影效果的代码示例详解CSS3的图层阴影和文字阴影效果使用详解CSS3的box-shadow属性制作边框阴影效果的方法CSS3实现曲线阴影和翘边阴影CSS3实现千变万化的文字阴影text-shadow效果设计
- 使用CSS3 制作一个material-design 风格登录界面实例纯CSS3实现简洁Material Design风格用户登录界面特效源码
- CSS布局奇淫技巧之--各种居中总结 css让容器水平垂直居中的7种方式CSS设置文字图片垂直居中的方法总结CSS水平居中总结(新手必看篇)浅谈css处理水平居中的问题关于css 行元素和块元素 相互转换 居中浅谈css元素居中CSS设置DIV垂直居中的N种方法 兼容IE浏览器 CSS文本和div垂直居中方法总结 不固定宽度和高度的情况下CSS调整div居中的方法总结CSS 实现垂直居中的几种方法(必看)
- Css3新特性应用之形状总结纯css3实现的网页左上角扇形状导航效果源码CSS3实现的各种形状的3D立体按钮鼠标滑过带有动态效果

