书签 分享 收藏 举报 版权申诉 / 10

类型CSS 兼容性.docx

  • 文档编号:3547025
  • 上传时间:2022-11-23
  • 格式:DOCX
  • 页数:10
  • 大小:23.34KB

     

     

3、万能float闭合

将以下代码加入GlobalCSS中,给需要闭合的div加上class=”clearfix”即可,屡试不爽.

代码:

:

after(伪对象),设置在对象后发生的内容,通常和content配合使用,IE不支持此伪对象,非Ie浏览器支持,所以并不影响到IE/WIN浏览器。

这种的最麻烦。

4、overflow:

auto(刚看到的,极力推荐)

只要在父DIV的CSS中加上overflow:

auto就搞定。

举例:

.parent{width:

100px;overflow:

auto}

.son1{float:

left;width:

20px;}

.son2{float:

left;width:

80px;}

     

     

作者原话:

原理是,外围元素之所以不能很好的延伸,问题出在了overflow上,因为overflow不可见(见W3C的解释)。

现在只要将给外围元素添加一个“overflow:

auto”,就可以解决问题,结果是除了IE,真的可以解决。

下来就要解决IE的问题了,再加上“_height:

1%”,这个问题就完全解决了。

我试了一下,其实不加"_height:

1%“在IE下也行,留着吧。

六、需要注意的一些兼容细节

1,FF下给div设置padding后会导致width和height增加(DIV的实际宽度=DIV宽+Padding),但IE不会.

       解决办法:

给DIV设定IE、FF两个宽度,在IE的宽度前加上IE特有标记"*"号。

2,页面居中问题.

body{TEXT-ALIGN:

center;}在IE下足够了,但FF下失效。

     解决办法:

加上"MARGIN-RIGHT:

auto;MARGIN-LEFT:

auto;"

3,有的时候在IE6上看见一些奇怪的间隙,可我们高度明明设好了呀。

     解决办法:

试试在有空隙的DIV上加上"font-size:

0px;"

4,关于手形光标.cursor:

pointer.而hand只适用于IE.

5,浮动IE6产生的双倍距离

#box{float:

left;

         width:

100px;

         margin:

000100px;

}

这种情况之下IE6会产生200px的距离

     解决办法:

加上display:

inline,使浮动忽略

这里细说一下block,inline两个元素,Block元素的特点是:

总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是:

和其他元素在同一行上,…不可控制(内嵌元素);

#box{display:

block;//可以为内嵌元素模拟为块元素display:

inline;//实现同一行排列的的效果

6页面的最小宽度

min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。

但IE不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。

这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度。

比如要设置背景图片,这个宽度是比较重要的。

     解决办法:

为了让这一命令在IE上也能用,可以把一个

放到标签下,然后为div指定一个类:

然后CSS这样设计:

#container{

min-width:

600px;

width:

expression(document.body.clientWidth<600?

“600px”:

“auto”);

}

第一个min-width是正常的;但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。

它实际上通过Javascript的判断来实现最小宽度。

7、UL和FORM标签的padding与margin  

ul标签在FF中默认是有padding值的,而在IE中只有margin默认有值。

FORM标签在IE中,将会自动margin一些边距,而在FF中margin则是0;

     解决办法:

css中首先都使用这样的样式ul,form{margin:

0;padding:

0;}给定义死了,后面就不会为这个头疼了. 

8,DIV浮动IE文本产生3象素的bug

下面这段是我在网上粘过来的

左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距.

#box{

float:

left;

width:

800px;}

#left{

float:

left;

width:

50%;}

#right{

width:

50%;

}

*html#left{

margin-right:

-3px;

//这句是关键

}

HTML代码

针对上面这段代码,下面说一下我的理解:

第一、只要right定义了width属性,在FF下绝对就会两行显示

第二、两个width都定义为百分比的话,就算都为100%在IE下也会一行显示。

所以上面那句所谓“这句是关键”根本没用,不加也在一行,除非你width定义的是数值才用得上。

所以说上面这段代码其实用处不大,至少在FF下不行。

其实只要只定义left的width就行了,right不定义width就不管在IE还是FF下都能成功,但这样的话父DIVBOX并没有真正的包含LEFT和RIGHT两子DIV,可以用我上面说的第5种办法解决。

最简单的办法就是在RIGHT中加上float:

left就OK了,真磨叽!

9,截字省略号

.hh{-o-text-overflow:

ellipsis;

       text-overflow:

ellipsis;

       white-space:

nowrap;

       overflow:

hidden;

}

这个是在越出长度后会自行的截掉多出部分的文字,并以省略号结尾。

技术是好技术,很多人都喜欢乱用,但注意Firefox并不支持。

页面加上这句就可以让页面兼容IE7了

 

本文来自:

供参考!

给大家提醒一个漂浮需要注意的问题注意设置DIV宽和高注意设置overflow:

hidden;注意闭合针对火狐父div样式display:

inline-block;

Div+CSS教程:

如何闭合浮动元素?

(参考文章)

  按照CSS规范,浮动元素(floats)会被移出文档流,不会影响到块状盒子的布局而只会影响内联盒子(通常是文本)的排列。

因此当其高度超出包含容器时,一般父容器不会自动伸长以闭合浮动元素。

但是有时我们却需要这种自动闭合行为,具体如何处理呢?

  有一种做法就是在父容器内再插入一个额外的标签,并令其清除浮动(clear)以撑大父容器。

这种方法浏览器兼容性好,没有什么问题,缺点就是需要额外的(而且通常是无语义的)标签,所以我个人不大喜欢。

  后来又有了一种新的方式,使用:

after伪类动态的嵌入一个用于清除浮动的元素,这种方法和上一种原理一样,不同的只是把这个额外的内容用CSS生成,但考虑到IE不支持:

after不得不做了不少的hack。

这种方法兼容性一般,但经过各种hack也可以应付不同浏览器了,同时又可以保证html比较干净,所以用得还是比较多的。

  再后来又有人发现将父容器的overflow设为除visible之外的值就可以在标准兼容浏览器中闭合浮动元素,IE自然又是不支持的,所以这种方法和上一种方法一样都对IE做了不同处理(具体就是触发layout),不同的就是overflow没有:

after伪类那么麻烦了,缺点也有,overflow可能会产生一些小冲突。

  在使用overflow之前还有过一种使用float的方法,就是让父容器也浮动,这利用到了浮动元素的一个特性——浮动元素会闭合浮动元素。

这种方式在IE/Win和标准兼容浏览器中都有较好的效果,但缺点也很明显——父容器未必想浮动就浮动的了,毕竟浮动是一种比较特殊的行为,有时布局不允许其浮动也很正常。

使用float虽然在IE和标准兼容浏览器中都能闭合浮动元素,但原理却是不同的,IE/Win中float触发了layout因而闭合了浮动,而在标准兼容浏览器中,float其实和上一种方法中的overflow原理一样,产生了一个“块级格式化范围”——这是CSS规范中提到的一种现象,它往往具有某种独立性,特性之一就是会自动闭合内部的浮动元素。

  按照规范,以下类型的元素会产生一个块级格式化范围:

  ●浮动元素,left或者right皆可。

  ●绝对定位的元素。

  ●inline-block元素,不过这个gecko目前不支持。

  ●table-cell类型元素,其实table,table-head-group,table-row什么的也都可以,还有inline-table(gecko不支持)也同样,因为他们都会间接产生一个匿名的table-cell。

  ●overflow取值非visible的元素。

  所以,原来在标准兼容浏览器中我们也可以有这么多的方法闭合一个浮动元素,而且只需要CSS,无需其他。

顺带说一下以上除了overflow,其余都有一个附加效果就是自动收缩父容器宽度。

  而对于IE/Win,它有一套自己的体系,就是layout,具有layout的元素会自动闭合浮动元素,再来看看触发layout的CSS属性,会发现和上面的块级格式化范围有很多类似之处:

  ●浮动元素

  ●绝对定位元素

  ●display:

inline-block

  ●zoom

  ●width/height

  ●overflow/overflow-x/overflow-y[IE7新增]

  ●max/min-width/height[IE7新增]

  以上来看IE中闭合浮动元素的方法也不少,自然也都有其局限性,要么有附带效果,要么使用的是非标准属性(无法通过验证)。

  还要提一点的是display:

inline-block,这个属性对IE而言本身没什么用,实际效果只是给一个元素暗地添加了layout,但是标准兼容浏览器是认得这个属性的,所以要不影响这些浏览器,需要将display设回默认。

这里IE有一个bug,如果先定义了display:

inline-block,然后再将display设回block(这两个display要先后放在两个CSS声明中才有效果),那么layout不会消失,同时也不会影响其他浏览器,所以目前来说,这也算一个不错的触发layout的方法:

.gainlayout{display:

inline-block;}

.gainlayout{display:

block;}

  所以要跨浏览器闭合浮动元素,可以选择的方式还是很多的,如何搭配使用这些CSS属性就要具体情况具体分析了,灵活应用条件注释也很有必要,要是实在不行我们回过头来还有clear可以用嘛。

 

举报
举报
版权申诉
版权申诉
word格式文档无特别注明外均可编辑修改;预览文档经过压缩,下载后原文更清晰! 立即下载
配套讲稿:

如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

特殊限制:

部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

关 键  词:
CSS 兼容性
提示  冰豆网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:CSS 兼容性.docx
链接地址:https://www.bdocx.com/doc/3547025.html
相关搜索
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2008-2022 冰点文档网站版权所有

经营许可证编号:鄂ICP备2022015515号-1

收起
展开