幾個CSS的黑科技

jellybool.com發表於2015-08-06

  這裡的黑科技其實就是一些CSS中不怎麼為人所知但在解決某些問題的時候很溜的屬性。

 border-radius

  很多開發者估計都沒有正確認識這個border-radius,因為基本上很多人都是這麼用的:

.box {
  border-radius: 4px;
}

  稍微高階一點的是這樣的:

.box {
  border-radius: 4px 6px 6px 4px;
}

  然而,終極黑科技是這樣用的:

.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中有幾個常見的單標籤:<br> ,<hr>等。具體可以檢視這裡:

  http://www.w3.org/TR/html5/syntax.html#void-elements

  下面的示例是實現對<hr>的修飾。

hr:before {
    content: "♪♪";
}

hr:after {
    content: " This is an <hr> element";
}

  沒錯,關鍵就是使用:before和:after這兩個偽類。在這裡,順便說一點就是,其實你還可以用這兩個偽類來修飾<meta> 和 <link>,不過這個前提是,你把這兩個的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"並不會影響到<div class="box"></div>,而第二個type="EMAIL"還是會正常修飾<input type="email">。所以在使用屬性選擇器的時候,注意大小寫問題。

  目前就只覺得這些CSS黑科技需要提醒自己一下,有可以補充。

相關文章