全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.清除浮动的原理了解 hasLayout 和 Block formatting contexts ;2. 问题的原因与浮动定位有关。在CSS规范中,浮动定位不属于正常的页面流(page flow),是独立定位的。所以,只含有浮动元素的父容器,在显示时不考虑子元素的位置,就当它们不存在一样。这就造成了显示出来,父容器好像空容器一样。先看一下清理浮动的各种方法: 3.解决方法一:添加空元素经典的解决方法,就是在浮动元素下方添加一个非浮动元素。代码这样写:原理是父容器现在必须考虑非浮动子元素的位置,而后者肯定出现在浮动元素下方,所以显示出来,父容器就把所有子元素都包括进去了。这种方法比较简单,但是要在页面中增加冗余标签,违背了语义网的原则。4.解决方法二:浮动的父容器另一种思路是,索性将父容器也改成浮动定位,这样它就可以带着子元素一起浮动了。这种方法不用修改HTML代码,但是缺点在于父容器变成浮动以后,会影响到后面元素的定位,而且有时候,父容器是定位死的,无法变成浮动。5.解决方法三:浮动元素的自动clearing让父容器变得可以自动清理(clearing)子元素的浮动,从而能够识别出浮动子元素的位置,不会出现显示上的差错。要做到这点,只要为父容器加上一条overflow: hidden的CSS语句就行了。代码这样写:这种方法的缺点主要有二个,一个是IE 6不支持,另一个是一旦子元素的大小超过父容器的大小,就会出显示问题。6.解决方法四:能不能通过CSS语句添加子元素呢,这样就不用修改HTML代码了?回答是可以的,我们知道CSS语句中有一个:after伪选择符,就可以在父容器的尾部自动创建一个子元素,这正好符合我们的需要。下面的代码参照了lifesinger的写法:.clearfix:after content: 0020;display: block;height: 0;clear: both;clearfix是父容器的class名称,content:020;是在父容器的结尾处放一个空白字符,height: 0;是让这个这个空白字符不显示出来,display: block; clear: both;是确保这个空白字符是非浮动的独立区块。但是,:after选择符IE 6不支持,也就是说上面的这段代码在IE 6中无效,这怎么办?我们添加一条IE 6的独有命令zoom:1;就行了,这条命令的作用是激活父元素的hasLayout属性,让父元素拥有自己的布局。IE 6会读取这条命令,其他浏览器则会直接忽略它。7.最终代码.clearfix:after content: 0020;display: block;height: 0;clear: both;.clearfix zoom: 1;8.附录 什么是hasLayoutIE使用Layout概念来控制元素的尺寸和位置。如果一个元素有Layout,它就有自身的尺寸和位置;如果没有,它的尺寸和位置由最近的拥有布局的祖先元素控制。在默认情况下,拥有Layout的元素包括:, , , , , , , , , , , , (注意,和默认不拥有Layout。)凡是具有以下CSS属性的元素,也会拥有布局:position: absolutefloat: left|rightdisplay: inline-blockwidth: any value other than autoheight: any value other than autozoom: any value other than normal (IE专用属性)writing-mode: tb-rl(IE专用属性)overflow: hidden|scroll|auto(只对IE 7及以上版本有效)overflow-x|-y: hidden|scroll|auto(只对IE 7及以上版本有效)hasLayout是IE特有的属性,不是CSS属性。可以用Javascript函数hasLayout查看一个元素是否拥有Layout。如果有,这 个函数就返回true;否则返回false。hasLayout是一个只读属性,所以无法使用Javascript进行设置。小结 通过对比,我们不难发现,其实以上列举的方法,无非有两类: 其一,通过在浮动元素的末尾添加一个空元素,设置 clear:both属性,after伪元素其实也是通过 content 在元素的后面生成了内容为一个点的块级元素; 其二,通过设置父元素 overflow 或者display:table 属性来闭合浮动,我们来探讨一下这里面的原理。 在CSS2.1里面有一个很重要的概念,但是国内的技术博客介绍到的比较少,那就是 Block formatting contexts (块级格式化上下文),以下简称 BFC。 CSS3里面对这个规范做了改动,称之为:flow root,并且对触发条件进行了进一步说明。那么如何触发BFC呢? float 除了none以外的值 overflow 除了visible 以外的值(hidden,auto,scroll ) display (table-cell,table-caption,inline-block) position(absolute,fixed) fieldset元素 需要注意的是,display:table 本身并不会创建BFC,但是它会产生匿名框(anonymous boxes),而匿名框中的display:table-cell可以创建新的BFC,换句话说,触发块级格式化上下文的是匿名框,而不是 display:table。所以通过display:table和display:table-cell创建的BFC效果是不一样的。 fieldset 元素在里目前没有任何有关这个触发行为的信息,直到HTML5标准里才出现。有些浏览器bugs(Webkit,Mozilla)提到过这个触发行为,但 是没有任何官方声明。实际上,即使fieldset在大多数的浏览器上都能创建
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 平安保持协议合同范本
- 建材安装搬运合同范本
- 婆婆不同意分家协议书
- 承接工装拆除合同范本
- 工程合同违约赔偿协议
- 家电售后用工合同范本
- 建筑安装材料合同范本
- 应急水泵销售合同协议
- 小额贷款标准合同范本
- 岩土工程测量合同范本
- 设备变更方案(3篇)
- 食堂菜价定价管理办法
- 16.迷你中线导管带教计划
- 大学军事理论考试题及答案
- 2025社交礼仪资料:15《现代社交礼仪》教案
- 菏泽风电项目可行性研究报告
- T/CCMA 0114-2021履带式升降工作平台
- DB32T 5124.1-2025 临床护理技术规范 第1部分:成人危重症患者目标温度管理
- 食管癌的护理查房知识课件
- 高三日语二轮复习阅读专题课件
- 《双重差分法与调节效应模型:解析绿色债券价值影响》12000字(论文)
评论
0/150
提交评论