1. 程式人生 > >CSS瀏覽器字首相容寫法

CSS瀏覽器字首相容寫法

Vendor prefix — 瀏覽器引擎字首,是一些放在CSS屬性前的小字串,用來確保這種屬性只在特定的瀏覽器渲染引擎下才能識別和生效。谷歌瀏覽器和Safari瀏覽器使用的是 WebKit 渲染引擎,火狐瀏覽器使用的是 Gecko 引擎,Internet Explorer 使用的是 Trident 引擎,Opera以前使用 Presto 引擎,後改為 WebKit 引擎。一種瀏覽器引擎裡一般不實現其它引擎字首標識的CSS屬性,但由於以 WebKit 為引擎的移動瀏覽器相當流行,火狐等瀏覽器在其移動版裡也實現了部分 WebKit 引擎字首的CSS屬性。

1. 瀏覽器引擎字首(Vendor Prefix)有哪些?

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

2. 為什麼需要瀏覽器引擎字首(Vendor Prefix)?

這些瀏覽器引擎字首(Vendor Prefix)主要是各種瀏覽器用來試驗或測試新出現的CSS3屬性特徵。可以總結為以下3點:

  1. 試驗一些還未成為標準的的CSS屬性——也許永遠不會成為標準
  2. 對新出現的標準的CSS3屬性特徵做實驗性的實現
  3. 對CSS3中一些新屬性做等效語義的個性實現

這些字首並非所有都是需要的,但通常你加上這些字首不會有任何害處——只要記住一條,把不帶字首的版本放到最後一行:

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

有些新的CSS3屬性已經試驗了很久,一些瀏覽器已經對這些屬性不再使用字首。Border-radius屬性就是一個非常典型的例子。最新版的瀏覽器都支援不帶字首的Border-radius屬性寫法。

3. 需要使用Vendor Prefixes的CSS3屬性

  1. @keyframes
  2. 移動和變換屬性(transition-property, transition-duration, transition-timing-function, transition-delay)
  3. 動畫屬性 (animation-name, animation-duration, animation-timing-function, animation-delay)
  4. border-radius
  5. box-shadow
  6. backface-visibility
  7. column屬性
  8. flex屬性
  9. perspective屬性

完整的列表不只這些,而且還會增加。

4. 瀏覽器引擎字首(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; }
}

5. Internet Explorer

Internet Explorer 9 開始支援很多(但並不是全部)CSS3裡的新屬性。比如,你也可以在IE裡使用不帶瀏覽器引擎字首(vendor-prefix)的border-radius屬性。

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

相關推薦

CSS瀏覽器字首相容寫法

Vendor prefix — 瀏覽器引擎字首,是一些放在CSS屬性前的小字串,用來確保這種屬性只在特定的瀏覽器渲染引擎下才能識別和生效。谷歌瀏覽器和Safari瀏覽器使用的是 WebKit 渲染引擎,火狐瀏覽器使用的是 Gecko 引擎,Internet

CSS瀏覽器字首,HTML5新增標籤

1.瀏覽器樣式字首 為了讓CSS3樣式相容,需要加上 例如:-ms- 相容IE瀏覽器-moz 相容Firefox-webkit- 相容chrome和safaridiv{-ms-transform:rotate(30deg);...........} 2.自動新增瀏覽器字首 目前的狀態是,有些CSS3屬性

css3瀏覽器字首相容

3、瀏覽器引擎字首(Vendor Prefix)有哪些?              -webkit-     /* Safari, 谷歌瀏覽器等使用Webkit引擎的瀏覽器 */ -moz- /

解決vue-cli build打包後CSS瀏覽器相容字首自動去除的問題

今天做練手專案部署的時候碰到了個奇怪問題,開發環境裡顯示得好好的CSS prefixer樣式,到production環境就消失了。 我開發環境用的是 scss ,剛開始我還以為是 scss 處理器的問題,後來研究了下 build 指令碼,發現人家把CSS統一用一個外掛給壓縮了,然後追查之下發現這個外

vue-cli build打包後CSS瀏覽器相容字首自動去除的問題

今天構建發現 原本是很正常的一個相容性寫法漸變。結果npm run build專案時background: -webkit-linear-gradient(left,#ccc,#fff)backgrou

vs code 自動補全css瀏覽器相容字首

css瀏覽器相容轉換(相容主流瀏覽器,除IE) ps:如果谷歌瀏覽器打不開,可以用火狐 如果一直打不開,可以選擇vs code ,vs code 不如線上轉換細緻 1.擴充套件輸入Autoprefixer,點選安裝,然後點選重新載入 2.在需要新增字首的css

dva相容瀏覽器,ios安卓低版本,自動帶上瀏覽器字首

果然打程式碼 文件不能看漏 DVA文件裡面有寫好的自動帶字首,今天找了大半天webpack相容 https://github.com/sorrycc/roadhog/blob/master/README_zh-cn.md#%E9%85%8D%E7%BD%AE 配置文件裡有一句

CSS瀏覽器相容性寫法、JS瀏覽器相容性寫法

一、瀏覽器的核心 IE:trident核心 Firefox(火狐):gecko核心 Chrome:Blink(基於Webkit) Safari:Webkit核心 Oprea:現用Blink,以前是presto核心 二、CSS瀏覽器相容性 -moz-   火狐

gulp 自動化構建 less編譯、css補全瀏覽器字首、js壓縮、瀏覽器自動重新整理

最近的時間都在使用框架寫專案,閒來無聊把gulp又回顧了一遍,使用起來還是很方便的。 這裡是我的專案結構 這裡我主要實現了less編譯、css補全瀏覽器字首、js壓縮、瀏覽器自動重新整理幾項常用的功能。 第一步、全域性安裝 gulp npm install gu

html\css\js-dom在不同主流瀏覽器相容問題

1、html 主要是解決html5在主流瀏覽器上的相容性。特別是在IE瀏覽器上的相容性。 //方法一:使用google的html5shiv包,將它引入放在<head></head>內部 <!--[if IE]> &l

CSS-calc 相容寫法

width: 90%;/*寫給不支援calc()的瀏覽器*/ width:-moz-calc(100% - (10px + 5px) * 2); width:-webkit-calc(100% -

html+css瀏覽器相容問題及應對方法

相容:瀏覽器相容是前端程式碼書寫中常遇見的問題,隨瀏覽器更新,更多功能完善的新屬性未必能得到大範圍的支援,總結相容寫法或者樣式的方法又會因為時間推移而逐漸失效,這裡提供一些方法以作參考。 瀏覽器市場:程式碼功能用於服務物件,確定服務物件所使用的瀏覽器範圍,能幫助編寫者明確目標。 這裡是瀏

js事件冒泡和阻止瀏覽器預設行為的相容寫法

//阻止事件冒泡 相容w3c瀏覽器 function cBubble(e){ if(e.stopPropagation){ e.stopPropagation();//ie9+

css 背景色漸變相容寫法

.gradient{ background: #000000; background: -moz-linear-gradient(top, #000000 0%, #ffffff 100%); background: -webkit-gradient(linear, left

瀏覽器私有字首-相容行高line-height

line-height: 35px\9; /*IE8*/    *line-height: 35px; /* IE7支援 */     _line-height: 35px; /* IE6支援 */ 

獲取元素的CSS樣式屬性值 IE相容寫法

/** * 獲取元素的CSS樣式屬性值 */function css(element, attrName) {   /*if (window.getComputedStyle)   return window.getComputedStyle(element)[attrName]   return eleme

css在360瀏覽器相容問題

      在此並不從整體的角度來闡述,只是簡單得記錄下今天花了一個下午的時間才解決的問題。      下面是在360相容模式的顯示:               而在火狐瀏覽器、360瀏覽器的極速模式、甚至IE瀏覽器中顯示都是正常的,如下圖所示:            這

解決在用HTML+DIV+CSS編寫網頁時,各個瀏覽器相容問題

一、解決層居中的問題 一般我們在瀏覽網頁的時候,都會看到不同瀏覽器開啟的同一個頁面會出現不一樣的佈局問題。其實這是每一個初學HTML的程式設計師長碰見的問題。 那麼給怎麼解決中瀏覽器不相容的問題呢? 首先,我們一般再用DIV+CSS程式設計時,一般會用margin:0 au

css三角形的IE相容寫法

<style> span{         border-style: dashed dashed solid dashed;//上 右 下 左 想哪邊為三角形 就把哪邊寫成solid  

事件源、事件物件、阻止事件冒泡、阻止瀏覽器預設行為、Dom2級事件相容寫法

1事件物件的獲取 var e =e|event; 2事件源的獲取 var target=e.target||e.srcElemet; 3阻止事件 冒泡 e.cancelBubble=true; ie e.stoppropagation() 4阻止瀏覽器