浮动 ( float css属性)

  float : left right

Elements are floated horizontally, this means that an element can only be floated left or right, not up or down.

http://www.w3schools.com/css/css_float.asp

浮动可以让元素在容器中尽量向左或者向右push移动, 这样其他元素会围绕浮动元素,

所谓的其他元素就是浮动元素后面的非浮动元素, 浮动影响的对象之后的元素,这个先后是指元素标签位置的先后次序;并不是展示出来的次序,由于浮动的存在,展示出来的次序,可以不是实际元素标签的顺序,例如 有这种代码 (div[float:left] div[float:right] div), 最后一个div的内容显示在 第一个 和 第二个div之间, 给人眼错觉好像是实际上的第三个div看起来是第二个。

The elements after the floating element will flow around it.

The elements before the floating element will not be affected.

浮动最初用作 图片周边 有文字围绕效果,后来普遍为布局使用。

清浮动需求

float元素实际上是脱离了HTML文档流,浮动元素的高度是不被外层容器元素计算的,

如果浮动元素仅仅被后续的元素围绕了高度的一半,这个时候添加一个新div块, 要求这个新块能够 在浮动元素的下方一行显示,

按照浮动的实现效果, 新添加的 div块为了实现围绕效果, 还是会从浮动元素的一半开始显示新添加的div。

很多布局情况,要求多个块能够按照float的push排列,同时又能够让float元素像正常的文档元素一样,可以在文档流中被计算高度。

要是实现这个效果,需要引入清浮动  clear。

清浮动理解

clear : left right both

清浮动,就是把之前元素的浮动状态删除,按照正常文档流元素高度来解析之前元素。

w3.org官方的解释是:「元素盒子的边不能和前面的浮动元素相邻」。

The clear property indicates which sides of an element's box(es) may not be adjacent to an earlier floating box.

http://zzstudy.offcn.com/archives/14575 这个解释的有点意思, float元素,可以理解为边框围绕, 则元素盒子的边必然与浮动元素相邻,清浮动,就是要破除这种相邻, 跟浮动元素不相邻,换行显示。

left -- 是指清浮动元素的 左边框 不能与前面的 浮动元素的边相邻。

right -- 是指清浮动元素的 右边框 不能与前面的 浮动元素的边相邻。

both -- 是指清浮动元素的 左边框 和 右边框 不能与前面的 浮动元素的边相邻。

注释: 这里的左右边是指 清浮动 元素 的 左右边框,  不是指 此元素标签位置 的 左边(前边) 和 右边(后边)

记住所有清浮动元素, 要清理的浮动属性, 是针对此元素标签位置前面的浮动标签元素。

上面说的不能相邻是总体上说法,但是怎样不能相邻,看w3c自己的即使最透彻:

http://www.w3.org/wiki/CSS/Properties/clear

  • left
    Requires that the top border edge of the box be
    below the bottom outer edge of any left-floating boxes that resulted
    from elements earlier in the source document.
  • right
    Requires that the top border edge of the box
    be below the bottom outer edge of any right-floating boxes that resulted
    from elements earlier in the source document.
    • both
      Requires that the top border edge of the box be
      below the bottom outer edge of any right-floating and left-floating
      boxes that resulted from elements earlier in the source document.

W3C清浮动例子

下面网站提供的一个清浮动,分两行显示图片,每一行都向左对齐。

http://www.w3schools.com/css/tryit.asp?filename=trycss_float_clear

<!DOCTYPE html>
<html>
<head>
<style>
.thumbnail {
float: left;
width: 110px;
height: 90px;
margin: 5px;
} .text_line {
clear: left;
margin-bottom: 2px;
}
</style>
</head>
<body> <h3>Image Gallery</h3>
<p>Try to resize the browser-window to see what happens when the images does not have enough room.</p>
<img class="thumbnail" src="klematis_small.jpg" width="107" height="90">
<img class="thumbnail" src="klematis2_small.jpg" width="107" height="80">
<img class="thumbnail" src="klematis3_small.jpg" width="116" height="90">
<img class="thumbnail" src="klematis4_small.jpg" width="120" height="90"> <h3 class="text_line">Second row</h3>
<img class="thumbnail" src="klematis_small.jpg" width="107" height="90">
<img class="thumbnail" src="klematis2_small.jpg" width="107" height="80">
<img class="thumbnail" src="klematis3_small.jpg" width="116" height="90">
<img class="thumbnail" src="klematis4_small.jpg" width="120" height="90">
<div>iiiiiii</div>
</body>
</html>
 

自研clear清左右例子

前面设置了两个浮动块div,左右浮动,  第三个div设置clear各种值(left right both none), 以观察各种情况下的清浮动情况。

同时为了能看出,清左 和 清右 的效果, 将第一个浮动div 设置高度为 100px, 第二个浮动div高度设置为 200px。

建议亲自运行下, 可容易看出 clear left 和 rigt 效果。

<html>
<head>
<!--<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>-->
<style>
.clear {
clear: both;
}
</style>
</head>
<body> <h1>left + left => clear none</h1>
<div style="float:left;width:200px;height:100px;background:green">这个是第1列,</div>
<div style="float:left;width:400px;height:200px;background:grey">这个是第2列,</div>
<div style="text-align:left; background:yellow; clear:none">这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。</div>
<div class="clear"></div> <h1>left + left => clear left</h1>
<div style="float:left;width:200px;height:100px;background:green">这个是第1列,</div>
<div style="float:left;width:400px;height:200px;background:grey">这个是第2列,</div>
<div style="text-align:left; background:yellow; clear:left">这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。</div>
<div class="clear"></div> <h1>rihgt + right => clear none</h1>
<div style="float:right;width:200px;height:100px;background:green">这个是第1列,</div>
<div style="float:right;width:400px;height:200px;background:grey">这个是第2列,</div>
<div style="text-align:left; background:yellow; clear:none">这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。</div>
<div class="clear"></div> <h1>rihgt + right => clear right</h1>
<div style="float:right;width:200px;height:100px;background:green">这个是第1列,</div>
<div style="float:right;width:400px;height:200px;background:grey">这个是第2列,</div>
<div style="text-align:left; background:yellow; clear:right">这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。</div>
<div class="clear"></div> <h1>left + right => clear none</h1>
<div style="float:left;width:200px;height:100px;background:green">这个是第1列,</div>
<div style="float:right;width:400px;height:200px;background:grey">这个是第2列,</div>
<div style="text-align:left; background:yellow; clear:none">这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。</div>
<div class="clear"></div> <h1>left + right => clear left</h1>
<div style="float:left;width:200px;height:100px;background:green">这个是第1列,</div>
<div style="float:right;width:400px;height:200px;background:grey">这个是第2列,</div>
<div style="text-align:left; background:yellow; clear:left">这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。</div>
<div class="clear"></div> <h1>left + right => clear right</h1>
<div style="float:left;width:200px;height:100px;background:green">这个是第1列,</div>
<div style="float:right;width:400px;height:200px;background:grey">这个是第2列,</div>
<div style="text-align:left; background:yellow; clear:right">这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。</div>
<div class="clear"></div> <h1>left + right => clear both</h1>
<div style="float:left;width:200px;height:100px;background:green">这个是第1列,</div>
<div style="float:right;width:400px;height:200px;background:grey">这个是第2列,</div>
<div style="text-align:left; background:yellow; clear:both">这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。这个是第3列。</div>
<div class="clear"></div>
</body>
</html>

CSS浮动与清浮动的更多相关文章

  1. 关于浮动与清浮动 float

    浮动常见的几种属性值 float {left;  right;  none;  } 主要是定义元素朝哪个方向浮动: 元素浮动后的特性 在一行显示,父级的宽度放不下,自己折行: 支持宽高等样式: 不设置 ...

  2. web前端浮动、清浮动问题

    浮动的问题如下一一列举如有考虑不周的欢迎欢迎大家补充: 1.浮动,兼容性问题3px的问题,双边距的问题 在平时工作的过程中,解决3px的问题,一般都是初始化*{margin:0;padding:0px ...

  3. day44--浮动和清浮动基本小结

    浮动和清浮动 一:浮动 浮动元素会生成一个块级框,而不论它本身是何种元素. 关于浮动的两个特点: 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 由于浮动框不在文档的普 ...

  4. web开发:清浮动

    一.display总结 二.overflow 三.浮动布局 四.清浮动 五.清浮动的方式 一.display总结 <!DOCTYPE html> <html> <head ...

  5. CSS清浮动处理(Clear与BFC)

    在CSS布局中float属性经常会被用到,但使用float属性后会使其在普通流中脱离父容器,让人很苦恼 1 浮动带来布局的便利,却也带来了新问题 <!doctype html> <h ...

  6. css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?一起来$('.float')

    一.抛一块问题砖(display: block)先看现象: 分析HTML代码结构: <div class="outer">     <div class=&quo ...

  7. 【转】css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?

    摘要: css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?     一.抛一块问题砖(display: block)先看现象: 分析HTML代码结构: <div class ...

  8. css清浮动与动态计算元素宽度

    css常用清浮动写法 /*清除浮动*/| .clears:after{ display: block; content: ''; clear: both; height: ; visibility: ...

  9. CSS清浮动办法

    骨灰级解决办法: .clear{clear:both;height:0;overflow:hidden;} 上诉办法是在需要清除浮动的地方加个div.clear或者br.clear,我们知道这样能解决 ...

随机推荐

  1. snprintf/strncpy/strlcpy速度测试

    速度测试代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <un ...

  2. P4factory <Towards a better behavioral model: bmv2>

    尝试使用bmv2行为模型来跑p4实例. 原文说明: We have released a new version of the behavioral model, written in C++. So ...

  3. PHP 防止表单重复提交

    原理是:首先在表单页生成一个 随机不重复的 token(可以利用时间戳),把 token 的值分别存入 session 和 表单的隐藏域:当提交表单的时候,在接收页对比传递过来的 token 和ses ...

  4. redis hash怎么用

    public static void testHsh() { System.out.println("==Hash=="); Jedis jedis = RedisUtil.get ...

  5. 在xml中使用图片资源时,设置重复图片而不是拉伸平铺

    直接把图片放入xml中时,默认会拉伸图片填充.而用下面的方法则可以实现重复图片 <?xml version="1.0" encoding="utf-8"? ...

  6. 设计模式学习系列6 原型模式(prototype)

    原型模式(prototype)用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.允许一个对象再创建另外一个新对象的时候根本无需知道任何创建细节,只需要请求圆形对象的copy函数皆可. 1 ...

  7. 用宏 x y z,找出最大值最小值

    #define max(x,y,z) ((x)>(y)?(x):(y))>(z)?((x)>(y)?(x):(y)):(z) #define min(x,y,z) ((x)<( ...

  8. Heterogeneous System Architecture

    https://en.wikipedia.org/wiki/Heterogeneous_System_Architecture Steps performed when offloading calc ...

  9. access violation at address General protection fault

    https://en.wikipedia.org/wiki/General_protection_fault In memory errors, the faulting program access ...

  10. php面向对象之__toString()

    似曾相识,在php面向对象编程之魔术方法__set,曾经介绍了什么是魔术方法,这一章又介绍一个魔术方法__tostring(). __toString()是快速获取对象的字符串信息的便捷方式,似乎魔术 ...