用JavaScript判断CSS浏览器类型前缀的两种方法


Posted in Javascript onOctober 08, 2015

不管我们对浏览器类型前缀有多么的讨厌,我们都不得不每天面对它,否者有些东西不能正常工作。这些前缀的用法有两种:在CSS里(例如“-moz-”)和在JS里。有一个神奇的 X-Tag 项目里有一段很聪明的JavaScript脚本,可以用来判断当前使用的是什么前缀——让我来展示它是如何工作的!

比如 CSS 前缀,IE 的是 "-ms-",旧版 Opera 的是 "-o-",Firefox 的是 "-moz-",Safari/Chrome 是 "-webkit-"。JavaScript 有多种方式判断它们。

方法1: 特性判断

// 取浏览器的 CSS 前缀
var prefix = function() {
  var div = document.createElement('div');
  var cssText = '-webkit-transition:all .1s; -moz-transition:all .1s; -o-transition:all .1s; -ms-transition:all .1s; transition:all .1s;';
  div.style.cssText = cssText;
  var style = div.style;
  if (style.webkitTransition) {
    return '-webkit-';
  }
  if (style.MozTransition) {
    return '-moz-';
  }
  if (style.oTransition) {
    return '-o-';
  }
  if (style.msTransition) {
    return '-ms-';
  }
  return '';
}();

通过创建一个div,给其分别添加 -webkit-、-moz-、-o-、-ms- 的前缀 css 样式,然后获取 style,通过 style.xxxTransition 判断是哪种前缀。

方法2: getComputedStyle 获取 documentElement 所有样式再解析

先通过 window.getComputedStyle 获取 styles,将 styles 转成数组

var styles = window.getComputedStyle(document.documentElement, '');
var arr = [].slice.call(styles);
console.log(arr);

Firefox arr 如下

用JavaScript判断CSS浏览器类型前缀的两种方法

Chrome arr 如下

用JavaScript判断CSS浏览器类型前缀的两种方法

能看到取到了具有各自浏览器自身实现的 CSS 前缀名称。

把所有属性连接成一个字符串,然后用正则表达式匹配就能找出前缀了

// 取浏览器的 CSS 前缀
var prefix = function() {
  var styles = window.getComputedStyle(document.documentElement, '');
  var core = (
    Array.prototype.slice
    .call(styles)
    .join('')
    .match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o'])
  )[1];
  return '-' + core + '-';
}();

 我们看到 方法2 比 方法1 代码量少了许多。无论是方法1 和 方法2 ,都采用匿名函数一次性执行后返回结果,不需要每次判断都调用一下函数。

以上内容就是小编通过两种方法给大家介绍的用JavaScript判断CSS浏览器类型前缀,希望大家喜欢。

Javascript 相关文章推荐
又一个图片自动缩小的JS代码
Mar 10 Javascript
Jquery 弹出层插件实现代码
Oct 24 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
Jun 29 Javascript
理解JSON:3分钟课程
Oct 28 Javascript
浅析JQuery UI Dialog的样式设置问题
Dec 18 Javascript
js生成动态表格并为每个单元格添加单击事件的方法
Apr 14 Javascript
jquery中trigger()无法触发hover事件的解决方法
May 07 Javascript
关于javascript中dataset的问题小结
Nov 16 Javascript
Jquery删除css属性的简单方法
Dec 04 Javascript
原生JavaScript实现的简单放大镜效果示例
Feb 07 Javascript
一个Java程序猿眼中的前后端分离以及Vue.js入门(推荐)
Apr 19 Javascript
解决vue打包 npm run build-test突然不动了的问题
Nov 13 Javascript
JS实现三个层重叠点击互相切换的方法
Oct 06 #Javascript
JS实现的文字与图片定时切换效果代码
Oct 06 #Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
Oct 06 #Javascript
JS+CSS相对定位实现的下拉菜单
Oct 06 #Javascript
推荐10 个很棒的 jQuery 特效代码
Oct 04 #Javascript
javascript日期格式化方法汇总
Oct 04 #Javascript
jQuery插件Timelinr 实现时间轴特效
Oct 04 #Javascript
You might like
PHP基础知识介绍
2013/09/17 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
node.js chat程序如何实现Ajax long-polling长链接刷新模式
2012/03/13 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
2017/01/11 Javascript
node跨域请求方法小结
2017/08/25 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
2018/07/26 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
koa源码中promise的解读
2018/11/13 Javascript
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
Django小白教程之Django用户注册与登录
2016/04/22 Python
Python 中Pickle库的使用详解
2018/02/24 Python
python3.x实现base64加密和解密
2019/03/28 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
python 利用已有Ner模型进行数据清洗合并代码
2019/12/24 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
如何基于python实现不邻接植花
2020/05/01 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
难忘的一课教学反思
2014/04/30 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
2015年求职自荐信范文
2015/03/04 职场文书
就业导师推荐信范文
2015/03/27 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
Golang 字符串的常见操作
2022/04/19 Golang