好用的偽元素:before和:after

所有文章是按照以前自己博客發(fā)布順序轉(zhuǎn)移的毛仪,本文成文較早排嫌,在行文的時(shí)候有些錯(cuò)誤契讲,偽類≠偽元素兩者還是有差異的仿吞,當(dāng)時(shí)發(fā)現(xiàn)這個(gè)錯(cuò)誤的時(shí)候我只是修改了題目,文章內(nèi)容沒有修改捡偏。姑且這么看吧唤冈。

提到偽類估計(jì)大家第一個(gè)在腦海中想起來的就是:hover,我們經(jīng)常<a>上設(shè)置。能實(shí)現(xiàn)比較炫鼠標(biāo)交互的效果银伟。其實(shí):hover也能作用于其他元素你虹,例如在<div>上設(shè)置就能讓鼠標(biāo)在經(jīng)過時(shí)候發(fā)生改變⊥埽可以試下一下傅物。

div{
    width: 50px;
    height: 50px;
    background-color: blue;
}
div:hover{
    background-color: red;
}
divhover.jpg

這個(gè)不是今天說的重點(diǎn),今天要說的是偽類:before:after琉预,關(guān)于這倆哥們剛開始的時(shí)候我還真是小瞧了他們董饰,后來我還是逐漸重視它們起來。廢話不說國(guó)際慣例先來介紹瀏覽器的支持情況圆米。

beforeafterhistory.jpg

所有的瀏覽器都支持卒暂,下面來說下它們的作用。:before:after會(huì)在指定的元素內(nèi)容(而不是元素本身)之前或者之后插入一個(gè)包含content屬性指定內(nèi)容的行內(nèi)元素娄帖,最基本的用法如下:

div:before {
    content: "這里是添加的開頭#####";
    color: red;
}
 
div:after {
    content: "$$$$$$這里是添加的結(jié)尾";
    color: red;
}
:before和:after的效果

這樣就在div前面和后面添加了我們?cè)?code>content里面設(shè)置的東西介却。需要注意的是content可以為空,即content:"";但是不能不設(shè)置块茁,否則偽類無效齿坷。由于插入的內(nèi)容默認(rèn)是一個(gè)行內(nèi)元素,并且在HTML源代碼中無法看到(這就是為什么稱之為偽類的原因)数焊,所以也就無法通過DOM對(duì)其進(jìn)行操作永淌。并且偽類元素也會(huì)像其他子元素一樣正常繼承父元素的一些CSS屬性,比如字體佩耳、顏色等遂蛀。我們的content里面不只能插入文本,還可以指定其他內(nèi)容干厚,例如圖片等李滴。

p:before,p:after{
    content: url("1.jpg");
 
}
a:after {
    content: attr(href);
}

<p>我是P標(biāo)簽螃宙,由于:before和:after我前后都會(huì)有圖片</p>
 
<a  >我是A標(biāo)簽因?yàn)?after我的后面會(huì)跟上我的鏈接地址</a>
beforeafter-content-example.jpg

很神奇是吧,發(fā)揮想象力吧所坯!了解了:before:after是不是有點(diǎn)要做什么的沖動(dòng)谆扎?它們能應(yīng)用的地方有很多。例如比較難搞的浮動(dòng)float,我們都知道如果在一個(gè)元素內(nèi)部的子元素設(shè)置了浮動(dòng)芹助,為了讓子元素能將父元素給“撐”起來堂湖,那么必須在父元素的結(jié)束標(biāo)簽前面需要設(shè)置清除浮動(dòng)clear:both,老辦法就是新建一個(gè)div然后引用浮動(dòng)的類状土。這樣會(huì)多一個(gè)毫無意義標(biāo)簽不說无蜂,在javascript操作子元素的時(shí)候還會(huì)出現(xiàn)莫名的BUG。

//偽類清楚浮動(dòng)
.clearfix:after {
    content:"";
    display:table;
}
 
.clearfix:after {
    clear:both;
}
 
/* For IE 6/7 */
.clearfix {
    zoom:1;
}

在設(shè)置浮動(dòng)的父元素的上引用.clearfix就能實(shí)現(xiàn)清楚浮動(dòng)蒙谓,很方便是吧斥季。為什么里面會(huì)有display:table;?因?yàn)檫@樣設(shè)置的:before:after會(huì)作為塊級(jí)表格來顯示(類似)累驮,表格前后帶有換行符酣倾。這樣就能確保萬無一失了。另外zoom:1;會(huì)在IE6/7瀏覽器下形成BFC區(qū)域以此來實(shí)現(xiàn)清除浮動(dòng)慰照。開下腦洞吧:before:after還能實(shí)現(xiàn)更神器的效果。比較經(jīng)典的例子就是用偽類實(shí)現(xiàn)八卦圖了琉朽,下面放出代碼:

#Gossip {
    width: 96px;
    height: 48px;
    background: snow;
    border-color: #444;
    border-style: solid;
    border-width: 2px 2px 50px 2px;
    border-radius: 100%;
    position: relative;
}
 
#Gossip:before {
    content: "";
    position: absolute;
    top: 50%;
    left: 0;
    background: snow;
    border: 18px solid #444;
    border-radius: 100%;
    width: 12px;
    height: 12px;
}
#Gossip:after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    background: #444;
    border: 18px solid snow;
    border-radius:100%;
    width: 12px;
    height: 12px;
}
CSS實(shí)現(xiàn)八卦效果

戳這里可以看八卦的代碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末毒租,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子箱叁,更是在濱河造成了極大的恐慌墅垮,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耕漱,死亡現(xiàn)場(chǎng)離奇詭異算色,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)螟够,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門灾梦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妓笙,你說我怎么就攤上這事若河。” “怎么了寞宫?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵萧福,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我辈赋,道長(zhǎng)鲫忍,這世上最難降的妖魔是什么膏燕? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮悟民,結(jié)果婚禮上坝辫,老公的妹妹穿的比我還像新娘。我一直安慰自己逾雄,他們只是感情好阀溶,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鸦泳,像睡著了一般银锻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上做鹰,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天击纬,我揣著相機(jī)與錄音,去河邊找鬼钾麸。 笑死更振,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的饭尝。 我是一名探鬼主播肯腕,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼钥平!你這毒婦竟也來了实撒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤涉瘾,失蹤者是張志新(化名)和其女友劉穎知态,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體立叛,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡负敏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了秘蛇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片其做。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赁还,靈堂內(nèi)的尸體忽然破棺而出庶柿,到底是詐尸還是另有隱情,我是刑警寧澤秽浇,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布浮庐,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏审残。R本人自食惡果不足惜梭域,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望搅轿。 院中可真熱鬧病涨,春花似錦、人聲如沸璧坟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雀鹃。三九已至幻工,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間黎茎,已是汗流浹背囊颅。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留傅瞻,地道東北人踢代。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嗅骄,于是被迫代替她去往敵國(guó)和親胳挎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案溺森? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,760評(píng)論 1 92
  • 轉(zhuǎn)自理解偽元素 :before 和 :after層疊樣式表(CSS)的主要目的是給HTML元素添加樣式慕爬,然而,在一...
    種諤閱讀 830評(píng)論 0 3
  • 本文并非原創(chuàng)儿惫,屬于摘抄性質(zhì)澡罚,并有個(gè)人的加工伸但。 盡管css 規(guī)范中包含其他的偽元素肾请,我們焦點(diǎn)是 ::before 和...
    前端xiyoki閱讀 2,286評(píng)論 0 3
  • 本文轉(zhuǎn)載自:眾成翻譯譯者:為之漫筆鏈接:http://www.zcfy.cc/article/239原文:http...
    極樂君閱讀 7,378評(píng)論 1 62
  • CSS 是什么 css(Cascading Style Sheets),層疊樣式表更胖,選擇器{屬性:值铛铁;屬性:值}h...
    崔敏嫣閱讀 1,488評(píng)論 0 5