總結(jié)CSS基礎(chǔ)中的一些小坑

CSS雖然很有趣埂息,入門也容易琳轿,但對于前端菜鳥、初學(xué)者來說耿芹,還是有一些小坑是無法避免的,這些小坑相對而言更需要去積累和理解挪哄,也是比較容易忽略的一些問題吧秕,以至于學(xué)到后來,因為沒有搞定這些小坑而延伸出許多“大坑”迹炼,相當(dāng)影響學(xué)習(xí)效率砸彬。

一颠毙、CSS選擇器

CSS中的選擇器大體分為五大類:

  • 基本選擇器
  • 關(guān)系選擇器
  • 偽類選擇器
  • 偽元素選擇器
  • 屬性選擇器

這五大類里每一類又分別有很多類型的選擇器,可以說是一個龐大的“選擇器”家族砂碉。然而蛀蜜,在實際使用過程當(dāng)中,用的最多的其實也就那么幾種而已增蹭,比如標(biāo)簽選擇器滴某,類選擇器,ID選擇器等滋迈。那么霎奢,我們在需要使用選擇器的時候,優(yōu)先考慮的究竟是什么呢饼灿?這時候有的同學(xué)肯定會疑惑幕侠,難道不是哪個更方便就用哪個嗎?

其實不然碍彭。我們從零學(xué)習(xí)前端開發(fā)晤硕,最終的目標(biāo)實際上是做一個合格的開發(fā)者,所以優(yōu)先考慮的肯定是“合格”二字庇忌。所以舞箍,在使用選擇器的時候,我們要考慮選擇器優(yōu)化這個概念漆枚。

對于瀏覽器來說创译,解析每種選擇器所耗費的時間并不一樣,那么如何才能寫出最優(yōu)選擇器呢墙基?

(引用內(nèi)容來源于IMWeb的技術(shù)文章)

根據(jù)網(wǎng)站效率專家Steve Souders指出软族,各種CSS選擇器的效率由高到低排序如下:

  • id選擇器
  • 類選擇器
  • 標(biāo)簽選擇器
  • 相鄰選擇器
  • 子選擇器
  • 后代選擇器
  • 通配符選擇器
  • 屬性選擇器
  • 偽類選擇器

假如現(xiàn)在需要對一個p元素來使用選擇器:

<p id="text" class="red">這是一個段落<p>

我們可以通過很多方法選中它,標(biāo)簽選擇器残制,類選擇器立砸,id選擇器都能做到,但按照執(zhí)行效率來說初茶,id選擇器是最佳的颗祝,其次是類選擇器,然后是元素選擇恼布,最后才是屬性選擇器螺戳。

這里有一個小例子,作為一個前端新手折汞,我剛開始練習(xí)CSS的時候倔幼,習(xí)慣在例子中使用了通用選擇器“*”來清除margin和padding:

*{margin: 0; padding: 0;}

直到后來,看到別人清除瀏覽器默認(rèn)樣式的時候都寫一大長串爽待,甚至引入一個專門的CSS文件來用于清除默認(rèn)樣式损同,我十分不解翩腐,用通用選擇器豈不是更方便?

后來才明白膏燃,這樣做反而是最沒有效率的茂卦!原因在于瀏覽器匹配文檔中所有的元素后會分別向上逐級匹配,一直到文檔的根節(jié)點才作罷组哩,這樣匹配的開銷是非常大的等龙。所以,應(yīng)當(dāng)避免使用通用選擇器禁炒。

還有一個問題很關(guān)鍵:瀏覽器又是如何識別你寫的選擇器的呢而咆?

實際上,瀏覽器讀取你的選擇器幕袱,遵循的原則是從選擇器的右邊到左邊讀取暴备。也就是說,順序是從右到左们豌。

所以當(dāng)你給一個元素寫了相當(dāng)多的選擇器涯捻,瀏覽器會從右到左來尋找,顯然路徑鏈會影響效率望迎。因此障癌,建議選擇器的層級最多不要超過四層。

綜上所述辩尊,在使用選擇器的時候涛浙,其實要做一個綜合考慮,每一次都用最優(yōu)解來使用摄欲,這樣才能提高代碼的效率轿亮。

二、CSS優(yōu)先級

CSS中的優(yōu)先級大概如下:

胸墙!important > style > id選擇器 > 類選擇器 > 元素選擇器 > "" > 瀏覽器默認(rèn) > 繼承*

這樣的優(yōu)先級比較方式比較籠統(tǒng)我注,所以還有一種比較普遍的簡化方式:

我們把每一個選擇器都用一個數(shù)字(權(quán)重值)來表示,元素選擇器用個位數(shù)迟隅,類選擇器用十位數(shù)但骨,id選擇器用百位數(shù)。

選擇器 權(quán)重值
id選擇器 100
類選擇器 10
元素選擇器 1

于是智袭,權(quán)重的計算我們可以總結(jié)如下圖所示:

其中奔缠,沒選中代表的就是繼承來的屬性。

知道了選擇器的優(yōu)先級吼野,那么元素最終的樣式究竟是如何得出的呢添坊?

我們知道,一個元素的樣式來源有:

  • 繼承自父級元素的樣式
  • 瀏覽器的默認(rèn)樣式
  • 元素自己聲明的樣式

最終應(yīng)用的樣式就是通過一系列復(fù)雜的計算體系而得到的箫锤。而這里面有幾個值需要注意贬蛙。

應(yīng)用值(used value)、初始值(initial value)谚攒、(inherit value)

最終應(yīng)用的樣式稱之為應(yīng)用值阳准,如果一個元素聲明了樣式,那么應(yīng)用值就是這個聲明的樣式馏臭,但如果沒有聲明野蝇,那應(yīng)用值又是什么?

這里還包括了兩個特殊的值:繼承值初始值括儒。

一個屬性默認(rèn)是繼承的绕沈,我們得到的它的父元素的同屬性的應(yīng)用值就叫做繼承值。如果屬性是默認(rèn)不繼承的帮寻,那么就會有一個初始值乍狐,這個初始值實際上就是一個默認(rèn)的值,比如width的初始值是auto固逗。

三浅蚪、CSS重置

有關(guān)CSS重置之前已經(jīng)提到過,就是清除瀏覽器默認(rèn)樣式烫罩。

對于不同的瀏覽器惜傲,其默認(rèn)樣式都是不一樣的,而且默認(rèn)樣式有時候?qū)嶋H上就如同畫蛇添足一般贝攒,清除是非常必要的盗誊。

CSS重置分為兩種,一種是糾正重置隘弊,一種是清零重置

糾正重置哈踱,就如字面意思,因為瀏覽器默認(rèn)樣式有差異的緣故长捧,我們需要來消除這些差異嚣鄙,讓頁面在不同的瀏覽器中看起來一致。開源的normalize.css就可以做到這一點串结,這里不再贅述哑子。

清零重置,就是徹底的去除默認(rèn)樣式肌割,這個可以根據(jù)自己的需求來寫卧蜓,也可以參考一些文檔,例如:Eric Meyer's Reset CSS 2.0


我的個人Blog:chronosblog.top
我的微信公眾號:runtustory

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末把敞,一起剝皮案震驚了整個濱河市弥奸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奋早,老刑警劉巖盛霎,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赠橙,死亡現(xiàn)場離奇詭異,居然都是意外死亡愤炸,警方通過查閱死者的電腦和手機期揪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來规个,“玉大人凤薛,你說我怎么就攤上這事〉郑” “怎么了缤苫?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長墅拭。 經(jīng)常有香客問我活玲,道長,這世上最難降的妖魔是什么帜矾? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任翼虫,我火速辦了婚禮,結(jié)果婚禮上屡萤,老公的妹妹穿的比我還像新娘珍剑。我一直安慰自己,他們只是感情好死陆,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布招拙。 她就那樣靜靜地躺著,像睡著了一般措译。 火紅的嫁衣襯著肌膚如雪别凤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天领虹,我揣著相機與錄音规哪,去河邊找鬼。 笑死塌衰,一個胖子當(dāng)著我的面吹牛诉稍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播最疆,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼杯巨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了努酸?” 一聲冷哼從身側(cè)響起服爷,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后仍源,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體心褐,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年笼踩,在試婚紗的時候發(fā)現(xiàn)自己被綠了檬寂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡戳表,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昼伴,到底是詐尸還是另有隱情匾旭,我是刑警寧澤,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布圃郊,位于F島的核電站价涝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏持舆。R本人自食惡果不足惜色瘩,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逸寓。 院中可真熱鬧居兆,春花似錦、人聲如沸竹伸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勋篓。三九已至吧享,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間譬嚣,已是汗流浹背钢颂。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拜银,地道東北人殊鞭。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像盐股,于是被迫代替她去往敵國和親钱豁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案疯汁? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 13,734評論 1 92
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color牲尺,font,text-align,li...
    wzhiq896閱讀 1,732評論 0 2
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color谤碳,font溃卡,text-align,li...
    love2013閱讀 2,304評論 0 11
  • by 王琳潔 有時候命運就是如此神奇蜒简,你難以想象瘸羡,不知道什么命運在哪里轉(zhuǎn)了個彎,生活全部改變搓茬。今天去鄰居家玩了一下...
    燃燒的向日葵閱讀 571評論 2 0
  • Android 中的每個應(yīng)用程序都可以對自己感興趣的廣播進(jìn)行注冊犹赖,這樣該程序就只會接收到自己所關(guān)心的廣播內(nèi)容,這些...
    TTTqiu閱讀 367評論 0 0