float的设计初衷:

仅仅是为了实现文字环绕效果

float的感性认知:

  1. 包裹性:

    1. 收缩:元素应用了float后,宽度收缩,紧紧地包裹住内容(即元素的宽度收缩到元素内的内容的宽度大小
    2. 坚挺:原来没有高度,但元素应用了float后,元素的高度突然扩展到内容的高度大小
    3. 隔绝:元素应用了float后,盒子里面的内容发生了任何事情,都与盒子外的内容无关(BFC)
  2. 破坏性:
    1. 子元素应用了float后,父容器塌陷:父容器的高度变为0

tips: 具有包裹性(BFC特性)的其他属性:

display: inline-block/table-cell

position: absolute/fixed/sticky

overflow: hidden/scroll

具有破坏性的其他属性:

display: none

position: absolute/fixed/sticky

清除float对其他元素所带来的影响:

  1. float元素底部插入一个带有 clear: both; 属性的元素

    1. 底部放置一个HTML block水平元素 -
    2. CSS after(IE8+)伪元素底部生成 - .clearfix:after{ clear: both; }
  2. 父元素BFC化(IE8+)或 haslayout(IE6/7)

BFC/haslayout的通常声明

  1. float: left/right
  2. position: absolute/fixed
  3. overflow: hidden/scroll(IE7+)
  4. display: inline-block/table-cell(IE8+)
  5. width/height/zoom: 1/...(IE6/7)

综上,IE8以上浏览器使用:

.clearfix:after {
content: '';
display: block;
height: 0;
overflow: hidden;
clear: both;
} .clearfix {
*zoom: 1;
}
.clearfix:after {
content: '';
display: block;
height: 0;
overflow: hidden;
clear: both;
} .clearfix {
*zoom: 1;
}

切记,.clearfix 只需应用在浮动元素的父级元素上 浮动的特性:

  1. 元素block块状化(砖头化)
  2. 破坏性造成的紧密排列特性(去空格化)

智能化自适应布局

<div class="container"><a href="#" class="left"><img src="url"/></a>
<div class="right">很多其他内容</div>
</div>
.container {
width: 600px;
margin: auto;
} .left {
float: left;
margin-right: 20px;
} .right {
display: table-cell;
*display: inline-block;
width: 2000px;
*width: auto;
}

深入理解系列之 float的更多相关文章

  1. C 标准库系列之float.h

    float.h 内部主要包含了一系列的浮点数宏.指明可移植程序必要的常量:浮点数格式一般为Spxbe;其中S表示+-:p表示底数.b表示基数如2.8.10.16等进制,e为指数标识E或e: 在一般情况 ...

  2. 深入理解和应用Float属性

    一.Float的特性 1. 应用于文字围绕图片 2. 创建一个块级框 3. 多列浮动布局 4. 浮动元素的宽度.高度自适应,但可以设置其值. 二.核心解决的问题 文字围绕图片:img标签与多个文本标签 ...

  3. 深入理解css之float

    1.float的历史 float的设计的初衷:文字环绕效果 2.包裹与破坏 增强浮动的感性认知 包裹:1.收缩 2.坚挺 3.隔绝 里面的布局和外面一点关系都没有 包裹的特性就是BFC block f ...

  4. JavaScript深入理解系列:call与apply

    定义 call和apply:函数调动call()方法在执行的时候,函数的里面的this会指向第一个参数值,除第一个参数值后面的若干支都是传进该函数,简而言之就是改变函数运行时的this指向. 使用示例 ...

  5. 【C#加深理解系列】(二)序列化

    什么是序列化 序列化,它又称串行化,是.NET运行时环境用来支持用户定义类型的流化的机制.序列化就是把一个对象保存到一个文件或数据库字段中去,反序列化就是在适当的时候把这个文件再转化成原来的对象使用. ...

  6. 【C#加深理解系列】(一)反射

    什么是反射 反射是.NET中的重要机制,通过反射,可以在运行时获得程序或程序集中每一个类型(包括类.结构.委托.接口和枚举等)的成员和成员的信息.有了反射,即可对每一个类型了如指掌.另外我还可以直接创 ...

  7. JS深入理解系列(一):编写高质量代码

    在for循环中,你可以循环取得数组或是数组类似对象的值,譬如arguments和HTMLCollection对象.通常的循环形式如下: // 次佳的循环for (var i = 0; i < m ...

  8. 分享一个tom大叔的js 深入理解系列 (有助于提升)

    http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html#3620172

  9. 转载爱哥自定义View系列--Canvas详解

    上面所罗列出来的各种drawXXX方法就是Canvas中定义好的能画什么的方法(drawPaint除外),除了各种基本型比如矩形圆形椭圆直曲线外Canvas也能直接让我们绘制各种图片以及颜色等等,但是 ...

随机推荐

  1. .NET基础 (12)时间的操作System.DateTime

    时间的操作System.DateTime1 DateTime如何存储时间2 如何在DateTime对象和字符串对象之间进行转换3 什么是UTC时间,如何转换到UTC时间 时间的操作System.Dat ...

  2. java并发编程实战:第十二章---并发程序的测试

    并发程序中潜在错误的发生并不具有确定性,而是随机的. 安全性测试:通常会采用测试不变性条件的形式,即判断某个类的行为是否与其规范保持一致 活跃性测试:进展测试和无进展测试两方面,这些都是很难量化的(性 ...

  3. underscore arrays

    1._.first():返回array(数组)的第一个元素.传递 n参数将返回数组中从第一个元素开始的n个元素 _.first = _.head = _.take = function(array, ...

  4. 别做HR最讨厌的求职者

    有些求职者认为自己各方面都与所应聘的职位要求相匹配,因此在被淘汰之后总是特别不解,努力回忆起每个面试环节,却始终找不到原因.是的,也许你真的很优秀,但是你被淘汰了,原因也许并不大,只是你得罪了HR.其 ...

  5. EJB学习手记

    周末两天,看了两天的ejb知识.公司有个转发消息的程序,里面是根据ejb/jms+cdi/event做的,这些之前没接触过. 总而言之,从中学到了很多东西,从ejb到webservice. jboss ...

  6. Jenkins RestAPI调用出现Error 403 No valid crumb was included in the request

    方法一(不推荐): 在jenkins 的Configure Global Security下 , 取消“防止跨站点请求伪造(Prevent Cross Site Request Forgery exp ...

  7. Docker私有仓库Registry实战

    参考: https://www.cnblogs.com/soar1688/p/6828329.html 1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在 ...

  8. Java50道经典习题-程序7 处理字符串

    题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数.分析:利用while语句,条件为输入的字符不为'\n'. import java.util.*; public class Pr ...

  9. python--基础数据类型 set集合

    一.set集合 set集合是python的一个基本数据类型,一般不是很常用.set中的元素是不重复的.无序的.里面的元素必须是可hash的(int, str, tuple, bool) 注意:   s ...

  10. Windows系统设置临时环境变量

    path f:\newtest;%path% ---在Path内容中增加一个新的可执行文件搜索路径 从菜鸟到高手,CMD命令行修改临时环境变量:path