IE与firefox兼容问题

1.DOCTYPE 影响 CSS 处理  
当层无法运用margin:0 auto居中问题的解决! 
如果无法运用<div style="margin:0 auto">....</div>来设置层居中.出现这样问题可能是没有定义hmlt的dtd,html向标准化的xml演变的过程是需要时间的,所以有三个dtd版本,我们现在用的最多的就是过渡期的dtd 这三个分别是 1,过渡型 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2,严格型 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 3,框架型 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> 
如果对css 2.0标准不太熟悉不要使用严格型的dtd.我们现在使用过渡期的就行了!  
在网页最顶剖加上 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行  
  3.FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中  
  4.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width  
  5.FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式,值得注意的是,一定要将xxxx !important 这句放置在另一句之上  
  6.div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行  
  7.cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以  
  8.FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。  
  9.在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法:div{margin:30px!important;margin:28px;}   注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:div{maring:30px;margin:28px} 
  重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;    
  11.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义ul{margin:0;padding:0;}   就能解决大部分问题  
   
注意事项:  
  1、float的div一定要闭合。  

  例如:(其中floatA、floatB的属性已经设置为float:left;)<#div id=\"floatA\" > <#div id=\"floatB\" >

<#div id=\"NOTfloatC\" > 
  这里的NOTfloatC并不希望继续平移,而是希望往下排。 
  这段代码在IE中毫无问题,问题出在FF。原因是NOTfloatC并非float标签,必须将float标签闭合。   在<#div class=\"floatB\"> <#div class=\"NOTfloatC\"> 
  之间加上<#div class=\"clear\"> 
  这个div一定要注意声明位置,一定要放在最恰当的地方,而且必须与两个具有float属性的div同级,之间不能存在嵌套关系,否则会产生异常。 
  并且将clear这种样式定义为为如下即可:.clear{ clear:both;} 
  此外,为了让高度能自动适应,要在wrapper里面加上overflow:hidden;   当包含float的box的时候,高度自动适应在IE下无效,这时候应该触发IE的layout私有属性(万恶的IE啊!)用zoom:1;可以做到,这样就达到了兼容。 
  例如某一个wrapper如下定义:.colwrapper{ overflow:hidden; zoom:1; 
margin:5px auto;}  
  2、margin加倍的问题。  
  设置为float的div在ie下设置的margin会加倍。这是一个ie6都存在的bug。   解决方案是在这个div里面加上display:inline; 例如: 
<#div id=\"imfloat\">   相应的css为 #IamFloat{ float:left; 
margin:5px;/*IE下理解为10px*/ display:inline;/*IE下再理解为5px*/}   
  5、最狠的手段 - !important;  
  如果实在没有办法解决一些细节问题,可以用这个方法.FF对于"!important"会自动优先解析,然而IE则会忽略.如下.tabd1{ 
background:url(/res/images/up/tab1.gif) no-repeat 0px 0px !important; /*Style for FF*/ background:url(/res/images/up/tab1.gif) no-repeat 1px 0px; /* Style for IE */} 
  值得注意的是,一定要将xxxx !important 这句放置在另一句之上,上面已经提过

区别IE6与FF: 
    background:orange;*background:blue;  
区别IE6与IE7: 
    background:green !important;background:blue;  
区别IE7与FF: 
    background:orange; *background:green;

background:orange;*background:green !important;*background:blue;  
注:IE都能识别*;标准浏览器(如FF)不能识别*; IE6能识别*,但不能识别 !important, IE7能识别*,也能识别!important; FF不能识别*,但能识别!important;  
  IE6 IE7 FF * 
√ √ 
× !important 
× 
√ 
√ 
 
 
 
另外再补充一个,下划线"_", 
IE6支持下划线,IE7和firefox均不支持下划线。  
于是大家还可以这样来区分IE6,IE7,firefox 
: background:orange;*background:green;_background:blue;   
注:不管是什么方法,书写的顺序都是firefox的写在前面,IE7的写在中间,IE6的写在最后面。  
比如要分辨IE6和firefox两种浏览器,可以这样写: <style>   
div{    
    background:green; /* for firefox */        *background:red;  /* for IE6 */    }    
</style>   
<div>我在IE6中看到是红色的,在firefox中看到是绿色的。</div>   
<style> div{ background:green; /* for firefox */ *background:red; /* for IE6 */ } </style> <div>我在IE6中看到是红色的,在firefox中看到是绿色的。</div> 解释一下: 
上面的css在firefox中,它是认识不了后面的那个带星号*的东东是什么的,于是将它过滤掉,不予理睬,解析得到的结果是:div{background:green},于是理所当然这个div的背景是绿色的。 
在IE6中呢,它两个background都能识别出来,它解析得到的结果是:div{background:green;background:red;},于是根据优先级别,处在后面的red的优先级高,于是当然这个div的背景颜色就是红色的了。 
CSS兼容IE6,IE7,FIREFOX的一些收集 
 第一种,是CSS HACK的方法  
height:20px; /*For Firefox*/ *height:25px; /*For IE7 & IE6*/ _height:20px; /*For IE6*/  
注意顺序。  
这样也属于CSS HACK,不过没有上面这样简洁。 #example { color: #333; } /* Moz */ 
* html #example { color: #666; } /* IE6 */ *+html #example { color: #999; } /* IE7 */  
第二种是使用IE专用的条件注释


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值