用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 绑定事件时传递参数的实现方法
Oct 13 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
Dec 11 Javascript
一个简单的Node.js异步操作管理器分享
Apr 29 Javascript
javascript数组详解
Oct 22 Javascript
微信小程序 自定义消息提示框
Aug 06 Javascript
安装vue-cli报错 -4058 的解决方法
Oct 19 Javascript
jQuery超简单遮罩层实现方法示例
Sep 06 jQuery
angularjs的单选框+ng-repeat的实现方法
Sep 12 Javascript
JSON生成Form表单的方法示例
Nov 21 Javascript
JS将时间秒转换成天小时分钟秒的字符串
Jul 10 Javascript
jQuery擦除插件eraser使用方法详解
Jan 11 jQuery
JS自定义对象创建与简单使用方法示例
Jan 15 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 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
2017/09/21 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
原生js实现日期联动
2015/01/12 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
2020/08/04 Javascript
JavaScript中展开运算符及应用的实例代码
2021/01/14 Javascript
Python的另外几种语言实现
2015/01/29 Python
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
python爬取个性签名的方法
2018/06/17 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
python实现人性化显示金额数字实例详解
2020/09/25 Python
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
澳大利亚人信任的清洁平台,您的私人管家:Jarvis
2020/12/25 全球购物
2013年高中生自我评价
2013/10/23 职场文书
数控技术应届生求职信
2013/11/13 职场文书
五年级科学教学反思
2014/02/05 职场文书
司仪主持词两篇
2014/03/22 职场文书
公司请假条格式
2014/04/11 职场文书
四风问题个人自查剖析材料思想汇报
2014/09/21 职场文书
机关作风建设心得体会
2014/10/22 职场文书
小升初自荐信范文
2015/03/05 职场文书
幼儿园教师师德师风承诺书
2015/04/28 职场文书
三十年同学聚会致辞
2015/07/28 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
2016银行招聘自荐信
2016/01/28 职场文书