// 取浏览器的 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 判断是哪种前缀。var styles = window.getComputedStyle(document.documentElement, "");var arr = [].slice.call(styles);console.log(arr);

Chrome arr 如下

能看到取到了具有各自浏览器自身实现的 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 ,都采用匿名函数一次性执行后返回结果,不需要每次判断都调用一下函数。