CSS知识点:清楚浮动

开场白

  我们平时工作中,很容易遇到浮动效果。一个DIV中嵌套多个DIV,左边显示一个DIV,右边显示一个DIV,外层DIV的高度随着内层内容的高度变化。这就是最基本的浮动效果。下图的百度搜索结果就是一个简单的例子。

什么是CSS清除浮动?

  借用W3C的定义。

浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。(其实简单理解就是浮动的元素就是木板浮在水面上一样,和水平面不在一个平面上,因此两个平面的布局不会互相影响,但是水平面的岸边还是会限制木板的活动区域的。)

以下是一个简单的例子,trapper容器没有“包住”浮动的元素。

.trapper{
  background-color: gray;
  border: solid 1px black;
  }

.left{
  float: left;  height:200px;  width:200px;  border:solid 1px red;
  }

.right {
  float: right;  height:200px;  width:200px;  border:solid 1px green;
  }

<div class="trapper">
<div class="left"></div>
<div class="right"></div>
</div>

清除浮动方法

方法一:带clear属性的空元素(简单,兼容性不错,但是增加了没用的html元素,如果浮动元素后边还有相邻的元素,可以给相邻的元素直接加上clear属性。)

在浮动元素后使用一个空元素如<div class="clear"></div>,并在CSS中赋予.clear{clear:both;}属性即可清理浮动。亦可使用<br class="clear" />或<hr class="clear" />来进行清理。

.trapper{
  background-color: gray;
  border: solid 1px black;
  }

.left{
  float: left;  height:200px;  width:200px;  border:solid 1px red;
  }

.right {
  float: right;  height:200px;  width:200px;  border:solid 1px green;
  }

<div class="trapper">
<div class="left"></div>
<div class="right"></div><div class="clear"></div>
</div>

方法二:使用CSS的overflow属性

给浮动元素的容器添加overflow:hidden;或overflow:auto;可以清除浮动,另外在 IE6 中还需要触发 hasLayout ,例如为父元素设置容器宽高或设置 zoom:1。

在添加overflow属性后,浮动元素又回到了容器层,把容器高度撑起,达到了清理浮动的效果。

.trapper{
  background-color: gray;
  border: solid 1px black;  overflow:hidden; *zoom:1;
  }

.left{
  float: left;  height:200px;  width:200px;  border:solid 1px red;
  }

.right {
  float: right;  height:200px;  width:200px;  border:solid 1px green;
  }

<div class="trapper">
<div class="left"></div>
<div class="right"></div>
</div>

方法三:给浮动的元素的容器添加浮动(将容器和内部内容浮动到同一个平面上,这样影响了布局,整体浮动不推荐)

方法四:使用CSS的:after伪元素

结合 :after 伪元素和 IEhack , IEhack 指的是触发 hasLayout。

给浮动元素的容器添加一个clearfix的class,然后给这个class添加一个:after伪元素实现元素末尾添加一个看不见的块元素(Block element)清理浮动。

.trapper{
background-color: gray;
  border: solid 1px black;  overflow:hidden; *zoom:1;
  }

.left{
  float: left;  height:200px;  width:200px;  border:solid 1px red;
  }

.right {
  float: right;  height:200px;  width:200px;  border:solid 1px green;
  }
.clearfix {
  /* 触发 hasLayout */
  zoom: 1;
  }
.clearfix:after{
  content: ".";
  display: block;
  height: 0;
  clear: both;
  visibility: hidden;
  }
<div class="trapper clearfix"><div class="left"></div><div class="right"></div></div>

通过CSS伪元素在容器的内部元素最后添加了一个看不见的点".",并且赋予clear属性来清除浮动。需要注意的是为了IE6和IE7浏览器,要给clearfix这个class添加一条zoom:1;触发haslayout。

推荐使用使用伪元素的方式解决元素浮动问题。

结束语

您有收获吗?

希望我没有浪费您的时间。

谢谢您的耐心阅读。

如有错误或者补充及时更正。

时间: 2024-09-30 04:43:52

CSS知识点:清楚浮动的相关文章

css知识点[email&#160;protected]

1.margin重叠 参考:http://blog.doyoe.com/~posts/css/2013-12-04-margin系列之外边距折叠.md 发生的条件: margin 折叠元素只发生在块元素上: 浮动元素不与其他元素 margin 折叠: 定义了属性overflow且值不为visible(即创建了新的块级格式化上下文)的块元素,不与它的子元素发生margin 折叠: 绝对定位元素的 margin 不与任何 margin 发生折叠. 特殊:根元素的 margin 不与其它任何 marg

css中的浮动以及清除浮动

对于css中的浮动问题,曾经有一段时间我是懵懵懂懂的感觉,对于float这个属性一直是似懂非懂的赶脚,对于这种让我们一直懵懵懂懂的知识点,我们就需要找个时间点,仔仔细细的去将它搞懂,从这个过程中我们也会去复习以前的知识,这是真正会让我们有所提高的一个过程,是所谓温故而知新.那么在学习的过程中也看了很多大神的博客,这里就来总结一下我个人对于float的理解; css的浮动使我们在布局的时候经常会用到的一个属性,在大量的使用过程中,我们可能只是一知半解的去使用,或者使用的时候得到了自己想要的结果就绝

CSS中的浮动和清除浮动,梳理一下!

CSS中的浮动和清除浮动,梳理一下! 第一篇就整理整理CSS中很常见的浮动以及清除浮动的一些方式吧. 浮动到底是什么? 浮动核心就一句话:浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素.请默念3次! 浮动最初设计的目的并没那么多事儿,就只是用来实现文字环绕效果而已,如下所示: 文字环绕效果 但是早期的前端开发者发现:浮动的元素可以设置宽高并且可以内联排列,是介于inline和block之间的一个神奇的存在,在inline-block出来之前,浮动大行其道.直到inline

【转】CSS中的浮动和清除浮动

以下转自<CSS中的浮动和清除浮动,梳理一下!> 浮动到底是什么? 浮动核心就一句话:浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素.请默念3次! 浮动最初设计的目的并没那么多事儿,就只是用来实现文字环绕效果而已,如下所示: 文字环绕效果 但是早期的前端开发者发现:浮动的元素可以设置宽高并且可以内联排列,是介于inline和block之间的一个神奇的存在,在inline-block出来之前,浮动大行其道.直到inline-block出来后,浮动也有它自己独特的使用场景.

【css】清除浮动的几种方式

[css]清除浮动的几种方式 因为浮动框不在普通的文档流中,所以它不占据空间.如下面的代码: 1 .news { 2 background-color:gray; 3 border:1px solid black; 4 } 5 .news img { 6 float:left; 7 } 8 .news p { 9 float:right; 10 } 11 <divclass="news"> 12 <imgsrc="/img/news-pic.jgp"

CSS clear清除浮动

1.CSS中的clear有四个参数: none:允许两边都可以浮动. left:不允许左边有浮动. right:不允许右边有浮动. both(默认):不允许有浮动. 2.一开始在CSS中clear浮动是默认both,也就是说一开始不能有浮动的. 3.使用的案例:假设我清除第三个DIV的浮动 <style type="text/css"> div{ border:1px solid red; float:left; clear:none; } #msg_Div{ width:

这些HTML、CSS知识点,面试和平时开发都需要 No8-No9

系列知识点汇总 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4(知识点:HTML.CSS.盒子模型.内容布局) 这些HTML.CSS知识点,面试和平时开发都需要 No5-No7(知识点:文字设置.设置背景.数据列表) 这些HTML.CSS知识点,面试和平时开发都需要 No8-No9(知识点:媒体操作.构建表单) No8.媒体操作 1.增加图片 (1)img元素:自包含元素,不能封装其他任何元素.正确写法是<img>,而不是<img/>或者<img>&l

CSS基础知识---浮动,定位和盒模型

转载请注明出处! 需要掌握的三个最重要的CSS概念是浮动,定位和盒模型. 盒模型概述: 页面上的每个元素都被看做一个矩形框(元素框or盒模型),这个框由元素内容,内边距,边框和外边距组成. 内边距出现在内容区域的周围,如果为元素添加背景,那么背景就会应用于由内容和内边距组成的区域.添加边框会在内边距的区域外边加一条线.在边框外边是外边距,外边距是透明的,一般用它来控制元素之间的间隔. 内边距,边框,和外边距是可选的,默认值为零.但是许多元素由用户代理样式表设置了外边距和内边距,我们可以将元素的m

这些HTML、CSS知识点,面试和平时开发都需要 No5-No7

系列知识点汇总 这些HTML.CSS知识点,面试和平时开发都需要 No1-No4 这些HTML.CSS知识点,面试和平时开发都需要 No5-No7 No5.文章段落 1.文字属性 文字属性包含font-*和text-*两类. 2.基于font的属性 (1)font-family:字体属性,多个字体之前用逗号隔开.如果第一个字体没找到,则依次找后面的字体.例如: body { font-family: "Helvetica Neue", Helvetica, Arial, sans-se

CSS学习笔记-浮动(float,clear)

float float 属性定义元素在哪个方向浮动.以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动.浮动元素会生成一个块级框,而不论它本身是何种元素.如果浮动非替换元素,则要指定一个明确的宽度:否则,它们会尽可能地窄. 注释:假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止. 属性值: left    元素向左浮动. right   元素向右浮动. none    默认值.元素不浮动,并会显示在其