五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 解決IE8以下不支持background-size屬性

解決IE8以下不支持background-size屬性

文章來(lái)源:365jz.com     點(diǎn)擊數(shù):1429    更新時(shí)間:2018-04-05 08:17   參與評(píng)論
background-size是CSS3新增的屬性,但是IE8以下還是不支持,可以通過(guò)濾鏡來(lái)實(shí)現(xiàn)這樣的一個(gè)效果

background-size:contain; // 縮小圖片來(lái)適應(yīng)元素的尺寸(保持像素的長(zhǎng)寬比);
background-size :cover; // 擴(kuò)展圖片來(lái)填滿元素(保持像素的長(zhǎng)寬比);
background-size :100px 100px; // 調(diào)整圖片到指定大??;
background-size :50% 100%; // 調(diào)整圖片到指定大小,百分比相對(duì)于包含元素的尺寸。

瀏覽器兼容:
IE 和遨游不支持;
Firefox 添加私有屬性 -moz-background-size 支持;
Safari 和 Chrome 添加私有屬性 -webkit-background-size 支持;
Opera 不支持 background-size 屬性,添加其私有屬性 -o-background-size 也不支持。

示例:

background:#00ff00 url(img.jpg) no-repeat;   
-moz-background-size:60% 80%;    
-webkit-background-size:60% 80%;     
-o-background-size:60% 80%;} 
background-size:60% 80%;     


在IE不支持這個(gè)屬性的時(shí)候可以通過(guò)濾鏡來(lái)實(shí)現(xiàn)這樣的一個(gè)效果。

background-image: url('file:///F:/test/images/flashbg.jpg'); 
background-size: 
cover;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='file:///F:/test/images/flashbg.jpg',sizingMethod='scale'); 


注意:路徑須要一樣,并且是絕對(duì)路徑

滿心歡喜地寫(xiě)代碼,最后測(cè)試兼容性的時(shí)候發(fā)現(xiàn)Logo圖片在IE8下特別大。明顯是background-size在ie8一下不兼容。

  

  我懂得,IE8還是個(gè)孩子,我就加幾句你獨(dú)有的代碼讓你兼容吧,司空見(jiàn)慣了:

filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='../img/logo.png',  sizingMethod='scale');

  然后發(fā)現(xiàn)logo變得十分華麗(奧義·雙重logo):

  

  明顯是ie8兩種background屬性設(shè)置都同時(shí)支持,把一個(gè)圖片加載了兩次。以前沒(méi)有發(fā)現(xiàn),是因?yàn)橐郧暗膱D片并不透明,兼容語(yǔ)句引入的圖片完美覆蓋原來(lái)的圖片,所以沒(méi)有發(fā)現(xiàn)問(wèn)題?,F(xiàn)在的logo圖片背景圖片是透明的,所以疊一起了。

  因此我們引用另外一種方法,引入火腿腸文件(.htc)來(lái)進(jìn)行hack,強(qiáng)行讓ie8支持background-size屬性。簡(jiǎn)單來(lái)說(shuō),就是引入js文件來(lái)對(duì)圖片大小進(jìn)行配置。

  使用的htc文件的background-size-polyfill項(xiàng)目git地址:https://github.com/louisremi/background-size-polyfill/blob/gh-pages/backgroundsize.min.htc

  然后在css文件里面引用語(yǔ)句,注意url是相對(duì)于引用css文件的html的路徑:

        /*IE8 圖片透明不可用filter*/
        -ms-behavior: url(../htc/backgroundsize.min.htc);
        behavior:url(../htc/backgroundsize.min.htc);

  破費(fèi)解決!小僵尸你學(xué)到了嗎!

  
 

由于 background-size 是 CSS3 新增的屬性,所以 IE 低版本自然就不支持了,但是老外寫(xiě)了一個(gè) htc 文件,名叫 background-size polyfill,使用該文件能夠讓 IE7、IE8 支持 background-size 屬性。其原理是創(chuàng)建一個(gè) img 元素插入到容器中,并重新計(jì)算寬度、高度、left、top 等值,模擬 background-size 的效果。

使用方法

直接在樣式中寫(xiě)入即可,如:

body {
    height: 100%;
    margin: 0;
    background: url(images/126.jpg) center no-repeat;
    background-size: cover;
    -ms-behavior: url(backgroundsize.min.htc);
    behavior: url(backgroundsize.min.htc);
}

局限性

background-size polyfill 雖然可以模擬 background-size 屬性,但并不能完全模擬,畢竟 background 方式和 img 方式還是有區(qū)別的,主要的支持情況如下:

支持

  • 背景圖像的正確位置和大小
  • 瀏覽器縮放時(shí)及時(shí)更新
  • 更新圖片(替換等)時(shí)及時(shí)更新

不支持

  • 多個(gè)背景(多重背景)
  • 4 個(gè)值的 background-position
  • 背景重復(fù)
  • 非默認(rèn)值的 background-[clip/origin/attachment/scroll]

由于 background-size polyfill 需要進(jìn)過(guò)復(fù)雜的計(jì)算,所以可能會(huì)出現(xiàn)圖片“一閃”的情況。并且 .htc 文件還不能跨域,使用 CDN 的需要注意。

雖然 background-size polyfill 有一定的局限性,但總比沒(méi)有好,在某些情況下還是一個(gè)很好的選擇。

如對(duì)本文有疑問(wèn),請(qǐng)?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會(huì)為你解答?。?點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (1429人查看,0條評(píng)論)
請(qǐng)自覺(jué)遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)