Vendor Prefix:爲何須要瀏覽器引擎前綴

瀏覽器引擎前綴(Vendor Prefix)是什麼?

Vendor prefix—瀏覽器引擎前綴,是一些放在CSS屬性前的小字符串,用來確保這種屬性只在特定的瀏覽器渲染引擎下才能識別和生效。谷歌瀏覽器和Safari瀏覽器使用的是WebKit渲染引擎,火狐瀏覽器使用的是Gecko引擎,Internet Explorer使用的是Trident引擎,Opera之前使用Presto引擎,後改成WebKit引擎。一種瀏覽器引擎裏通常不實現其它引擎前綴標識的CSS屬性,但因爲以WebKit爲引擎的移動瀏覽器至關流行,火狐等瀏覽器在其移動版裏也實現了部分WebKit引擎前綴的CSS屬性。css

瀏覽器引擎前綴(Vendor Prefix)有哪些?

-moz-     /* 火狐等使用Mozilla瀏覽器引擎的瀏覽器 */
-webkit-  /* Safari, 谷歌瀏覽器等使用Webkit引擎的瀏覽器 */
-o-       /* Opera瀏覽器(早期) */
-ms-      /* Internet Explorer (不必定) */

爲何須要瀏覽器引擎前綴(Vendor Prefix)?

這些瀏覽器引擎前綴(Vendor Prefix)主要是各類瀏覽器用來試驗或測試新出現的CSS3屬性特徵。能夠總結爲如下3點:css3

  • 試驗一些還未成爲標準的的CSS屬性——也許永遠不會成爲標準web

  • 對新出現的標準的CSS3屬性特徵作實驗性的實現瀏覽器

  • 對CSS3中一些新屬性作等效語義的個性實現ide

這些前綴並不是全部都是須要的,但一般你加上這些前綴不會有任何害處——只要記住一條,把不帶前綴的版本放到最後一行:測試

-moz-border-radius: 10px; 
-webkit-border-radius: 10px; 
-o-border-radius: 10px; 
border-radius: 10px;

有些新的CSS3屬性已經試驗了好久,一些瀏覽器已經對這些屬性再也不使用前綴。Border-radius屬性就是一個很是典型的例子。最新版的瀏覽器都支持不帶前綴的Border-radius屬性寫法。flex

須要使用Vendor Prefixes的CSS3屬性

主要的須要添加瀏覽器引擎前綴(vendor-prefix)的屬性包括:動畫

  • @keyframes網站

  • 移動和變換屬性(transition-property, transition-duration, transition-timing-function, transition-delay)spa

  • 動畫屬性 (animation-name, animation-duration, animation-timing-function, animation-delay)

  • border-radius

  • box-shadow

  • backface-visibility

  • column屬性

  • flex屬性

  • perspective屬性

完整的列表不僅這些,並且還會增長。

瀏覽器引擎前綴(vendor-prefix)的用法

當須要使用瀏覽器引擎前綴(vendor-prefix)時,最好是把帶有各類前綴的寫法放在前面,而後把不帶前綴的標準的寫法放到最後。好比:

/* 簡單屬性 */
.myClass {
	-webkit-animation-name: fadeIn;
	-moz-animation-name: fadeIn;
	-o-animation-name: fadeIn;
	-ms-animation-name: fadeIn;
	animation-name: fadeIn;  /* 不帶前綴的放到最後 */
	}
/* 複雜屬性 keyframes */
@-webkit-keyframes fadeIn {
	0% { opacity: 0; } 
	100% { opacity: 0; }
	}
@-moz-keyframes fadeIn {
	0% { opacity: 0; }
        100% { opacity: 0; }
        }
@-o-keyframes fadeIn {
	0% { opacity: 0; } 
	100% { opacity: 0; }
	}
@-ms-keyframes fadeIn {
	0% { opacity: 0; } 
	100% { opacity: 0; }
	}
/* 不帶前綴的放到最後 */
@keyframes fadeIn {
	0% { opacity: 0; } 
	100% { opacity: 0; }
	}

Internet Explorer

Internet Explorer 9 開始支持不少(但並非所有)CSS3裏的新屬性。好比,你也能夠在IE裏使用不帶瀏覽器引擎前綴(vendor-prefix)的border-radius屬性。

IE6到IE8都不支持CSS3,很遺憾的是,使用這些低版本瀏覽器的用戶還不少。因此,確保你的網站設計在不支持CSS3的狀況下也能正常顯示。對於一些屬性:border-radius , linear-gradient, 和 box-shadow, 你可使用CSS3Pie,它是一個很小的文件,把它放到你的網站的根目錄下,就能讓你的頁面中IE6,IE8中也支持這些屬性。

相關文章
相關標籤/搜索