## 前言
css中的浮动向来是前端入门必备的知识点,也是在面试中都会提及的点,有些人也可以用简单的overflow:hidden来解决浮动带来的显示问题。但作为一名优秀的前端,必须对浮动做到知根知底。
## 浮动的概念
通常为了使块级元素能够水平排列,我们会将需要这样显示的元素设置浮动来实现需要的效果。常用的浮动有左浮动,右浮动,以及none.对应的css 属性为:float:left;right;none.
## 注意事项
1. 使用浮动的元素必须为块级元素,对于行级元素以及行内块级设置浮动是没有意义的,因为行级和行内块级本来就是水平排列
注意浮动的顺序,如果按照左浮动,会按照文档的代码顺序从左到右显示,如果为右浮动,会从右到左,按照自己的设计稿效果,选择正确的浮动方式
1. 使用浮动的块级元素必须设置正确的宽高,如果不设置,块级元素默认为父元素的宽度,即使设置了浮动,视觉效果也是不浮动的。设置正确的宽高后,当同一行放不下最后一个元素时,会放到下一行继续水平排列
设置浮动后,会脱离标准的文档流,需要在浮动结束之后,清除浮动
## 引发问题
1. 父元素盒子模型得不到正确的宽高,导致边框、内边距错误
2. 父元素盒模型不正确导致的相关显示属性,如父元素的背景,根据父元素定位的元素
3. 父元素盒模型不正确导致的父元素之后的元素错位
## 清除浮动
1. 浮动元素能确认高宽的情况下,对父元素的高宽进行设定
2. 设置父元素overflow:hidden或者auto
3. 设置父元素为浮动,也可以重新获取高度
4. 设置父元素的伪元素来实现
5. 清除浮动全局样式
``` css
.clearfloat:after {
display: block;
clear: both;
content: "";
visibility: hidden;
height: 0
}
.clearfloat {
zoom: 1
}
```
6\. 父元素设置宽度之后,设置display:table
7\. 父元素末尾追加br标签 ,内置clear:both
## 总结
综上 ,清除浮动最简单的方式是overflow:hidden(推荐),最官方的写法是写一个全局的清除浮动样式(可能浏览器支持不好)
- 前端入门
- 前端入职须知
- 前端自我定位
- pc与手机页面差别
- 前端书单
- 前端种子计划
- 前端技术栈
- ps
- ps入门阶段
- html
- html入门
- html代码规范
- meta
- table
- iframe
- a标签详解
- image
- html代码审查工具
- h5专题
- h5入门
- h5新增属性
- canvas画布教程
- audio/video
- Geolocation
- Websockets
- Web storage
- Communication
- Web Workers
- requestAnimationFrame
- css
- css入门必学
- css代码规范
- 项目字体规范
- css基本位置布局
- css常见样式命名规则
- css代码优化建议
- css常用样式名
- css选择器攻略
- css盒子模型的理解
- css属性继承与默认值
- css代码审查工具
- css中常见的知识盲区
- css3新特性浅谈
- css新特性了解
- border-radius
- background
- transform
- animation
- white-space
- css常用技术
- 文本两端对齐
- css之浮动解决方案
- css优化建议
- 文本超出省略
- img-sprites
- rem布局教程
- 水平居中&垂直居中
- 固宽&变宽布局
- 宽高固定比例的盒模型
- 样式预处理语言
- less教程
- sass教程
- postcss教程
- js
- javascript入门
- js代码规范
- js基础拓展
- js代码审查工具
- js性能优化
- js基本语句
- 基本运算
- 基本语句语法
- js对象
- es6入门
- obj
- Array
- Date
- String
- Boolean
- Number
- Json
- RegExp
- Math
- function
- jquery入门
- jq核心思想
- jq基本语法
- jq插件库汇总
- js常用技术
- break&continue区别
- js对日期转换
- js控制运动-move.js
- 原生js-cookie语法
- ajax请求后回调
- 表单数据序列化
- zepto
- zepto入门
- 百度touchjs
- js编程
- 插件库
- 功能性插件
- pdfjs
- wdatepicker
- qrcoder
- barcode插件
- photoviewer
- hammer.js
- echarts
- 交互组件
- layerjs
- java
- java入门
- java基本语句
- springMVC
- javaweb
- vm模板引擎
- freemarker
- maven教程
- mySql教程
- flex教程
- flex入门
- git教程
- git入门
- git分支
- git-tag管理
- git注意事项
- git-torise入门
- ide-git插件使用
- web
- web兼容
- web兼容思想
- pc端兼容适配文档
- pc端兼容bug汇总
- ie兼容bug汇总
- 手机兼容bug汇总
- web安全
- jeecms
- web存储
- app/h5组件
- 安卓教程
- ios教程
- 前端教程
- rubikx的教程
- 其他
- artTemplate
- tmod使用
- 跨域问题
- markdown教程
- 常用工具
- postman-api调试
- web常识
- 浏览器ua统计
- ui框架
- easyui
- bootstrap
- 入门推荐
- weui
- sui-pc
- sui-mobile
- layerUi