国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

CSS 新的圖像替換方法

2024-07-11 08:27:27
字體:
來源:轉載
供稿:網友
參看 Dave Shea’s excellent summary ,Paul Young 在分析現存的所有方法的優缺點之后,提出了一種新的方法,并將其命名為“狀態域方法”(The State Method),本文將詳細介紹該方法的原理:

現存方法的缺點:

    容易失效,例如:圖像禁用或者替換圖像含有透明區域; 過于復雜不能迅速可靠的執行; 通過js遍歷文檔樹,在頁面加載時出現的閃動不盡人意; 可能與一些瀏覽器不兼容

新的圖像替換方法:

新的圖像替換技術需要借助于js來實現,但很容易執行,只需要將一小段js引入到頭部即可。一旦js執行,響應的規則前將附加“.image-on”,只要客戶端的圖片未被禁用,規則就會生效,下面是一條應用到h1“狀態域方法”的聲明:

h1 {
 width: 100px;
 height: 50px;
}

@media screen { 
 .images-on h1 {
   text-indent: -10000px;
   background-image: url(image.png);
   overflow: hidden; 
 }
}

第一條規則總是生效,第二條只有在image未被禁用時生效。“text-indent”使文字偏移于屏幕之外,“overflow:hidden”主要用來在FF下放置錨點在被點擊時其焦點偏移于屏幕之外。

第二條規則包繞在@media screen中,主要用來保證圖像替換只發生在屏幕閱讀器中,而不是在打印狀態下執行。如果不這樣處理,頁面打印時,多數用戶將看到一個很大的空隙而不是有意義的文本。

該項技術執行起來很快。因為文本偏移于屏幕之外,圖像可以包含透明元素,透過圖像本身,你看不到任何文本。Js執行很快,幾乎是瞬時的,它充分利用瀏覽器本身的特性。

方法解析

“狀態域方法”是在一種假定的狀態下,快速使css規則生效的方法,其上下文背景為document,這樣避免了瀏覽器遍歷DOM樹。應用“狀態域方法”有兩個理由:

    針對用戶的反應,頁面部分內容再格式化; 基于客戶端瀏覽器、設備、和其它狀況而附加額外的樣式。

“狀態域方法”通過使用下面的script給html附加一個class。

   document.enableStateScope = function(scope, on)
   {
     var de = document.documentElement;
     if (on)
     de.className += " " + scope;
     else
     de.className = de.className.replace(
       new RegExp("//b" + scope + "//b"), "");
   };

這段js有一點小問題,在示例頁中切換功能并不生效,我重新修改了一下,代碼如下:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 班戈县| 禹城市| 墨竹工卡县| 福建省| 阆中市| 江源县| 灵丘县| 红桥区| 肇庆市| 陇西县| 磐安县| 会泽县| 嘉兴市| 樟树市| 绥江县| 思南县| 南充市| 亚东县| 陈巴尔虎旗| 孝昌县| 花垣县| 无为县| 深州市| 祁连县| 同仁县| 镇沅| 东方市| 海安县| 紫云| 达尔| 永兴县| 乃东县| 炉霍县| 肃北| 临桂县| 苏尼特右旗| 互助| 赣州市| 溧水县| 衡水市| 改则县|