這裡的黑科技其實就是一些CSS中不太為人所知但在解決某些問題的時候很溜的屬性。
border-radius
很多開發者估計都沒有正確認識這個border-radius,因為基本上很多人都是這麼用的:
.box { border-radius: 4px; }
rr]稍微黑道的是這樣的:高端
.box { border-radius: 4px 6px 6px 4px; }
rr㜀是這樣用的:
.box { border-radius: 5px 5px 3px 2px / 5px 5px 1px 3px; }
對,它可以賦8個值,沒看過?不急,具體的解釋是這樣的:
斜線前面的影響的是水平方向,斜線後面影響的是垂直方向,各個數字就分別代表四個不一樣的方向。
outline-offset
相信很多開發者在寫CSS的時候對下面的語句會很熟悉:
input { outline : none; } input:focus { outline : none; }
這就是將input輸入框去掉預設的藍色線框的方法。其實,這裡還有說一個就是,CSS中還有一個outline-offset屬性,在這個屬性中,你可以設定預設線框的距離;像這樣
input { outline-offset: 4px ; }
調節該屬性值的大小你就可以看到outline的距離變化了。
類的聲明
對於下面的類別的聲明,可能大家都很熟悉:
.col-8 { }
這當然沒什麼,但是如果你這樣寫呢:
.♥ { color: hotpink; } .★ { color: yellow; }
嗯沒什麼,看起來怎麼樣:
<div class="♥ ★"></div>
只要是Unicode的,你都可以這麼來宣告你的類別。
選中連續的幾個元素
ol li:nth-child(n+7):nth-child(-n+14) { background: lightpink; } /** Or Safari Way **/ ol li:nth-child(-n+14):nth-child(n+7) { background: lightpink; }
上面的這種寫法其實就可以達到選中ol下面的第七到第十四個li元素。
偽類設定單標籤
html中有幾個常見的單標籤:
,
下面的範例是實現對
hr:before { content: "♪♪"; } hr:after { content: " This is an <hr> element"; }
沒錯,關鍵就是使用:before和:after這兩個偽類。在這裡,順便說一點就是,其實你還可以用這兩個偽類來修飾 和,不過這個前提是,你把這兩個的display屬性設定為:
display: block
屬性區分大小寫
假如我們在寫html的時候有類似下面的程式碼:
<div class="box"></div> <input type="email">
然後我們用屬性選擇器進行CSS修飾:
div[class="box"] { color: blue; } input[type="email"] { border: solid 1px red; }
這樣的聲明方式毫無疑問地就會生效。然而,如果我們宣告成下面這個樣子,結果會是怎麼樣的呢:
div[class="BOX"] { color: blue; } input[type="EMAIL"] { border: solid 1px red; }
這變成了大寫之後,第一個class="BOX"並不會影響到