日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何優(yōu)雅地實(shí)現(xiàn)瀏覽器兼容與CSS規(guī)則回退

我們沒(méi)法控制用戶使用新版本還是老版本的瀏覽器,因此往往需要根據(jù)瀏覽器對(duì)于屬性的兼容情況書寫多套 CSS 代碼。本文就是探討如何優(yōu)雅地應(yīng)對(duì)瀏覽器兼容問(wèn)題,包括四點(diǎn):層疊機(jī)制來(lái)支持較早的瀏覽器,Modernizr設(shè)置輔助類來(lái)分別編寫樣式,使用 @supports 規(guī)則回退,簡(jiǎn)短的 JavaScript 代碼實(shí)現(xiàn)回退。

創(chuàng)新互聯(lián)公司專注于甘南網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供甘南營(yíng)銷型網(wǎng)站建設(shè),甘南網(wǎng)站制作、甘南網(wǎng)頁(yè)設(shè)計(jì)、甘南網(wǎng)站官網(wǎng)定制、成都小程序開(kāi)發(fā)服務(wù),打造甘南網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供甘南網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

提供瀏覽器兼容的網(wǎng)站

  • https://caniuse.com/
  • https://webplatform.github.io/
  • https://developer.mozilla.org/en-US/

層疊機(jī)制來(lái)支持較早的瀏覽器

 
 
 
  1. /* 防止 linear-gradient 在老瀏覽器中掛掉導(dǎo)致沒(méi)有背景 */ 
  2. background: rgb(255, 128, 0); 
  3. background: -moz-linear-gradient(0deg, yellow, red); 
  4. background: -o-linear-gradient(0deg, yellow, red); 
  5. background: -webkit-linear-gradient(0deg, yellow, red); 
  6. /* 應(yīng)該將標(biāo)準(zhǔn)語(yǔ)法放在最后,來(lái)確保最終生效的是是標(biāo)準(zhǔn)語(yǔ)法 */ 
  7. background: linear-gradient(90deg, yellow, red); 

Modernizr設(shè)置輔助類來(lái)分別編寫樣式

這里參考了一篇14年的老博客 Modernizr 的介紹和使用。

Modernizr 官網(wǎng):https://modernizr.com/

Modernizr 如何生效?如果頁(yè)面支持 text-shadow 屬性,那么 Modernizr 會(huì)添加 textshadow 類。如果不支持,那么它用 no-textshadow 類作為替代進(jìn)行添加。

因此,前端開(kāi)發(fā)人員就可以設(shè)置兩套代碼,來(lái)應(yīng)對(duì)瀏覽器提供或者不提供 text-shadow 支持的兩種情況。

 
 
 
  1. /* 瀏覽器不支持 text-shaow */ 
  2. h1 { color: gray } 
  3.  
  4. /* 瀏覽器支持 text-shaow */ 
  5. .textshaow h1 { 
  6.   color: transparent; 
  7.   text-shadow: 0 0 .3rem gray; 

使用 @supports 規(guī)則回退

除了使用 Modernizr ,也可以使用瀏覽器自帶的 @supports :

 
 
 
  1. /* 瀏覽器不支持 text-shaow */ 
  2. h1 { color: gray } 
  3.  
  4. /* 瀏覽器支持 text-shaow */ 
  5. @supports (text-shadow: 0 0 .3rem gray){ 
  6.     h1 { 
  7.     color: transparent; 
  8.     text-shadow: 0 0 .3rem gray; 
  9.   } 

但是 Lea Verou 指出,上述代碼的投影效果只有在即支持 @supports 又支持 text-shadow 的瀏覽器中才會(huì)生效。因此慎用 @supports 。

簡(jiǎn)短的 JavaScript 代碼實(shí)現(xiàn)回退

思路與 Modernizr 相同,做特性檢測(cè),然后添加輔助類。

 
 
 
  1. var root = document.documentElement;  //  
  2.  
  3. if ('textShadow' in root.style) { 
  4.   root.classList.add('textshadow') 
  5. } else { 
  6.   rott.classList.add('no-textshadow') 

如上,我們?yōu)?html 添加了輔助類:

  • 如果瀏覽器支持 text-shadow ,那么添加 textshadow
  • 如果瀏覽器不支持 text-shadow ,那么添加 no-textshadow

上述代碼可以被封裝為函數(shù):

 
 
 
  1. function testProperty(property) { 
  2.   var root = document.documentElement; 
  3.  
  4.   if (property in root.style) { 
  5.     root.classList.add(property.toLowerCase()); 
  6.     return true; 
  7.   } 
  8.  
  9.   root.classList.add('no-' + property.toLowerCase()); 
  10.   return false; 

注意到上述方法只能用來(lái)檢測(cè)屬性是否支持,而非屬性值。(如下,解釋一下屬性和屬性值,如下代碼)

 
 
 
  1. background : linear-gradient(red, tan); 
  2.     屬性    :     屬性值                ; 

檢測(cè)屬性值是否支持,常見(jiàn)的思路是:賦給對(duì)應(yīng)屬性,然后看瀏覽器是否還保存著這個(gè)值。這個(gè)方法會(huì)改變?cè)貥邮?,因此可以用隱藏元素防止樣式因?yàn)闄z測(cè)被改變。

 
 
 
  1. var dummy = document.createElement('p'); 
  2. dummy.style.backgroundImage = 'linear-gradient(red, tan)'; 
  3.  
  4. if (dummy.style.backgroundImage) { 
  5.   root.classList.add('lineargradients'); 
  6. } else { 
  7.   root.classList.add('no-lineargradients'); 

封裝函數(shù)如下:

 
 
 
  1. function testValue(id, value, property) { 
  2.   var dummy = document.createElement('p'); 
  3.   dummy.style[property] = value; 
  4.  
  5.   if (dummy.style[property])  // 屬性值被瀏覽器保留 
  6.   { 
  7.     root.classList.add(id); 
  8.     return true; 
  9.   } 
  10.    
  11.   root.classList.add('no-' + id); 
  12.   return false; 

網(wǎng)頁(yè)名稱:如何優(yōu)雅地實(shí)現(xiàn)瀏覽器兼容與CSS規(guī)則回退
當(dāng)前網(wǎng)址:http://www.5511xx.com/article/dpcscjp.html