各種瀏覽器之間的競爭的白熱化意味著越來越多的人現在開始使用那些支援最新、最先進的W3C Web標準的設備,以一種更具互動性的方式來存取網路。這意味著我們終於能夠利用更強大更靈活的CSS來創造更簡潔,更好維護的瀏覽器前端程式碼。現在讓我們來看看一些也許你還不知道的讓人興奮的CSS 功能。
attr()功能早在CSS 2.1標準中就已經出現,但現在才開始普遍流行。它提供了一個巧妙的方法在CSS中使用HTML標籤上的屬性,在許多情況下都能幫你省去了以往需要Javascript處理的過程。
要想使用這個功能,你需要用到三種元素:一個:before 或:after CSS偽類別樣式, .content屬性,和一個帶有你想使用的HTML屬性名稱的attr()表達式。例如,想去顯示684271ed9684bde649abda8831d4d355標題上的data-prefix屬性的值,你可以寫成這樣:
h3:before { content: attr(data-prefix) " "; } <h3 data-prefix="Custom prefix">This is a heading</h3>
顯然,這個例子並沒有展示它有多大用處,只是展示了它的基本用法。讓我們來試一個更有用的例子,attr()的一個極好的應用就是當使用者列印頁面時將頁面連結顯示出來。為了實現這個,你可以這樣寫:
@media print { a:after { content: " (link to " attr(href) ") "; } } <a href="example.com">Visit our home page</a>
一旦你知道了這個技巧,你就會吃驚於很多時候它能給你的工作帶來的方便!
提示:在新版的CSS3標準中,attr()功能被擴展,可以用在各種CSS標記中。在CSS2.1中attr()總是傳回一個字串。在CSS3中attr()可以傳回多種不同的型別。
另外一個在CSS 2.1在就已經支援的功能是counter(),使用它,你能方便的在頁面標題,區塊和其它各種連續出現的頁面內容上添加序號。有了它,你就不必限制於只能使用c34106e0b4e09414b63b2ea253ff83d6來實現這個效果,你可以更靈活的在頁面上使用自訂數字序列。
counter-reset 屬性設定某個選擇器出現次數的計數器的值。預設為 0。
利用這個屬性,計數器可以設定或重設為任何值,可以是正值或負值。如果沒有提供 number,則預設為 0。
註解:如果使用 "display: none",則無法重置計數器。如果使用 "visibility: hidden",則可以重設計數器。
註解:如果已規定 !DOCTYPE,那麼 Internet Explorer 8 (以及更高版本)支援 counter-reset 屬性。
值 | 描述 |
---|---|
none | 預設.不能對選擇器的計數器進行重置。 |
id number |
#id 定義重設計數器的選擇器、id 或 class。 number 可設定此選擇器出現次數的計數器的值。可以是正數、零或負數。 |
inherit | 規定應該從父元素繼承 counter-reset 屬性的值。 |
關鍵就是它真的很簡單:在:before偽類別裡的content屬性加入counter( ):
body { counter-reset: heading; } h4:before { counter-increment: heading; content: "Heading #" counter(heading) "."; }
如果你想知道更多關於這個counter歸零和自增方法的知識,請參考關於這個主題的Mozilla
Developer Network頁面。裡面有個極好的如何使用嵌套counter的例子。
最後,但不是最不重要的,讓我們來說說calc()功能。 calc是英文單字calculate(計算)的縮寫,是css3的一個新增的功能,用來指定元素的長度。這個函數能讓你執行簡單的算術計算,例如計算元素的長寬,免去了你寫不易維護的Javascript程式碼。這個函數支援所有簡單的基本算術運算,包括加減乘除。
表達式中有「+」和「-」時,其前後必須要有空格,如"widht: calc(12%+5em)"這種沒有空格的寫法是錯誤的;表達式中有「*」和「/」時,其前後可以沒有空格,但建議留有空格。瀏覽器對calc()的兼容性還算不錯,在IE9+、FF4.0+、Chrome19+、Safari6+都得到較好支持,同樣需要在其前面加上各瀏覽器廠商的識別符,不過可惜的是,行動端的瀏覽器大部分還不支持,目前僅有「firefox for android 14.0」支援。
比方說,你想創建一個元素,使它的寬度佔滿它的父元素,但還要留出一部分像素寬做其它用處:
.parent { width: 100%; border: solid black 1px; position: relative; } .child { position: absolute; left: 100px; width: calc(90% - 100px); background-color: #ff8; text-align: center; }
漂亮吧,不是嗎?
我們可以越來越清楚的發現,CSS已經成熟到在某些方法可以取代javascript,極大的簡化了web開發人員的工作。如果你還不開始利用這些功能,那隻能說是在犯傻。
以上是你必須了解的三個 CSS小 技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!