用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 相关文章推荐
javascript显示选择目录对话框的代码
Nov 10 Javascript
jquery 多级下拉菜单核心代码
May 21 Javascript
Javascript继承机制的设计思想分享
Aug 28 Javascript
在js文件中写el表达式取不到值的原因及解决方法
Dec 23 Javascript
JS将制定内容复制到剪切板示例代码
Feb 11 Javascript
用JS在浏览器中创建下载文件
Mar 05 Javascript
IE中的File域无法清空使用jQuery重设File域
Apr 24 Javascript
jquery实现的网页自动播放声音
Apr 30 Javascript
原生JS京东轮播图代码
Mar 22 Javascript
js数组常用最重要的方法
Feb 04 Javascript
简单实现节流函数和防抖函数过程解析
Oct 08 Javascript
jquery实现上传图片功能
Jun 29 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面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
php使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
2018/03/02 PHP
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
vue中轮训器的使用
2019/01/27 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
2020/10/29 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
python 编程之twisted详解及简单实例
2017/01/28 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
python如何对实例属性进行类型检查
2018/03/20 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
详解Python是如何实现issubclass的
2019/07/24 Python
详解Python中的正斜杠与反斜杠
2019/08/09 Python
Python字符串的修改方法实例
2019/12/19 Python
django中嵌套的try-except实例
2020/05/21 Python
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
化工专业应届生求职信
2013/11/08 职场文书
学校十一活动方案
2014/02/01 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
美容院营销方案
2014/03/05 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
大学毕业生求职自荐书
2014/06/05 职场文书
贷款担保书
2015/01/20 职场文书
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫
Java实现添加条码或二维码到Word文档
2022/06/01 Java/Android
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers