關於僞類元素:before和:after

關於僞類元素:before和:after

Posted@2011-11-02 3:02 p.m.javascript

Categoriescsscss

:before和:after的做用就是在指定的元素內容(而不是元素自己)以前或者以後插入一個包含content屬性指定內容的行內元素,最基本的用法以下:java

#example:before {
    content: "#";
    color: red;
}

#example:after {
    content: "$";
    color: red;
}

這段代碼會在#example元素內容以前插入一個'#',以及在內容以後添加一個'$',插入的行內元素是做爲#example的子元素,效果以下:瀏覽器

Here is the example content函數

須要注意的是若是沒有content屬性,僞類元素將沒有任何做用。可是能夠指定content爲空,同時正如前面所說,插入的內容默認是一個行內元素,而且在HTML源代碼中沒法看到,這就是爲何稱之爲僞類元素的理由,因此也就沒法經過DOM對其進行操做。post

#example:before {
    content: "";
    display: block;
    width: 100px;
    height: 100px;
}

僞類元素也會像其餘子元素同樣正常繼承父元素的一些CSS屬性,好比字體等。字體

除了插入文字內容,還能夠指定其餘內容:url

p:before {
    content: url('img.jpg');
}
a:after {
    content: attr(href);
}

attr()函數會返回指定元素對應屬性的值spa

最後,奉上最惦記的瀏覽器支持狀況3d

  • Chrome 2+,
  • Firefox 3.5+ (3.0 had partial support),
  • Safari 1.3+,
  • Opera 9.2+,
  • IE8+ (with some minor bugs),
  • Pretty much all mobile browsers.

放在僞類元素裏面的內容通常都只是裝飾性的,因此即使是IE6/7不支持也應該能降級到正常顯示主體內容。

:before和:after的一些驚人用法

>. clearfix hack

若是父元素容器裏面的子元素是浮動元素的話,咱們通常須要在父元素閉合前添加一個clear:both的元素用於清除浮動從而能使父容器正常被子元素內容撐起,可是這種方法引入了多餘的無心義標籤,而且有javascript操做子元素的時候容易引起bug。一種更好的方法是利用CSS,因此在一些CSS文件中常常會看到相似於.clearfix這樣的類出沒,只要在父容器上應用這個類便可實現清除浮動。下面是利用:before和:after的一個實現:(viaNicolas Gallagher)

/* For modern browsers */
.clearfix:before,
.clearfix:after {
    content:"";
    display:table;
}

.clearfix:after {
    clear:both;
}

/* For IE 6/7 (trigger hasLayout) */
.clearfix {
    zoom:1;
}

>. CSS實現的八卦圖案

 
#yin-yang {
    width: 96px;
    height: 48px;
    background: #eee;
    border-color: red;
    border-style: solid;
    border-width: 2px 2px 50px 2px;
    border-radius: 100%;
    position: relative;
}

#yin-yang:before {
    content: "";
    position: absolute;
    top: 50%;
    left: 0;
    background: #eee;
    border: 18px solid red;
    border-radius: 100%;
    width: 12px;
    height: 12px;
}

#yin-yang:after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    background: red;
    border: 18px solid #eee;
    border-radius:100%;
    width: 12px;
    height: 12px;
}

資源連接

 

Anaclara

相關文章