博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]JavaScript快速检测浏览器对CSS3特性的支持
阅读量:5095 次
发布时间:2019-06-13

本文共 1245 字,大约阅读时间需要 4 分钟。

转自:

--------------------------------------------------------------------------------------------------

在项目中需要快速检测浏览器是否支持某CSS3特性,比如检测是否支持“transform”,然后我的布局会有两种完全不同的版式。

当然除开本文介绍的这种快速方法,还有一种更有名和更通用的方法,那就是,运行脚本之后它会在html的class上加上浏览器支持的所有特性的列表。

优点:

  • js是可配置的,不需要的特性检测可以在配置脚本中去掉
  • 基于特性检测
  • js库简单好用

modernizr

除此之外还有一种不太好的方法,那就是判断浏览器的UA,不好的原因是UA可能会伪造,而且版本判断繁琐,还有不稳定。

优点:性能可能是最优的

最后就是本文介绍的这个方法,我写了一个函数快速检测是否浏览器支持某CSS特性,适合的场景是快速需要知道浏览器是否支持某一个CSS特性(而不是好几个)。

优点:

  • 性能不错
  • 通用性强
  • 适合检测单个CSS特性
var supports = (function() { var div = document.createElement('div'), vendors = 'Khtml O Moz Webkit'.split(' '), len = vendors.length; return function(prop) { if ( prop in div.style ) return true; if ('-ms-' + prop in div.style) return true; prop = prop.replace(/^[a-z]/, function(val) { return val.toUpperCase(); }); while(len--) { if ( vendors[len] + prop in div.style ) { return true; } } return false; }; })();if ( supports('textShadow') ) { document.documentElement.className += ' textShadow';}

这就是最终代码,原理是:

1.创建一个div,然后可以获得div.style,这是它所支持的属性的数组列表。

div.style

2.检查text是否包含在数组中,如果是,直接返回true。

3.检查各种前缀,比如Webkit加上text,即webkitTransition,如果包含在style中,返回true。

4.值得注意的是在CSS中属性名为:-webkit-transition,但是在DOM的style中 ,却是对应webkitTransition。我也不知道为什么会这样。

参考资料:

转载于:https://www.cnblogs.com/jiemao/p/5355182.html

你可能感兴趣的文章
Coding配合git使用时遇到的问题
查看>>
java 字体+颜色综合使用示例
查看>>
ios开发之级联菜单(两个tableView实现)
查看>>
tft屏图像文字一起显示
查看>>
java 泛型
查看>>
第六章函数和宏定义
查看>>
杨森翔的书法-19
查看>>
css画圆
查看>>
视图时时更新
查看>>
【PMP】财务测量指标ROI、PBP、NPV、IRR、BCR
查看>>
【Shell】Read命令
查看>>
BZOJ1061 NOI2008 志愿者招募 单纯形
查看>>
code forces 996D Suit and Tie
查看>>
PHP操作Mysql
查看>>
win7 64安装msyql
查看>>
vue-cli的webpack使用说明
查看>>
机试指南第二章-经典入门-排序模板
查看>>
验证数字的正则表达式
查看>>
Android的ListView分页功能
查看>>
LeetCode 69.sqrt(x)
查看>>