在页面制作过程当中,我们曾经遇到过这样的问题,当浮动元素高度增加,而超出其父容器时,父容器不会随着它的高度增加而变长。比如
代码如下 | 复制代码 |
#main{background-color: #4F6B72;padding: 5px;} #box1{float:left;width:200px;background-color: #F5FAFA;} #box2{float:left;width:300px;background-color: #CAE8EA;} .clean{clear:both;font-size: 0;line-height: 0;height: 0;} |
这种方法兼容性好,但是多了一段没有语义的代码。所以,我们还有一些其他的方法。
在标准化的范围里,当元素被赋予以下几种属性,就可以闭合浮动元素。
1. float浮动元素,left 或者 right 都可以。
2. position:relative 绝对定位的元素。
3. display:inline-block(inline-block对象显示为内嵌元素,但所有子对象都显示为块元素,相邻的内嵌元素将显示在同一行,允许空格。这个方法以gecko为核心的浏览器比如firefox目前不支持)。
4. display:table-cell 类型元素,其实 table, table-head-group, table-row 什么的也都可以,还有inline-table(以gecko为核心的浏览器比如firefox目前不支持)也同样,因为他们都会间接产生一个匿名的table-cell。
5. overflow取值非visible的元素。这个方法用的比较多。
以上除了overflow,其余都有一个附加效果就是自动收缩父容器宽度。
对于IE/Win,我们需要做的就是触发元素的layout属性,具有layout属性的元素会自动闭合浮动元素。可以触发layout属性的方法:
1. float浮动元素,left 或者 right 都可以。
2. position:relative 绝对定位的元素。
3. display:inline-block
4. zoom
5. 定义元素的width/height
6. overflow/overflow-x/overflow-y [IE7 新增]
7. max/min-width/height [IE7 新增]
IE的这些方法有很多局限,比如zoom就是非标准属性,无法通过验证,而其他的定义会带给元素一些其他的效果。
还要提一点的是display:inline-block,这个属性对IE而言本身没什么用,实际效果只是给一个元素暗地添加了layout,但是标准兼容浏览器是认得这个属性的,所以要不影响这些浏览器,需要将display设回默认。这里IE有一个bug,如果先定义了display:inline-block,然后再将display设回block(这两个display要先后放在两个CSS声明中才有效果),那么layout不会消失,同时也不会影响其他浏览器,所以目前来说,这也算一个不错的触发layout的方法:
代码如下 | 复制代码 |
.gainlayout{display:inline-block;} .gainlayout{display:block;} |
对display:inline-block这个属性还不是很了解,还要继续找资料。
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔