1.float的历史

float的设计的初衷:文字环绕效果

2.包裹与破坏

增强浮动的感性认知

包裹:1.收缩 2.坚挺 3.隔绝 里面的布局和外面一点关系都没有

包裹的特性就是BFC block formatting context-块级格式化上下文

具有包裹性的其他元素

display:inline-block/table-cell

position:absolute/fixed/sticky

破坏:容器被破坏,父级元素的高度坍塌

其他具有破坏性的元素

display:none

position:absolute(近亲)/fixed/sticky

3.浮动是魔鬼——无宽度、无图片、无浮动(新三无)

为何浮动要带来破坏——置之死地而后生

被误解的float

浮动具有破坏性,会让父元素高度塌陷

如何解决让父元素高度塌陷的bug?这个不是bug,而是标准 浮动的原本作用是仅仅是为了实现文字环绕效果

结论:浮动的破坏性知识单纯为了实现文字环绕效果而已,因此 父容器高度塌陷不是bug,特性使然。

4.清除浮动

清除浮动带来的影响

方法一,在脚底插入一个clear:both的元素

方法二,父元素BFC IE8+或haslayoutIE6、7

方法差异 clear,好像在桥梁,在两端搭建一个桥梁,有margin重叠等等特性

BFC像是一个封闭的通道,和外面是隔绝的,保护里面的任何声明不对外面有任何的影响。

clear通常应用形式,1.HTML block水平元素底部走起

2.CSS after伪元素底部走起

不足:第一种div元素-裸露的div元素看起来影响观瞻

第二种在IE6、7中兼容性问题。

BFC/haslayout通常声明

.float:left/right

.position:absolute/fixed

.overflow:hidden/scroll(IE7)

.dispaly:inline-block/table-cell(IE8+)

.width/height/zoome:1/...(IE6\7)

不足:无法“一方通行”,不可能所有元素都浮动,都绝对定位

你我相逢不相识zoom:1,兼容性很好,但是绝大多浏览器是不认识的。

权衡后的策略

.clearfix:after{

content:'';display:block;height:0;overflow:hidden;clar:both;

}

.clearfix{zoom:1;}

更好的方法

.clearfix:after{content:''; dispaly:table;clear:both;}

.clearfix{
zoom:1;}

切勿滥用!clearfix 应用在包含浮动子元素的父级元素上。乱入的haslayout往往会让IE6、7做出出格的事情

浮动也会触发haslayout 所以,浮动在ie6\7下更显魔性

5.float的滥用——不在其职而谋其政

1.元素block块状化

2.破坏性造成的紧密排列特性(去空格化)

6.float与流体布局

文字环绕衍生-单侧固定

width+float

padding-left/margin-left

DOM与显示位置匹配的单侧固定布局

width:100% + float

padding-left/margin-left

width+float+margin负值

智能自适应布局

float

display:table-cell IE+

display:inline-block IE7

float与兼容性

IE7的浮动问题

1.含clear的浮动元素包裹不正确的问题;

2.浮动元素倒数2个莫名垂直间距问题

3.浮动元素最后一个字符重复问题

4.浮动元素楼梯排列问题

5.浮动元素和文本不在同一行的问题

		合理使用浮动,且用且珍惜。。。--------

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

  1. 关于css中float的理解

    感觉css里的float是个非常神奇的东西,神奇之处在于,你知道它是什么意思,但是用的时候总是不知道怎么实现效果.又或者它会很容易地影响到别的元素和属性.所以今天打算尝试一下float的各种设置,看看 ...

  2. 理解CSS

    写在前面的话:对于web开发,html完成网页的structure,css完成网页的presentation,js完成网页的behavior,今天就来说一说css,通过理解一些css的基础概念,能够更 ...

  3. 深入理解css BFC 模型

    如果要深入理解css布局的各种原理,要在重构页面做得心应手的话,那么你就必须先理解这玩意 "BFC" , BlockFormatting Context(块级格式化上下文): 这里 ...

  4. 深入理解CSS中的层叠上下文和层叠顺序(转)

    by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=5115 零.世间的道 ...

  5. 经验分享:CSS浮动(float,clear)通俗讲解

    很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多 ...

  6. 深入理解css中的margin属性

    深入理解css中的margin属性 之前我一直认为margin属性是一个非常简单的属性,但是最近做项目时遇到了一些问题,才发现margin属性还是有一些“坑”的,下面我会介绍margin的基本知识以及 ...

  7. 深入理解CSS网页布局-理论篇

    在CSS网页开发布局中,需要对浮动和定位有深刻的理解才能在开发中游刃有余. 基于此,在博客园中做了本篇总结,这些总结来自实践经验和阅读一些书籍后的理解总结,主要内容为浮动,清除浮动,定位. (可点击屏 ...

  8. 深入理解CSS中的层叠上下文和层叠顺序

    零.世间的道理都是想通的 在这个世界上,凡事都有个先后顺序,凡物都有个论资排辈.比方说食堂排队打饭,对吧,讲求先到先得,总不可能一拥而上.再比如说话语权,老婆的话永远是对的,领导的话永远是对的. 在C ...

  9. 理解CSS居中

    我想很多在前端学习或者开发过程中,肯定会遇到如何让你的元素居中的问题,网上google肯定会有很多的解决方法.今天我就个人的项目与学习经验谈谈个人理解css如何让元素居中. 要理解css的居中,首先必 ...

随机推荐

  1. base_lr, blobs_lr

    caffe里面,原来以为是不可以随便调整学习率的,现在看来是可以的.base_lr是适用于所有层的学习率,而针对单个层,可以通过增加两个blobs_lr,用来调整该层的学习率,为什么是两个呢,因为一个 ...

  2. jQuery选择器与事件学习笔记

    层次选择器:  $("div li")获取div下的所有li元素(后代.子.子的子......)  $("div>li")获取div下的直接li子元素.  ...

  3. html和node.js实现websocket

    websocket websocket是HTML5开始提供的一种单个TCP连接上进行全双工通讯的协议.它让客户端和服务端之间的数据交换变得更加简单,允许服务端主动向客户端推送数据.浏览器和服务器只需要 ...

  4. LeetCode106. Construct Binary Tree from Inorder and Postorder Traversal

    题目 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9, ...

  5. IBM Rational Software Architect V9.0安装图解

    IBM Rational Software Architect(RSA) -- IBM软件开发平台的一部分 – 是IBM在2003年二月并购Rational以来,首次发布的Rational产品.改进过 ...

  6. python学习之变量类型

    变量: 变量是保存在内存中的值,根据变量类型开辟不同的内存空间且只允许符合该数据类型的数据才可以被存储在该内存空间中 变量赋值: 在Python中定义变量时,无需像其他语言一样需要声明数据类型.每个变 ...

  7. Leetcode 606. 根据二叉树创建字符串

    题目链接 https://leetcode.com/problems/construct-string-from-binary-tree/description/ 题目描述 你需要采用前序遍历的方式, ...

  8. 文档-linux io模式及select,poll,epoll

    文档-Linux IO模式详解 1. 概念说明 在进行解释之前,首先要说明几个概念:- 用户空间和内核空间- 进程切换- 进程的阻塞- 文件描述符- 缓存 I/O 1.1 用户空间与内核空间 现在操作 ...

  9. UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 11126: illegal multibyte sequence

    python读取文件中含有中文时, 会报错: 解决办法是:打开文件时以utf-8格式打开,同样适用于gbk

  10. 16 Django-admin管理工具

      admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTAL ...