CSS Hack的基本原理和實現方式
由于不同的瀏覽器,比如IE6、IE7、IE8、Firefox等,對CSS解析的標準不同,因此對于相同的CSS代碼,可能會生成不同的頁面效果,從而無法在所有瀏覽器中得到我們想要的效果。這時,我們就需要針對不同的瀏覽器去寫不同的CSS代碼,讓它能夠在所有瀏覽器中獲得相同的效果。這個過程,就是CSS hack。也就是寫出只有個別瀏覽器或某些瀏覽器識別的CSS代碼。
CSS Hack的基本原理
CSS hack是因為現有瀏覽器對標準的解析不同,為了兼容各瀏覽器,所采用的一種補救方法。
CSS hack是一種類似作弊的手段,以欺騙瀏覽器的方式達到兼容的目的,是用瀏覽器的兼容性差異來解決瀏覽器的兼容性問題。因此,在設計之初,寫CSS hack需要遵循以下三條原則:
◆有效:能夠通過Web標準的驗證
◆只針對太古老的/不再開發的/已被拋棄的瀏覽器,而不是目前的主流瀏覽器
◆代碼要丑陋。讓人記住這是一個不得已而為之的Hack,時刻記住要想辦法去掉它。
現在很多hacks已經拋棄了最初的原則,而濫用hack會導致瀏覽器更新之后產生更多的兼容性問題。因此,并不推薦使用CSS hack來解決兼容性問題。
CSS hack的實現方式
我總結了一下,實現CSS hack大概有以下幾種方式:
1.利用瀏覽器對相同代碼的解析和支持的不同實現的hack
不同瀏覽器對相同的CSS代碼的支持情況可能不同。尤其是對錯誤的寫法。
例如
CSScode
#test{_width:80px;}
在IE7及以上版本的瀏覽器中會被當作錯誤特性而舍棄,但是在IE6中可以被正常的解析。這時候,可以把_width當作hack,專門針對IE6來設置元素的寬度。
2.以Firefox或Webkit特有的擴展樣式實現的hack
以-moz或-webkit開頭的擴展樣式,是瀏覽器對CSS標準的擴展。這些特性只在相應的瀏覽器里才可以被正常的解析。因此可以被當作CSS hack來使用。
◆以-moz開頭的Firefox特有擴展樣式
Mozilla瀏覽器支持的一些擴展是以-moz開頭的。這些擴展包括了一些功能,例如圓形邊界等。這種CSS只適用于Mozilla瀏覽器。
比如,-moz-opacity是在Firefox2.0版本出現的特性,用來實現元素的透明,但Firefox3.0以后的版本中不再支持,而是直接支持標準中的opacity特性。而其他瀏覽器不支持-moz-opacity。所以,可以使用-moz-opacity來針對Firefox2.0設置元素的透明度。
關于Firefox擴展樣式的詳細信息,見MozillaCSSExtensions。
◆以-webkit開頭的Webkit瀏覽器特有擴展樣式
與以-moz開頭的Firefox特有擴展樣式相同,以-webkit開頭的樣式是Webkit瀏覽器特有的,只有Webkit瀏覽器可以解析。
比如,在Webkit瀏覽器中可以用-webkit-border-radius實現圓角。
3.利用IE對標準的支持缺陷寫的CSS hack
這個類別以中的hack以IE對標準的支持缺陷為基礎,可以讓CSS代碼針對IE6或IE7以外的瀏覽器生效。
例如,!important只有IE7及以上版本的IE及其他瀏覽器支持,所以,可以用!important來針對IE6以外的瀏覽器寫CSS代碼;再如,head:first-child+bodyselector,:first-child不被IE6支持,所以可以用來針對IE6以外的瀏覽器編寫CSS代碼。
此處不在一一列舉。
當然,有的觀點認為應用CSS2.1標準,不屬于CSS hack。見Tantek'sThoughts,UsingACSS2FeatureIsNOTaHack。
4.以IE特有的條件注釋為基礎的hack
IE瀏覽器中特有的條件注釋也經常被用作hack,可以針對特定版本的IE寫CSS代碼。
例如,測試用例:
HTMLcode<!--[ifIE8]><styletypestyletype="text/css">#test{color:red;}</style><![endif]--><h2idh2id="test">TEXT</h2>
以上代碼中的"TEXT",只在IE8中才會是紅色。
到此,相信大家對“CSS中Hack的基本原理和實現方式”有了更深的了解,不妨來實際操作一番吧!這里是本站網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
廣發行積分兌換方法有哪些?兌換積分可通過發現精彩APP、廣發官網、廣發手機銀行、線下積分購物、廣發電話客服五種渠道兌換禮品。具體操作方法可見視頻,最新的兌換業務變動請以廣發官網公布為準。廣發信用卡積分怎么免費兌換禮品?【1】首先需要用戶登錄廣發銀行信用卡積分商城,登錄個人賬戶之后輸入信用卡信息【2】然后找到頁面的“積分兌換”進入到兌換頁面【3】進入積分兌換頁面之后,點擊&l...
出口退稅金額怎么計算?1、一般貿易、加工補償貿易以及易貨貿易出口貨物退稅額=計稅依據x適用退稅率;2、委托加工收回之后出口的貨物退稅額=原材料金額*退稅率+工繳費金額x 14%;3、進料加工復出口貨物退稅額=計稅依據x退稅率-銷售進口料件應抵減退稅額;銷售進口料應抵減退稅額=銷售進口料件金額x退稅率海關對進口料件實征增值稅稅額。退稅13個點實際能退到幾個點?具體實際能退幾個點是無法判斷的。根據不同...
規模效益是指企業將生產要素等比例增加時,產出增加價值大于投入增加價值的情況。只有當經營規模擴大,其產量增加的比例大于全部要素投入量增加比例時,這種經營規模才具有規模效益。任何企業要進行生產,都必須把生產要素聚集在一起,組合成一定的批量生產能力。由于生產要素的不可分性,當企業生產規模增大時,就會使各項費用節約,生產成本降低,經濟效益提高。規模效益產生的實質原因是,企業由于生產規模擴大而使單位產品所需...