博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
行框与浮动与清除浮动
阅读量:5999 次
发布时间:2019-06-20

本文共 925 字,大约阅读时间需要 3 分钟。

在实现下面这个效果的时候,我认为div1会把div2给覆盖掉,连同"我是div2"文本。因为我给div1加了浮动,div2没有加。

1  6  7  8     
9
我是div1
10
我说div2
11
12

但是实际是

为什么div2的文本没有上去?因为行框这个东西。浮动会让元素脱离普通流,原来占据的空间被div2给占去了,这里的空间就是指的普通流的空间。但是浮动之后的元素他是会占据行框的。

行框是什么,就是本行最高的字的高度和他父元素的宽度形成的一个矩形。也就是div2的宽度和“我是div2”字体的高度形成的一个矩形。浮动占据了行框,“我是div2”理所当然的上不去了。

如果我把div2的宽度改的比div1大,那么“我是div2”就可以上去了并且在div1的右边。

 

新的知识点:解决高度塌陷

hack1:给父元素添加声明overflow:hidden。如果是overflow:auto会出现滚动条。

hack2:在父元素里再加一个空的span,给这个元素添加声明:clear:both

hack3:在父元素前后添加伪类: :after,:before,before是为了解决父元素顶部的外边距塌陷的,after是为了解决父元素底部的外边距塌陷和清楚元素的浮动。

如下:

div:before,div:after{
content:" ";display:table;};div:after{
clear:both};div{
*zoom:1};

display:table是为了在ie6能正常执行。

*zoom:1是指元素的缩放比例,为1就是原尺寸。是为了在ie下触发hasLayout,就是让他不影响同级元素的意思。

hack3的方法应该是直接给需要清除浮动的元素添加而不是把div换成这个元素的类名。就是把这些样式定义为一个类,把需要清除浮动元素添加这个类就好了。

 

转载于:https://www.cnblogs.com/jjucap/p/5345945.html

你可能感兴趣的文章
好的程序员习惯养成
查看>>
功能测试方法
查看>>
JAVA利用Zip4j解压缩【转】
查看>>
微博、博客和维基百科登图片不显示问题解决方法
查看>>
CSS hack
查看>>
svn 冲突
查看>>
也谈项目经理与敏捷开发
查看>>
js optimization and performance
查看>>
[UML]UML系列——类图Class
查看>>
SWFUpload 中文乱码问题
查看>>
[转]关于Json格式
查看>>
django 错误之 ImportError: No module named **
查看>>
Foglight 5.6.7 控制台jboss报404
查看>>
SQL Server活动监视器
查看>>
LINUX最大线程数及最大进程数
查看>>
sql查询重复记录、删除重复记录方法大全
查看>>
这个网站的导航配色很喜欢
查看>>
给sharepoint某列表项单独赋予权限
查看>>
前端MVC框架Backbone 1.1.0源码分析(一)
查看>>
js触屏事件
查看>>