css - 浏览器兼容性问题?

查看:115
本文介绍了css - 浏览器兼容性问题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我刚接触浏览器兼容性,有几点不太明白
1.如下所示代码,-webkit-,-o-,-moz-代表不同浏览器的关于渐变属性的写法(向下兼容?)。我不明白能写出来不就代表已经实现了该属性吗?为什么不用标准的语法?

#grad {
  background: -webkit-linear-gradient(left, red , blue); /* Safari 5.1 - 6.0 */
  background: -o-linear-gradient(right, red, blue); /* Opera 11.1 - 12.0 */
  background: -moz-linear-gradient(right, red, blue); /* Firefox 3.6 - 15 */
  background: linear-gradient(to right, red , blue); /* 标准的语法 */
}

2.例如渐变,ie没有这种属性,在我看来没有这种属性那就注定实现不了这个效果,但是发现用ie的滤镜属性也可以达到这种效果,这是怎么想到的?而且并没有说明是ie情况下使用,怎么不会发生其他浏览器也使用了该属性呢?

filter: progid:DXImageTransform.Microsoft.Gradient(startColorStr='#FF0000',endColorStr='#F9F900',gradientType='1'); 

3.如果考虑到浏览器兼容问题,那我写的每个属性不都要去查一下哪些浏览器支持吗,怎么记得过来啊?

解决方案

1.不同版本的浏览器对CSS标准的支持程度是不同,当某个CSS属性还处于讨论阶段的时候,有些先锋的浏览器就开始实现支持这个属性,处于一种保守,兼容性,规避名称冲突的策略考虑,在名称上加上特有的浏览器特征前缀;当这个属性最后定稿写入规范后,新版本的浏览器在命名上采用标准名称;但是当采用标准名称的CSS属性运行在旧版本的浏览器上的时候,老版本的浏览就会不认识....故要采用如下写法,保持兼容性

#grad {
  background: -webkit-linear-gradient(left, red , blue); /* Safari 5.1 - 6.0 */ 
  background: -o-linear-gradient(right, red, blue); /* Opera 11.1 - 12.0 */
  background: -moz-linear-gradient(right, red, blue); /* Firefox 3.6 - 15 */
  background: linear-gradient(to right, red , blue); /* 标准的语法 */
}

CSS解析从上到下解析,浏览器为旧版本时,后面的标准写法将被忽略;浏览器为最新时,后面的标准写法将覆盖旧版本

2.每一个浏览器可能会有自己特定的CSS属性实现,而这些属性可能根本不再规范里面,连标准提议都没有,但浏览器就是实现了.....你能怎么样-我们还是要鼓掌,很多CSS特性都是这样走过的....,CSS规范可能会吸收这些特性加入到规范中,加以改造变成标准(功能相同,但是叫法上可能完全不同)
当使用标准方法不能实现,程序猿就会寻找特定浏览器下的方法~~~~鼓掌!!

3.你先用你知道的CSS属性来写(一般没有兼容性问题,或使用你已知的兼容性写法);先要想要实现某些特性时,查询特定CSS属性的兼容性~~~~程序猿不就是那么苦逼

这篇关于css - 浏览器兼容性问题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆