各類瀏覽器之間的競爭的白熱化意味着愈來愈多的人如今開始使用那些支持最新、最早進的W3C Web標準的設備,以一種更具交互性的方式來訪問互聯網。這意味着咱們終於可以利用更強大更靈活的CSS來創造更簡潔,更好維護的瀏覽器前端代碼。如今讓咱們來看一看一些也許你還不知道的讓人興奮的CSS 功能。javascript
attr()功能早在CSS 2.1標準中就已經出現,但如今纔開始廣泛流行。它提供了一個巧妙的方法在CSS中使用HTML標籤上的屬性,在不少狀況下都能幫你省去了以往須要Javascript處理的過程。css
要想使用這個功能,你須要用到三種元素:一個:before 或 :after CSS僞類樣式, .content屬性,和一個帶有你想使用的HTML屬性名稱的attr()表達式。例如,想去顯示<h3>標題上的data-prefix屬性的值,你能夠寫成這樣:前端
h3:before { content: attr(data-prefix) " "; } <h3 data-prefix="Custom prefix">This is a heading</h3>
顯然,這個例子並無展現它有多大用處,只是展現了它的基本用法。讓咱們來試一個更有用的例子,attr()的一個極好的應用就是當用戶打印頁面時將頁面連接顯示出來。爲了實現這個,你能夠這樣寫:java
@media print { a:after { content: " (link to " attr(href) ") "; } } <a href="http://example.com">Visit our home page</a>
一旦你知道了這個技巧,你就會吃驚於不少時候它能給你的工做帶來的方便!css3
提示:在新版的CSS3標準中,attr()功能被擴展,能夠用在各類CSS標記中。web
另一個在CSS 2.1在就已經支持的功能是counter(),使用它,你能方便的在頁面標題,區塊和其它各類連續出現的頁面內容上添加序號。有了它,你就沒必要限制於只能使用<ol>來實現這個效果,你能夠更靈活的在頁面上使用自定義數字序列。瀏覽器
關鍵就是它真的很簡單:在:before僞類裏的content屬性加入counter():函數
body { counter-reset: heading; } h4:before { counter-increment: heading; content: "Heading #" counter(heading) "."; }
若是你想知道更多關於這個counter歸零和自增方法的知識,請參考關於這個主題的Mozillaspa
Developer Network頁面。裏面有個極好的如何使用嵌套counter的例子。ip
最後,但不是最不重要的,讓咱們來講說calc()功能。這個函數能讓你執行簡單的算術計算,例如計算元素的長寬,免去了你寫不易維護的Javascript代碼。這個函數支持全部簡單的基本算術運算,包括加減乘除。
比方說,你想建立一個元素,使它的寬度佔滿它的父元素,但還要留出一部分像素寬作其它用處:
.parent { width: 100%; border: solid black 1px; position: relative; } .child { position: absolute; left: 100px; width: calc(90% - 100px); background-color: #ff8; text-align: center; }
漂亮吧,不是嗎?更詳細的介紹請參考W3C CSS calc 規範。
咱們能夠愈來愈清楚的發現,CSS已經成熟到在某些方法能夠替代javascript,極大的簡化了web開發人員的工做。若是你還不開始利用這些功能,那隻能說是在犯傻。