用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 相关文章推荐
用js怎么把&字符换成"&amp:"
Oct 19 Javascript
提高 DHTML 页面性能
Dec 25 Javascript
几行代码轻松搞定jquery实现flash8类似的连接效果
May 03 Javascript
JavaScript 学习笔记(十四) 正则表达式
Jan 22 Javascript
中文路径导致unitpngfix.js不正常的解决方法
Jun 26 Javascript
jquery live()重复绑定的解决方法介绍
Jan 03 Javascript
javascript监听鼠标滚轮事件浅析
Jun 05 Javascript
js闭包实例汇总
Nov 09 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
Sep 04 Javascript
react中fetch之cors跨域请求的实现方法
Mar 14 Javascript
vue实现个人信息查看和密码修改功能
May 06 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
Sep 01 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
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
laravel 操作数据库常用函数的返回值方法
2019/10/11 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
jQuery实现的在线答题功能
2015/04/12 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
jquery原理以及学习技巧介绍
2015/11/11 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
jQuery实现简单的计时器功能实例分析
2017/08/29 jQuery
mui框架移动开发初体验详解
2017/10/11 Javascript
AngularJS上传文件的示例代码
2018/11/10 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
django模型中的字段和model名显示为中文小技巧分享
2014/11/18 Python
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
详解Python编程中包的概念与管理
2015/10/16 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
Pycharm设置界面全黑的方法
2018/05/23 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
python查看列的唯一值方法
2018/07/17 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
让IE支持HTML5的方法
2012/12/11 HTML / CSS
学生处主任岗位职责
2013/12/01 职场文书
农村婚礼证婚词
2014/01/10 职场文书
物流业务员岗位职责
2014/02/08 职场文书
学习雷锋寄语大全
2014/04/11 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
单独二胎证明
2015/06/24 职场文书