深入理解css之float
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的更多相关文章
- 关于css中float的理解
感觉css里的float是个非常神奇的东西,神奇之处在于,你知道它是什么意思,但是用的时候总是不知道怎么实现效果.又或者它会很容易地影响到别的元素和属性.所以今天打算尝试一下float的各种设置,看看 ...
- 理解CSS
写在前面的话:对于web开发,html完成网页的structure,css完成网页的presentation,js完成网页的behavior,今天就来说一说css,通过理解一些css的基础概念,能够更 ...
- 深入理解css BFC 模型
如果要深入理解css布局的各种原理,要在重构页面做得心应手的话,那么你就必须先理解这玩意 "BFC" , BlockFormatting Context(块级格式化上下文): 这里 ...
- 深入理解CSS中的层叠上下文和层叠顺序(转)
by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=5115 零.世间的道 ...
- 经验分享:CSS浮动(float,clear)通俗讲解
很早以前就接触过CSS,但对于浮动始终非常迷惑,可能是自身理解能力差,也可能是没能遇到一篇通俗的教程. 前些天小菜终于搞懂了浮动的基本原理,迫不及待的分享给大家. 写在前面的话: 由于CSS内容比较多 ...
- 深入理解css中的margin属性
深入理解css中的margin属性 之前我一直认为margin属性是一个非常简单的属性,但是最近做项目时遇到了一些问题,才发现margin属性还是有一些“坑”的,下面我会介绍margin的基本知识以及 ...
- 深入理解CSS网页布局-理论篇
在CSS网页开发布局中,需要对浮动和定位有深刻的理解才能在开发中游刃有余. 基于此,在博客园中做了本篇总结,这些总结来自实践经验和阅读一些书籍后的理解总结,主要内容为浮动,清除浮动,定位. (可点击屏 ...
- 深入理解CSS中的层叠上下文和层叠顺序
零.世间的道理都是想通的 在这个世界上,凡事都有个先后顺序,凡物都有个论资排辈.比方说食堂排队打饭,对吧,讲求先到先得,总不可能一拥而上.再比如说话语权,老婆的话永远是对的,领导的话永远是对的. 在C ...
- 理解CSS居中
我想很多在前端学习或者开发过程中,肯定会遇到如何让你的元素居中的问题,网上google肯定会有很多的解决方法.今天我就个人的项目与学习经验谈谈个人理解css如何让元素居中. 要理解css的居中,首先必 ...
随机推荐
- arraylist,list ,数组区别
https://www.cnblogs.com/a164266729/p/4561651.html
- vim实用配置
"编码set encoding=utf-8"显示行号set number"语法高亮度显示syntax on "自动缩进set autoindent"t ...
- python—命名空间、作用域查找顺序、闭包
名称空间 name space,如下图: x = 1, 1存放在内存中,1 会有一个内存地址,x 则 存放在 name space 里,并同时记录了 1的内存地址, 即 名称空间是存放了变量x与1绑定 ...
- HJ浇花
题目描述 HJ养了很多花(99999999999999999999999999999999999盆),并且喜欢把它们排成一排,编号0~999999999999999999999999999999999 ...
- MySQL工作经验
以下是根据工作中遇到各种场景用到的一些Mysql用法,比较实用,基本是语法之外的一些东西. 修改账户密码 1.打开Mysql控制台,输入原密码: 2.输入以下语法:mysql> set pass ...
- 网页更换主题以及绘制图形js代码实现
HTML代码实现: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- VMware中Ubuntu开机时停在启动界面,不进入X-window的解决办法
启动Ubuntu虚拟机时,停在这个画面不动: 试了若干次,都是这样.尝试了新建一个虚拟机然后把.vmdk文件拷过去启动,无法解决. 尝试重启,在这个界面按esc进入grub: 选择恢复模式 recov ...
- css3 媒体查询的学习。
1.什么是媒体查询 媒体查询可以让我们根据设备显示器的特性(如视口宽度.屏幕比例.设备方向:横向或纵向)为其设定CSS样式,媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成.媒体查询中可用于 ...
- php扩展开发-INI配置
php.ini文件是用来保存各项扩展配置的文件,每个扩展都或多或少需要有一个定制化的配置,ini文件是一个很好的保存配置的方式,我们来看下怎么在自己的扩展里,使用到ini的配置功能 //创建ini的配 ...
- SQL_server_2008_r2和visual studio 2010旗舰版的安装(2013-01-16-bd 写的日志迁移
(以下操作是在Oracle VM virtualBox虚拟机中操作的,其实VMware Workstation 9虚拟机也挺不错的,不过用了很久的vmware想换个虚拟机用用 就暂时用Oracle V ...