CSS Secret——CSS的浏览器兼容

使用前缀

background: rgb(255, 128, 0); 
background: -moz-linear-gradient(0deg, yellow, red); background: -o-linear-gradient(0deg, yellow, red); background: -webkit-linear-gradient(0deg, yellow, red); background: linear-gradient(90deg, yellow, red);

这样的特性意味着不同类型和版本浏览器对它们有不同的实现。所以首先要准备一个浏览器完全不支持的时候的备用情况,在这里就是一个纯色背景。并把不带前缀将来会稳定的版本放在最后。
这样利用层叠就能达到我们的兼容目的。

能力检测

但是通过层叠,有时并不能满足我们的要求,这时就要使用一定的手段了。在JS中,可以通过检测element.style对象是否有对应的属性来判断浏览器是否支持这个规则。
根据支持情况,可以在根元素上加上类,在CSS中,就可以根据这个类来写样式了。

function testProperty(property) {
    var root = document.documentElement;
    if (property in root.style) {
        root.classList.add(property.toLowerCase());
        return true;
    }
    root.classList.add('no-' + property.toLowerCase());
    return false;
}
testProperty('textShadow');
h1 { color: gray; }
.textshadow h1 { 
    color: transparent; 
    text-shadow: 0 0 .3em gray; 
}

当然,我们有时还需要测试某个规则的某个值是否受到支持,那就需要真的将规则的值赋给某个元素了,既然是测试,那就创建一个看不到的元素咯

function testValue(id, value, property) {
    var root = document.documentElement;
    var dummy = document.createElement('p');
    dummy.style[property] = value;
    if (dummy.style[property]) {
        root.classList.add(id);
        return true;
    }
    root.classList.add('no-' + id);
    return false;
}
testValue('lineargradients', 'linear-gradient(red,tan)', "backgroundImage");

使用@supports

这个的支持很不广泛,不建议使用

@supports (text-shadow: 0 0 .3em gray) 
{  
    h1 {  
        color: transparent;
        text-shadow: 0 0 .3em gray; 
    } 
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,692评论 1 92
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,058评论 19 139
  • 简介网络浏览器很可能是使用最广的软件。在这篇入门文章中,我将会介绍它们的幕后工作原理。我们会了解到,从您在地址栏输...
    wengjq阅读 6,518评论 2 15
  • 2016-11-06 鱼家乐 无名小镇 梦是一种欲望,想是一种行动,梦想是梦与想的结晶,是知与行的合一。 路遥的《...
    鱼家乐阅读 3,579评论 0 0
  • 其实我本是一个天生的吃货,但碍于之前准备要小孩加上生完孩子,给孩子喂奶,有些东西迫于无奈是不能吃的,每天都是强逼着...
    40de1cb61789阅读 3,550评论 0 0

友情链接更多精彩内容