搜尋

CSS 駭客

Feb 10, 2017 pm 03:26 PM

之前一直很狹隘的對CSS hack持有偏見,覺得寫得規範的代碼不應該使用這些“邪門歪道”,可最近產品發布一個小問題卻讓我頭疼了很久,最後查了一下資料,竟然使用CSS hack輕鬆解決了,不得不服啊,對付神奇的IE就得使用這些利器。

什麼是CSS hack

由於不同的瀏覽器,甚至同一瀏覽器的不同版本對CSS的解析認識不一樣,導致生成的頁面效果不一致,寫出針對不同瀏覽器CSS code就稱為CSS hack。

常用的CSS hack 有三種方式,CSS 內部hack、選擇器hack、HTML 頭部引用,其中第一種最常用。

CSS 內部hack

正經的CSS是這麼寫的

nbsp;html>
    
        <title>Test</title>
        <style>
            .test            {
                background-color:green;
            }
        </style>
    
    
        <p></p>
    


這樣的程式碼對於所有目前常用的瀏覽器都是好使的,結果應該是這樣子的

CSS hack 中常見一些這樣的寫法

/*Mozilla内核浏览器:firefox3.5+*/
  -moz-transform: rotate | scale | skew | translate ; /*Webkit内核浏览器:Safari and Chrome*/
  -webkit-transform: rotate | scale | skew | translate ; /*Opera*/
  -o-transform: rotate | scale | skew | translate ; /*IE9*/
  -ms-transform: rotate | scale | skew | translate ; /*W3C标准*/
  transform: rotate | scale | skew | translate ;


如果沒有註解乍一看還以為逆天了,這樣的程式碼都好使!這樣的程式碼確實好使,CSS3目前標準還沒有統一,各個瀏覽器都有自己的表現方式,甚至有的實現,有的未實現,在前面加一些前綴以表示支持某個特定瀏覽器,這也是CSS 內部hack的基本原理,向上面這些簡單易懂,但真正的CSS hack 遠遠不止於此,因為有不死的IE6及其各種奇葩的兄弟版本。

CSS 內部hack 語法是這樣的selector{?property:value?;} ,上面程式碼所示的是在屬性名稱之前的hack,當然還有這樣的

*background-color:green;


屬性前面加個「*」這樣的寫法只會對IE6、7生效,其它版本IE及現代瀏覽器會忽略這條指令(沒有特殊說明,本文所有hack都是指在聲明了DOCTYPE的文檔的效果)

-background-color:green;


屬性前面有個「-」這樣的只有IE6識別,還有些在後面的hack

background-color:green!important;


這樣在屬性值後面添加「!important」的寫法只有IE6IE及現代瀏覽器都可以識別,還有“+”、“

  IE6 IE7 IE8 IE9 IE10 现代浏览器
* CSS 駭客 CSS 駭客        
+   CSS 駭客        
- CSS 駭客          
!important   CSS 駭客 CSS 駭客 CSS 駭客 CSS 駭客 CSS 駭客
\9 CSS 駭客 CSS 駭客 CSS 駭客 CSS 駭客 CSS 駭客  
\0     CSS 駭客 CSS 駭客 CSS 駭客  
\9\0       CSS 駭客 CSS 駭客  

这样就清楚多了吧。如果只想给上面的test p在IE访问的时候加绿色背景,就可以这么写

background-color:green\9;


如果想IE6红色,IE7绿色,其它黄色(当然没人这么无聊)就可以这么写

background-color:green;
+background-color:green;
_background-color:green;


选择器hack

选择器hanck主要是针对IE浏览器,其实并不怎么常用,语法是这样的: selector{ sRules }

  IE6 IE7 IE8 IE9 IE10 现代浏览器
*html CSS 駭客          
*+html   CSS 駭客        
:root       CSS 駭客    

针对IE9的hack可以这么写

:root .test{
    background-color:green;
}


HTML头部引用

HTML头部引用就比较特殊了,类似于程序语句,只能使用在HTML文件里,而不能在CSS文件中使用,并且只有在IE浏览器下才能执行,这个代码在非IE浏览下非单不是执行该条件下的定义,而是当做注释视而不见。

<link><link><link>


lte:就是Less than or equal to的简写,也就是小于或等于的意思。

lt :就是Less than的简写,也就是小于的意思。

gte:就是Greater than or equal to的简写,也就是大于或等于的意思。

gt :就是Greater than的简写,也就是大于的意思。

! :就是不等于的意思,跟javascript里的不等于判断符相同。

书写顺序

看看,看看,这么多姿势,那么一个效果,好多种写法,什么顺序写才能保证各个浏览器都得到希望的效果呢?因为CSS只要是同一级别,出现重复属性设置,后出现的会覆盖前面出现的,所以在书写的时候一般把识别能力强的写前面,看个例子

_background-color:red;
background-color:green;


如果希望p在IE6上是红色,其它是绿色,上面的写法可不可以呢?试一下发现所有浏览器上都是绿色,因为在IE6解析的时候,第一句能够识别,背景设为红色,但是第二句所有浏览器都识别,IE6也不例外,背景颜色又被设为绿色,所以得反过来写

background-color:green;
_background-color:red;


总结出的规律就是:先一般,再特殊。有兴趣的同学可以试试试试下面CSS,看看和你想的效果是否一样

background-color:blue; /*所有浏览器*/background-color:red\9;/*所有的ie*/background-color:yellow\0; /* ie8+*/+background-color:pink; /*+ ie7*/

更多CSS hack 相关文章请关注PHP中文网!


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
錨定位只是不關心來源訂單錨定位只是不關心來源訂單Apr 29, 2025 am 09:37 AM

錨定定位避開HTML源順序的事實是如此之高,因為它在內容和演示文稿之間的另一個關注點是另一個分離的事實。

保證金是什麼:40px 100px 120px 80px表示?保證金是什麼:40px 100px 120px 80px表示?Apr 28, 2025 pm 05:31 PM

文章討論了CSS保證金屬性,特別是“保證金:40px 100px 120px 80px”,其應用程序以及對網頁佈局的影響。

什麼是不同的CSS邊框特性?什麼是不同的CSS邊框特性?Apr 28, 2025 pm 05:30 PM

本文討論了CSS邊境屬性,重點是自定義,最佳實踐和響應能力。主要論點:邊境 - 拉迪烏斯(Border-Radius)對響應式設計最有效。

什麼是CSS背景,列出屬性?什麼是CSS背景,列出屬性?Apr 28, 2025 pm 05:29 PM

本文討論了CSS背景屬性,它們在增強網站設計方面的用途以及避免的常見錯誤。重點是使用背景大小的響應式設計。

什麼是CSS HSL顏色?什麼是CSS HSL顏色?Apr 28, 2025 pm 05:28 PM

文章討論了CSS HSL顏色,其在網絡設計中的使用以及比RGB的優勢。主要重點是通過直觀的顏色操縱來增強設計和可訪問性。

我們如何在CSS中添加評論?我們如何在CSS中添加評論?Apr 28, 2025 pm 05:27 PM

本文討論了CSS中評論的使用,詳細介紹了單線和多行評論語法。它認為註釋可以增強代碼的可讀性,可維護性和協作,但如果無法正確管理,可能會影響網站性能。

什麼是CSS選擇器?什麼是CSS選擇器?Apr 28, 2025 pm 05:26 PM

本文討論了CSS選擇器,其類型和用於造型HTML元素的用法。它比較ID和類選擇器,並與復雜的選擇器解決性能問題。

哪種類型的CSS持有最高優先級?哪種類型的CSS持有最高優先級?Apr 28, 2025 pm 05:25 PM

本文討論了CSS優先級,重點是具有最高特異性的內聯風格。它解釋了特異性級別,覆蓋方法和用於管理CSS衝突的工具。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具