CSS篇之2. 清除浮动,什么时候需要清除浮动,清除浮动都有哪些方法
2. 清除浮动,什么时候需要清除浮动,清除浮动都有哪些方法 ?
一.什么时候需要清除浮动?
我们对元素进行了浮动(float)时,我们的元素就会脱离文档流,像一只小船一样漂流在文档之上。
在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。
float主要流行与页面布局,然后没有使用后没有清除浮动,就会后患无穷。
知乎上截图:
分析HTML代码结构:
<div class="outer"><div class="div1">1</div><div class="div2">2</div><div class="div3">3</div>
</div>
分析CSS代码样式:
.outer{border: 1px solid #ccc;background: #fc9;color: #fff; margin: 50px auto;padding: 50px;}
.div1{width: 80px;height: 80px;background: red;float: left;}
.div2{width: 80px;height: 80px;background: blue;float: left;}
.div3{width: 80px;height: 80px;background: sienna;float: left;}
这里我没有给最外层的DIV.outer 设置高度,但是我们知道如果它里面的元素不浮动的话,那么这个外层的高是会自动被撑开的。但是当内层元素浮动后,就出现了影响:
1、父盒子的margin受到影响,无法实现左右居中,
2、我没有给父盒子设置高度,浮动后父盒子的高度没有被撑开,图片中撑开的高度是padding带来的效果。
二.清除浮动都有哪些方法 ?
清除(clear)也有4个可能值。最常用的是 both,清楚左右两边的浮动。left 和 right 只能清楚一个方向的浮动。none 是默认值。
方法一:添加新的元素 应用 clear:both;
HTML:
<div class="outer"><div class="div1">1</div><div class="div2">2</div><div class="div3">3</div><div class="clear"></div>
</div>
CSS:
.clear{clear:both; height: 0; line-height: 0; font-size: 0}
效果:
即:
【补充】:
使用空标签清除浮动.
方法二:父级div定义 overflow: auto(注意:是父级div也就是这里的 div.outer)
HTML:
<div class="outer over-flow"> //这里添加了一个class<div class="div1">1</div><div class="div2">2</div><div class="div3">3</div><!--<div class="clear"></div>-->
</div>
CSS:
.over-flow{overflow: auto; zoom: 1; //zoom: 1; 是在处理兼容性问题
}
效果图同上。
原理:使用overflow属性来清除浮动有一点需要注意,overflow属性共有三个属性值:hidden,auto,visible。我们可以使用hiddent和auto值来清除浮动,但切记不能使用visible值,如果使用这个值将无法达到清除浮动效果,其他两个值都可以。
【补充】:
使用overflow属性
此方法有效地解决了通过空标签元素清除浮动而不得不增加无意代码的弊端。使用该方法是只需在需要清除浮动的元素中定义CSS属性:overflow:auto,即可。 overflow:auto;是让高度自适应,zoom:1;是为了兼容IE6,也可以用height:1%;的方式来解决,注意,zoom不符合W3C标准。overflow:hidden也可以实现。overflow:hidden也可以实现。
方法三: 据说是最高大上的方法 :after 方法:(注意:作用于浮动元素的父亲)
先说原理:它就是利用:after和:before来在元素内部插入两个元素块,从而达到清除浮动的效果。其实现原理类似于clear:both方法,只是区别在于:clear在html插入一个div.clear标签,而outer利用其伪类clear:after在元素内部增加一个类似于div.clear的效果。下面来看看其具体的使用方法:
.outer {zoom:1;} /*==for IE6/7 Maxthon2==*/
.outer:after {clear:both;content:'.';display:block;width: 0;height: 0;visibility:hidden;} /*==for FF/chrome/opera/IE8==*/
其中clear:both;指清除所有浮动;content: ‘.’; display:block;对于FF/chrome/opera/IE8不能缺少,
其中content()可以取值也可以为空。visibility:hidden;的作用是允许浏览器渲染它,但是不显示出来,这样才能实现清楚浮动。
即:
.outer{border: 1px solid #ccc;background: #fc9;color: #fff; margin: 50px auto;padding: 50px;} .clearfix:after {content:'';display:block;clear:both;visibility:hidden;zoom:1;}
<div class="outer clearfix">
【补充】:
使用after伪对象清除浮动
after伪对象非IE浏览器支持,所以并不影响到IE/WIN浏览器。具体写法可参照以下示例。使用中需注意以下几点。
a、该方法中必须为需要清除浮动元素的伪对象中设置height:0,否则该元素会比实际高出若干像素;
b、content属性是必须的,但其值可以为空,蓝色理想讨论该方法的时候content属性的值设为”.”
再次again:当一个内层元素是浮动的时候,如果没有关闭浮动时,其父元素也就不会再包含这个浮动的内层元素,因为此时浮动元素已经脱离了文档流。也就是为什么外层不能被撑开了!
浮动的特点:
1.浮动的元素,讲向左或者向右浮动,浮动到包围元素的边上,或者上一个浮动元素的边上为止。
2.浮动的元素,不再占用空间,且浮动元素的层级要高于普通元素。
3.浮动的元素,一定是块元素,不管之前是什么元素。
4.如果浮动的元素没有指定宽度的话,浮动后会尽可能变窄,因此浮动元素要指定宽和高。
5.一行的多个元素,要浮动大家一起浮动。
CSS篇之2. 清除浮动,什么时候需要清除浮动,清除浮动都有哪些方法相关推荐
- css为什么要用浮动_css浮动的特性,与浮动带来的影响以及如何清除浮动
块元素在文档流中默认垂直排列,所以多个div从上至下依次排开 如果希望块元素在页面中水平排列,可以使用float来使元素浮动,从而脱离文档流,元素脱离文档流以后,它下边的元素会立即向上移动 css浮动 ...
- [css] 为什么会出现浮动?在什么时候需要清除浮动呢?
[css] 为什么会出现浮动?在什么时候需要清除浮动呢? 因为在 div + css 代替 table 布局之后,利用 float 很容易进行一些自适应的布局,比如双飞燕和圣杯布局.当然,float ...
- 前端之CSS篇(四)——CSS浮动详解
前言:页面布局要学习三大核心,盒子模型,浮动 和定位 . 1.CSS浮动 场景:整个网页的布局 本节需要解决的问题: 为什么需要浮动 浮动的排列特性 3种最常见的布局方式 为什么需要清除浮动 写出至少 ...
- CSS学习(第四天)(浮动,常见网页布局,清除浮动,PS切图)
CSS浮动 1 浮动 1.1传统网页布局的三种方式 1.2 标准流(普通流/文档流) 1.3 为什么需要浮动? 1.3为什么需要浮动? 1.4什么是浮动? 1.5浮动特性(重难点) 1.6 浮动元素经 ...
- 前端计划——面试题总结-CSS篇
前端面试之CSS篇 1.三种基本引入方式 外部样式表 <link rel="stylesheet" type="text/css" href=" ...
- java程序员 css_好程序员Web前端分享前端CSS篇
今天好程序员跟大家分享的文章是CSS篇.Web前端技术由html.css和javascript三大部分构成,而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很 ...
- 2019年6月20日工作总结---CSS篇
1.:webkit-scrollbar 自定义滚动条的样式(缺陷对Firefox和IE不支持) 实例: 属性: ::-webkit-scrollbar 解决了把bar本身的背景.它通常由 ...
- 前端基础知识总结---CSS篇
本部分主要是笔者在复习 CSS 相关知识和一些相关面试题时所做的笔记,如果出现错误,希望大家指出! 目录 1.介绍一下标准的 CSS 的盒子模型?低版本 IE 的盒子模型有什么不同的? 2.CSS 选 ...
- 前端面试题汇总CSS篇
转载自:https://www.cnblogs.com/zhangshuda/p/8465043.html 前端面试题 ----css篇 1.css盒模型有哪些及区别content-box borde ...
最新文章
- 剑指 offer 链表倒数的第k个数
- windows下的MySql实现读写分离
- 信息与数据科学国际会议征文通知
- 取消搜索状态_百度搜索引擎全网推广通常有哪些账户?
- 专业英语笔记:Spring框架
- JDK1.8 IdentityHashMap
- 创业奇才:才3年5000元变600万
- 【GNN】WL-test:GNN 的性能上界
- 安装gid12.0.4linux-x64l后启动报错/liblzma.so.5: no version information available 的解决办法
- android 7相机拍照功能介绍,android7 相机拍照流程
- l455在线清零服务器,爱普生epson l455清零软件官方版
- 让蒲公英路由器支持IPv6
- 硬件知识:视频分配器、画面分割器、矩阵、延长器相关知识介绍
- 最难编程语言排名!不接受反驳!!!
- RT-thread 环境下使用 HASH hwcrypto 配置使用底层硬件HAH库问题记录
- 绕过AppLocker系列之弱路径规则的利用
- 计算机按电源键无法反应,笔记本无法正常开机,按下电源键无任何反应要过一段时间才可以开机...
- 【kali】一款黑客们都在使用的操作系统
- 技术博客变成情感博客了吧
- JavaDay16-P104-P142—二分法查找—String类—常量池—包装—装箱、拆箱—NumberFormatException