用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 eval函数深入认识
Feb 21 Javascript
12个非常有创意的JavaScript小游戏
Mar 18 Javascript
关于window.pageYOffset和document.documentElement.scrollTop
Apr 05 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
May 07 Javascript
JavaScript在IE和FF下的兼容性问题
May 19 Javascript
angular2使用简单介绍
Mar 01 Javascript
js基于cookie方式记住返回页面用法示例
May 27 Javascript
Mac下使用charles遇到的问题以及解决办法
Jan 10 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
Feb 08 Javascript
JS实现简单移动端鼠标拖拽
Jul 23 Javascript
google广告之另类js调用实现代码
Aug 22 Javascript
Vue axios获取token临时令牌封装案例
Sep 11 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/06/27 PHP
php调用MySQL存储过程的方法集合(推荐)
2013/07/03 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
深入了解javascript中的prototype与继承
2013/04/14 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
Position属性之relative用法
2015/12/14 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
JavaScript静态作用域和动态作用域实例详解
2019/06/17 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
微信小程序实现二维码签到考勤系统
2020/01/16 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
python多进程实现文件下载传输功能
2018/07/28 Python
PyCharm 设置SciView工具窗口的方法
2019/01/15 Python
Python计算时间间隔(精确到微妙)的代码实例
2019/02/26 Python
PyQt QListWidget修改列表项item的行高方法
2019/06/20 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
解决python 找不到module的问题
2020/02/12 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
python脚本和网页有何区别
2020/07/02 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
蛋白质世界:Protein World
2017/11/23 全球购物
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
社区交通安全实施方案
2014/03/22 职场文书
《郑和远航》教学反思
2014/04/16 职场文书
勤俭节约演讲稿
2014/05/08 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
2015年感恩母亲节活动方案
2015/05/04 职场文书