JavaScript判斷各瀏覽器CSS前綴的兩種方式


不管瀏覽器更新的多快,號稱多么支持標准。廠商不同,他們之間還是有很多差異。我們需要區分出這些差異,針對不同的瀏覽器做不同的處理。

比如 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 如下

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 ,都采用匿名函數一次性執行后返回結果,不需要每次判斷都調用一下函數。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM