用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 相关文章推荐
jquery子元素过滤选择器使用示例
Jun 24 Javascript
浅析JavaScript中的常用算法与函数
Nov 21 Javascript
jQuery控制cookie过期时间的方法
Apr 07 Javascript
ECMAScript中函数function类型
Jun 03 Javascript
深入探究使JavaScript动画流畅的一些方法
Jun 30 Javascript
js实现拉幕效果的广告代码
Sep 02 Javascript
jQuery实现带延迟效果的滑动菜单代码
Sep 02 Javascript
javascript中的作用域和闭包详解
Jan 13 Javascript
详解用node.js实现简单的反向代理
Jun 26 Javascript
vue router2.0二级路由的简单使用
Jul 05 Javascript
微信小程序实现漂亮的弹窗效果
May 26 Javascript
jQuery pager.js 插件动态分页功能实例分析
Aug 02 jQuery
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转成EXE文件
2006/10/09 PHP
PHP 手机归属地查询 api
2010/02/08 PHP
PHP提示Cannot modify header information - headers already sent by解决方法
2014/09/22 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
解决thinkPHP 5 nginx 部署时,只跳转首页的问题
2019/10/16 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
JavaScrip单线程引擎工作原理分析
2010/09/04 Javascript
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
JS中动态创建元素的三种方法总结(推荐)
2016/10/20 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
bootstrap配合Masonry插件实现瀑布式布局
2017/01/18 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
js编写简单的聊天室功能
2017/08/17 Javascript
node文件批量重命名的方法示例
2017/10/23 Javascript
浅谈Node.js 子进程与应用场景
2018/01/24 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
基于JavaScript 实现拖放功能
2019/09/12 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
Vue父子传递实例讲解
2020/02/14 Javascript
Python读写Excel文件方法介绍
2014/11/22 Python
详解Python的Django框架中的通用视图
2015/05/04 Python
Python实现字典的key和values的交换
2015/08/04 Python
Sublime开发python程序的示例代码
2018/01/24 Python
python 字典修改键(key)的几种方法
2018/08/10 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
python爬虫基础之urllib的使用
2020/12/31 Python
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern "C"
2014/08/09 面试题
一些.net面试题
2014/10/06 面试题
年终自我鉴定
2013/10/09 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
教书育人演讲稿
2014/09/11 职场文书
热爱劳动主题班会
2015/08/14 职场文书
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android