Vendor Prefix:為什么需要瀏覽器引擎前綴
瀏覽器引擎前綴(Vendor Prefix)是什么?
Vendor prefix—瀏覽器引擎前綴,是一些放在CSS屬性前的小字符串,用來確保這種屬性只在特定的瀏覽器渲染引擎下才能識別和生效。谷歌瀏覽器和Safari瀏覽器使用的是WebKit渲染引擎,火狐瀏覽器使用的是Gecko引擎,Internet Explorer使用的是Trident引擎,Opera以前使用Presto引擎,后改為WebKit引擎。一種瀏覽器引擎里一般不實現(xiàn)其它引擎前綴標(biāo)識的CSS屬性,但由于以WebKit為引擎的移動瀏覽器相當(dāng)流行,火狐等瀏覽器在其移動版里也實現(xiàn)了部分WebKit引擎前綴的CSS屬性。
瀏覽器引擎前綴(Vendor Prefix)有哪些?
- -moz- /* 火狐等使用Mozilla瀏覽器引擎的瀏覽器 */
- -webkit- /* Safari, 谷歌瀏覽器等使用Webkit引擎的瀏覽器 */
- -o- /* Opera瀏覽器(早期) */
- -ms- /* Internet Explorer (不一定) */
為什么需要瀏覽器引擎前綴(Vendor Prefix)?
這些瀏覽器引擎前綴(Vendor Prefix)主要是各種瀏覽器用來試驗或測試新出現(xiàn)的CSS3屬性特征。可以總結(jié)為以下3點:
- 試驗一些還未成為標(biāo)準(zhǔn)的的CSS屬性——也許永遠(yuǎn)不會成為標(biāo)準(zhǔn)
- 對新出現(xiàn)的標(biāo)準(zhǔn)的CSS3屬性特征做實驗性的實現(xiàn)
- 對CSS3中一些新屬性做等效語義的個性實現(xiàn)
這些前綴并非所有都是需要的,但通常你加上這些前綴不會有任何害處——只要記住一條,把不帶前綴的版本放到***一行:
- -moz-border-radius: 10px;
- -webkit-border-radius: 10px;
- -o-border-radius: 10px;
- border-radius: 10px;
有些新的CSS3屬性已經(jīng)試驗了很久,一些瀏覽器已經(jīng)對這些屬性不再使用前綴。Border-radius屬性就是一個非常典型的例子。***版的瀏覽器都支持不帶前綴的Border-radius屬性寫法。
需要使用Vendor Prefixes的CSS3屬性
主要的需要添加瀏覽器引擎前綴(vendor-prefix)的屬性包括:
- @keyframes
- 移動和變換屬性(transition-property, transition-duration, transition-timing-function, transition-delay)
- 動畫屬性 (animation-name, animation-duration, animation-timing-function, animation-delay)
- border-radius
- box-shadow
- backface-visibility
- column屬性
- flex屬性
- perspective屬性
完整的列表不只這些,而且還會增加。
瀏覽器引擎前綴(vendor-prefix)的用法
當(dāng)需要使用瀏覽器引擎前綴(vendor-prefix)時,***是把帶有各種前綴的寫法放在前面,然后把不帶前綴的標(biāo)準(zhǔn)的寫法放到***。比如:
- /* 簡單屬性 */
- .myClass {
- -webkit-animation-name: fadeIn;
- -moz-animation-name: fadeIn;
- -o-animation-name: fadeIn;
- -ms-animation-name: fadeIn;
- animation-name: fadeIn; /* 不帶前綴的放到*** */
- }
- /* 復(fù)雜屬性 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,很遺憾的是,使用這些低版本瀏覽器的用戶還很多。所以,確保你的網(wǎng)站設(shè)計在不支持CSS3的情況下也能正常顯示。對于一些屬性:border-radius , linear-gradient, 和 box-shadow, 你可以使用CSS3Pie,它是一個很小的文件,把它放到你的網(wǎng)站的根目錄下,就能讓你的頁面中IE6,IE8中也支持這些屬性。