用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 相关文章推荐
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
Jun 11 Javascript
JQuery 应用 JQuery.groupTable.js
Dec 15 Javascript
javascipt基础内容--需要注意的细节
Apr 10 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
Aug 05 Javascript
JavaScript实现网站访问次数统计代码
Aug 12 Javascript
js父页面中使用子页面的方法
Jan 09 Javascript
canvas实现钟表效果
Feb 13 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
Feb 13 Javascript
jQuery plugin animsition使用小结
Sep 14 jQuery
js实现图片局部放大效果详解
Mar 18 Javascript
Layui选项卡制作历史浏览记录的方法
Sep 28 Javascript
vue3.0 的 Composition API 的使用示例
Oct 26 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下网站防IP攻击代码,超级实用
2010/10/24 PHP
php获取淘宝分类id示例
2014/01/16 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
php生成微信红包数组的方法
2019/09/05 PHP
javascript 得到变量类型的函数
2010/05/19 Javascript
js保存当前路径(cookies记录)
2010/12/14 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
2015/12/03 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
详解JavaScript表单验证(E-mail 验证)
2016/03/31 Javascript
javascript的BOM
2016/05/03 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
JavaScript同源策略和跨域访问实例详解
2018/04/03 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
JS实现灯泡开关特效
2020/03/30 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
快速入手Python字符编码
2016/08/03 Python
Python选课系统开发程序
2016/09/02 Python
Python使用pyh生成HTML文档的方法示例
2018/03/10 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
Booking.com亚太地区:Booking.com APAC
2020/02/07 全球购物
《日月潭》教学反思
2014/02/28 职场文书
关于国庆节的演讲稿
2014/09/05 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
幼儿园欢迎词范文
2015/01/26 职场文书
企业计划生育责任书
2015/05/09 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
yolov5返回坐标的方法实例
2022/03/17 Python