最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

圖像替換新技術 狀態(tài)域方法

 更新時間:2010年01月28日 22:44:39   作者:  
熟悉css的開發(fā)者一定知道圖像替換技術,也深知它的意義,Dave Shea 曾在他的一篇文章對此做了詳細的總結
參看Dave Shea's excellent summary ,Paul Young 在分析現(xiàn)存的所有方法的優(yōu)缺點之后,提出了一種新的方法,并將其命名為“狀態(tài)域方法”(The StateMethod),本文將詳細介紹該方法的原理:

該方法檢查圖片是否禁用,并不是請求服務器上的圖片,因為那樣會導致一次額外的http請求。作者創(chuàng)建了一個巧妙的方法。

在大多數(shù)瀏覽器中,Image對象可以實例化并追溯到一個無效的URL(http://0),這樣很容易檢測Image的狀態(tài)。如果禁用,onerror事件將觸發(fā),在js文件的開頭,j建立一個新的圖像對象:

var img = new Image();

但是,有兩個古怪的瀏覽器對此方法并不兼容。在Gecko瀏覽器中,不論Image是否被禁用。Onerror事件總是 被觸發(fā)。所幸的是,另外一種可行的方案可以解決此問題--給html元素附加一個無效的背景圖片,然后通過getComputedStyle方法獲得 style屬性。如果Image禁用,其屬性為none或url(invalid-url:):

 if (img.style.MozBinding != null)
 {
   img.style.backgroundImage = "url(" +document.location.protocol + "http://0)";
   var bg = window.getComputedStyle(img,'').backgroundImage;

   if (bg != "none" && bg !="url(invalid-url:)" || document.URL.substr(0, 2) == "fi")
   {
    document.enableStateScope("images-on", true);
   }
 }

另外一個富有挑戰(zhàn)性的瀏覽器是safari,如果請求是一個無效的URL,safari的狀態(tài)欄將出現(xiàn)錯誤提示,但頁面 布局不受任何影響。如果用戶的狀態(tài)欄處于開啟狀態(tài),報錯將一直持續(xù),這很不專業(yè),同樣,作者研究了另外一種可行的方案。如果Image來自于1*1的 gif圖像,且被數(shù)據(jù)編碼。如果Image禁用,其寬度將為0,以下為在safari中測試的情況:

 else
 {
   img.style.cssText ="-webkit-opacity:0";
   if (img.style.webkitOpacity == 0)
   {
     img.onload = function()
     {
      document.enableStateScope("images-on", img.width > 0);
     }
     img.src = 
      "data:image/gif;base64," +
      "R0lGODlhAQABAIAAAP///wAAACH5BAE" +
      "AAAAALAAAAAABAAEAAAICRAEAOw==";
   }
}

最后,對于其它瀏覽器,在開始初始化Image對象時,僅僅需要測試onerror觸發(fā)事件。

   else
   {
     img.onerror = function(e)
     {
      document.enableStateScope("images-on", true);
     }
     img.src = "about:blank";
   }

狀態(tài)域是可以切換的

可以創(chuàng)建一個系統(tǒng)讓用戶在文本和替代圖像之間切換。

查看示例(示例文件由Paul Young提供)

class屬性添加到html之上而不是body或其它子元素之上,主要原因在于在圖像替換之前,body需要全面加載。如果“image-on”不添加到html之上。當狀態(tài)域啟用時,將會出現(xiàn)閃動。

圖像替換技術是css中相當重要的一部分。鑒于現(xiàn)存圖像替換技術的缺點,作者花大量時間另辟蹊徑,方法獨到,值得借鑒。

示例下載tate-scope-image-replacement.zip

翻譯原文:http://www.denisdeng.com/?p=235

英文原文http://www.sitepoint.com/article/image-replacement-state-scope/

相關文章

最新評論

太保市| 玉溪市| 潮安县| 扎赉特旗| 宝鸡市| 萨迦县| 汶川县| 烟台市| 从江县| 泽库县| 济阳县| 凤翔县| 天镇县| 徐州市| 南漳县| 襄樊市| 周宁县| 铁力市| 南平市| 龙南县| 南雄市| 东海县| 徐闻县| 汽车| 双辽市| 南涧| 荥经县| 岳阳县| 洛南县| 库车县| 兴城市| 荆州市| 盘锦市| 调兵山市| 义马市| 府谷县| 仪征市| 青州市| 武冈市| 彭州市| 常山县|