CSS浮动与清浮动
浮动 ( 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浮动与清浮动的更多相关文章
- 关于浮动与清浮动 float
浮动常见的几种属性值 float {left; right; none; } 主要是定义元素朝哪个方向浮动: 元素浮动后的特性 在一行显示,父级的宽度放不下,自己折行: 支持宽高等样式: 不设置 ...
- web前端浮动、清浮动问题
浮动的问题如下一一列举如有考虑不周的欢迎欢迎大家补充: 1.浮动,兼容性问题3px的问题,双边距的问题 在平时工作的过程中,解决3px的问题,一般都是初始化*{margin:0;padding:0px ...
- day44--浮动和清浮动基本小结
浮动和清浮动 一:浮动 浮动元素会生成一个块级框,而不论它本身是何种元素. 关于浮动的两个特点: 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 由于浮动框不在文档的普 ...
- web开发:清浮动
一.display总结 二.overflow 三.浮动布局 四.清浮动 五.清浮动的方式 一.display总结 <!DOCTYPE html> <html> <head ...
- CSS清浮动处理(Clear与BFC)
在CSS布局中float属性经常会被用到,但使用float属性后会使其在普通流中脱离父容器,让人很苦恼 1 浮动带来布局的便利,却也带来了新问题 <!doctype html> <h ...
- css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?一起来$('.float')
一.抛一块问题砖(display: block)先看现象: 分析HTML代码结构: <div class="outer"> <div class=&quo ...
- 【转】css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?
摘要: css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响? 一.抛一块问题砖(display: block)先看现象: 分析HTML代码结构: <div class ...
- css清浮动与动态计算元素宽度
css常用清浮动写法 /*清除浮动*/| .clears:after{ display: block; content: ''; clear: both; height: ; visibility: ...
- CSS清浮动办法
骨灰级解决办法: .clear{clear:both;height:0;overflow:hidden;} 上诉办法是在需要清除浮动的地方加个div.clear或者br.clear,我们知道这样能解决 ...
随机推荐
- jQuery中添加/改变/移除改变CSS样式例子
在jquery中对于div样式操作我们会使用到CSS() removeClass() addClass()方法来操作了,下面我们就整理了几个例子大家一起来看看吧. CSS()方法改变CSS样式 ...
- web-content和web-info目录问题
1.资源文件只能放在WebContent下面,如 CSS,JS,image等.放在WEB-INF下引用不了. 2.页面放在WEB-INF目录下面,这样可以限制访问,提高安全性.如JSP,html 3. ...
- 使用ngrok
使用ngrok让微信公众平台通过80端口访问本机 首先声明我是用java-tomcat来研究微信公众平台的. 微信公众平台要成为开发者,需要填写接口配置信息中的“URL”和“Token”这两项(参见: ...
- NERDTree 快捷键辑录
参看连接:http://www.cnblogs.com/lexus/archive/2012/11/04/2753187.html http://yang3wei.github.io/blog/201 ...
- jq tab
<div id="outer"> <ul id="tab"> <li class="current">t ...
- jwplayer直播
<div class='container'> <div class='row'> <div class='col-sm-10 col-md-10 col-sm-offs ...
- php四个常用类封装 :MySQL类、 分页类、缩略图类、上传类;;分页例子;
Mysql类 <?php /** * Mysql类 */ class Mysql{ private static $link = null;//数据库连接 /** * 私有的构造方法 */ pr ...
- Android 学习
入门: Android疯狂讲义 http://hukai.me/android-training-course-in-chinese/index.html http://segmentfault.co ...
- pomelo架构概览
pomelo之所以简单易用.功能全面,并且具有高可扩展性.可伸缩性等特点,这与它的技术选型和方案设计是密不可分的.在研究大量游戏引擎设计思路基础上,结合以往游戏开发的经验,确定了pomelo框架的设计 ...
- 【转】java正则表达式
在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu ...