关于清除浮动与闭合浮动

   在给HTML添加样式的构成中,css是必不可少的的,然而css中有一些功能的实现可以通过不同的方法实现,通过效果查看好像并没有什么不同,那它们之间到底有什么本质区别呢,又有哪些概念被我们无意的忽略或者无视了呢,突然想总结总结这一类的问题,本篇日志是本人对于“清除浮动”的一些想法,欢迎看到此篇朋友们加以改正指导。

   

为什么要清楚浮动

在布局的时候我们经常希望某些内容能够水平排布,水平排布后,由于内部内容不确定,高度不能简单的给一个定值。而如果不给高度,子元素又都浮动了,父盒子就会因为没有子盒子的支撑而塌陷。

1. 清除浮动的方法

其实在根本上来说,清除浮动主要有二个方法: 清除周围的浮动元素(闭合浮动), 清除子元素浮动对父元素的影响(清除浮动)。

但这两种方法可以用不同的方法实现,那我想简单介绍一下他们的利弊。

1.1.1. 额外标签法

原理:单独使用一个标签加上clear:both跑到浮动元素下面,从而消除子盒子浮动造成的父盒子塌陷。

典型网站:京东

优点:通俗易懂,容易掌握

缺点:添加很多无意义的空标签,不符合结构与表现分离的原则,不利于后期维护

1.1.2. 父元素设置overflow:hidden

原理:让父盒子形成BFC,BFC的特性之一就是可以承载浮动元素

优点:不存在结构和语义化问题,代码量极少

缺点:内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素

1.1.3. 单伪元素

.clearfix:after {
    content: "";
    height: 0;
    visibility: hidden;
    overflow: hidden;
    dispaly: block;/*不是inline就行*/
    clear: both;
}
.clearfix {
    *zoom: 1;/*IE67*/
}

1.1.4. 双伪元素

.clearfix:before, .clearfix:after {
    content: "";
    display: table;/*不是inline就行*/
}/*在有该类的元素内部元素的前面和后面添加元素*/

.clearfix:after {
    clear: both;
}/*只要after两侧有浮动元素,after就会跑到最下面,从而撑开带有该类名的父盒子*/

.clearfix {
    *zoom: 1;
} /*用于兼容IE/7/6*/

用display:table是因为display:block伪元素仍然有宽度

加了一个before是为了防止外边距合并。

时间: 2025-01-26 00:10:11

关于清除浮动与闭合浮动的相关文章

清理浮动(闭合浮动)

因为将子元素都设置为浮动后,父元素内部就好像没有东西了,被掏空了,无法被子元素撑起来.所以就会出现塌陷的情况. <!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> .first, .second { float:left; background:red; width:100px; height:50px; margin:10px

清除浮动(闭合浮动)的方法

一.在元素后面添加元素清除浮动 添加空的标签来清除浮动:<div style="clear:both | left | right | none“></div>.出现位置要紧挨着浮动元素.缺点 带来多于标签 添加br标签来清除浮动:<br style="clear:left | right | all"> 出现位置要紧挨着浮动元素,缺点:带来多于的标签 使用伪类元素:after为在其元素后面,.clearfix:after{content:

css清除&amp;闭合浮动

那些年我们一起清除过的浮动   原文地址:http://www.iyunlu.com/view/css-xhtml/55.html 浮动(float),一个我们即爱又恨的属性.爱,因为通过浮动,我们能很方便地布局: 恨,浮动之后遗留下来太多的问题需要解决,特别是IE6-7(以下无特殊说明均指 windows 平台的 IE浏览器).也许很多人都有这样的疑问,浮动从何而来?我们为何要清除浮动?清除浮动的原理是什么?本文将一步一步地深入剖析其中的奥秘,让浮动使用起来更加得心应手. 一.清除浮动 还是

css浮动布局,浮动原理,清除(闭合)浮动方法

css浮动 1.什么是浮动:在我们布局的时用到的一种技术,能够方便我们进行布局,通过让元素浮动,我们可以使元素在水平上左右移动,再通过margin属性调整位置 2.浮动的原理:使当前元素脱离普通流,相当于浮动起来一样,浮动的框可以左右移动,直至它的外边缘遇到包含框或者另一个浮动框的边缘 3.浮动的生成:使用css属性float:left/right/none 左浮动/右浮动/不浮动(默认) 4.浮动的影响: 不会影响未浮动的块级元素布局,但是会影响内联元素的布局 浮动后的元素可以设置宽度和高度,

为什么清浮动?清浮动的方法是什么?哪一种是终极方法?

浮动(float),一个我们即爱又恨的属性.爱,因为通过浮动,我们能很方便地布局: 恨,浮动之后遗留下来太多的问题需要解决,特别是IE6-7(以下无特殊说明均指 windows 平台的 IE浏览器).也许很多人都有这样的疑问,浮动从何而来?我们为何要清除浮动?清除浮动的原理是什么?本文将一步一步地深入剖析其中的奥秘,让浮动使用起来更加得心应手. 一.清除浮动 还是 闭合浮动 (Enclosing float orClearing float)? 很多人都已经习惯称之为清除浮动,以前我也一直这么叫

论述浮动的原理和浮动带来的影响,并列举常见的闭合浮动的方法。

1.浮动的原理浮动是让某元素脱离标准流,漂浮在标准流之上的一种布局方式.任何元素被设置为浮动元素后,就表明它是块级元素,拥有宽高属性.2.浮动带来的影响1)影响它的兄弟元素的位置一个元素设置了浮动样式后,会影响它的兄弟元素,至于如何影响,要看它的兄弟元素是块级元素还是内联元素.如果兄弟元素是块级元素,会无视这个浮动元素,即兄弟元素和浮动元素共处同行,浮动元素会覆盖兄弟元素.除非这些 div 设置了宽度,并且父元素的宽度不足以包含它们,这样兄弟元素才会被强制换行:如果兄弟元素是内联元素,则会尽可能

CSS 教程 - 闭合浮动元素

按照CSS规范,浮动元素(floats)会被移出文档流,不会影响到块状盒子的布局而只会影响内联盒子(通常是文本)的排列. 因此当其高度超出包含容器时,一般父容器不会自动伸长以闭合浮动元素. 但是有时我们却需要这种自动闭合行为,具体如何处理呢? 有一种做法就是在父容器内再插入一个额外的标签,并令其清除浮动(clear)以撑大父容器.这种方法浏览器兼容性好,没有什么问题,缺点就是需要额外的(而且通常是无语义的)标签,所以我个人不大喜欢. 后来又有了一种新的方式,使用 :after 伪类动态的嵌入一个

浮动float、浮动影响和清除浮动

普通流(normal flow) 这个单词很多人翻译为 文档流 , 字面翻译 普通流 或者标准流都可以. 前面我们说过,网页布局的核心,就是用CSS来摆放盒子位置.如何把盒子摆放到合适的位置? CSS的定位机制有3种:普通流(标准流).浮动和定位. html语言当中另外一个相当重要的概念----------标准流!或者普通流.普通流实际上就是一个网页内标签元素正常从上到下,从左到右排列顺序的意思,比如块级元素会独占一行,行内元素会按顺序依次前后排列:按照这种大前提的布局排列之下绝对不会出现例外的

闭合浮动

当我们利用CSS中的float来进行浮动定位时,浮动的元素会脱离原来的文档流.容器的高度不能自动变化以适应其中内容的高度的变化,我们希望父容器能包含子容器,因此解决方法为闭合浮动. 如果没有闭合浮动则会出现以下情况: 一: 如果前面的元素浮动了,后面的元素可能会受影响,解决这个问题可以设置后面的元素也浮动 float:left: 二: 如果两个元素都浮动了,但原来包裹这两个元素的父元素高度就会变为0 闭合浮动的四种方法: 法一:为父元素添加overflow:hidden 法二:为父元素添加dis