iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
1
自我挑戰組

學習 HTML / CSS 遇到的問題 系列 第 17

簡略認識 CSS 前綴詞

  • 分享至 

  • xImage
  •  

有些 CSS 屬性較新,像是 CSS grid 等,不一定每個瀏覽器都會支援此 CSS 屬性,為了讓不同版本的瀏覽器都能正確顯示該 CSS 樣式,需在 CSS 屬性前加上瀏覽器前綴詞讓瀏覽器可兼容此 CSS 屬性

不同瀏覽器有不同的 CSS 前綴詞,寫法是在前綴詞前後加上 -
參考此文章列出不同瀏覽器前綴詞
Vendor Prefix - MDN Web Docs Glossary: Definitions of Web-related terms | MDN
最常看到的會是 -webkit-,適用於 chrome、Safari、新版的 Opera 瀏覽器、大部分的 iOS 瀏覽器,以及其他以 WebKit 為引擎的瀏覽器

其他還有 -moz- 適用於 Firefox;-o- 適用於未以 WebKit 為引擎的 Opera 瀏覽器;-ms- 適用於 Internet Explorer and Microsoft Edge

若有 CSS 屬性需兼容各瀏覽器,以 transition 屬性為例,就會寫成以下

-webkit-transition: all 4s ease;
-moz-transition: all 4s ease;
-ms-transition: all 4s ease;
-o-transition: all 4s ease;
transition: all 4s ease; 

因此若看到這樣的寫法,看似同一個屬性重複寫很多次,是正常的

自己在寫 CSS 時,其實不常使用到前綴詞,但是在看其他像是 bootstrap 的 CSS 時,會常看到前綴詞的使用
https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.css

像是 .btn 的 user-select

.btn {
  display: inline-block;
  font-weight: 400;
  color: #212529;
  text-align: center;
  vertical-align: middle;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  background-color: transparent;
  border: 1px solid transparent;
  padding: 0.375rem 0.75rem;
  font-size: 1rem;
  line-height: 1.5;
  border-radius: 0.25rem;
  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

前綴詞也可以加在屬性值的前面,例如 bootstrap 的 flex 會加上 -ms- 前綴詞兼容 IE 或 Eage

 display: -ms-flexbox;
 display: flex;
 -ms-flex-wrap: wrap;

需注意若有前綴詞的屬性,要先寫有前綴詞的樣式,再寫無前綴詞的樣式,這樣若適用無前綴詞的樣式才能吃到設定

參考資料:
https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix
css - What are -moz- and -webkit-? - Stack Overflow


上一篇
關於盒模型 ( box model )
下一篇
很常用到的 margin / padding
系列文
學習 HTML / CSS 遇到的問題 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言