優(yōu)先級 和 CSS 預(yù)處理

前言扯淡

前兩天電話面試幕庐,被問道了一些 CSS 的基礎(chǔ)問題解愤,雖然答上來了冈绊,但是不夠全面侠鳄,而且給自己最大的感受是自己對一些概念十分模棱兩可,最直觀的體現(xiàn)是有時候知道這個概念死宣,卻不知道他叫什么伟恶。自以為懂,最為致命毅该。
需求是最好的學(xué)習(xí)API的方式博秫,面試找工作是最好的學(xué)習(xí)沉淀的過程】粽疲快倆個月沒寫博客了台盯,終于今天在回顧時有一點點小的感悟,打算記錄下來畏线,主要是給自己看。廢話不多說良价,開始正文寝殴。

首先是 優(yōu)先級

鏈接是文檔蒿叠,優(yōu)先級主要是指CSS屬性的優(yōu)先級。

瀏覽器通過優(yōu)先級來判斷哪一些屬性值與一個元素最為相關(guān)蚣常,從而在該元素上應(yīng)用這些屬性值市咽。優(yōu)先級是基于不同種類選擇器組成的匹配規(guī)則。

簡單來說抵蚊,當(dāng)你給一個元素聲明(或該元素繼承而來)多個相同屬性時(前提)施绎,瀏覽器選擇哪一個作為該元素的應(yīng)用。

<div>
  <h1 id="title" class="title" style="color: yellow;">優(yōu)先級</h1>
</div>
<!--優(yōu)先級顯示為 pink-->
*{
  color: red;
}

h1{
  color: green;
}

.title{
  color: blue;
}

#title{
  color: black;
}

h1{
  color: pink !important;
}

優(yōu)先級如何確定:

選擇器優(yōu)先級贞绳,下面三種優(yōu)先級遞增:(不細看文檔都不知道這些平時在用的選擇器的所有名稱)

  1. ID選擇器(例如, #title)
  2. 類選擇器(class selectors) (例如,.title)谷醉,屬性選擇器(attributes selectors)(例如, [type="radio"]),偽類(pseudo-classes)(例如, :hover)
  3. 類型選擇器(type selectors)(例如, h1)和 偽元素(pseudo-elements)(例如, ::before)

通配選擇符(universal selector)(*), 關(guān)系選擇符(combinators) (+, >, ~, ' ') 和 否定偽類(negation pseudo-class)(:not()) 對優(yōu)先級沒有影響冈闭。(但是俱尼,在 :not() 內(nèi)部聲明的選擇器是會影響優(yōu)先級)。
給元素添加的內(nèi)聯(lián)樣式 (例如, style="color: yellow;") 總會覆蓋外部樣式表的任何樣式 萎攒,因此可看作是具有最高的優(yōu)先級遇八。
!important 是例外,此聲明將覆蓋任何其他聲明耍休,技術(shù)上!important與優(yōu)先級無關(guān)刃永,但它與它直接相關(guān)。

如何利用優(yōu)先級

  1. 選擇器越具體羊精,優(yōu)先級越高斯够。
  2. 相同優(yōu)先級情況下,后面的樣式覆蓋前面的园匹。
  3. !important 最特殊,有他的聲明最優(yōu)先裸违,但應(yīng)該避免使用。

上面內(nèi)容均來自 MDN供汛,也就是我給的鏈接,還有很多如無視DOM樹中的距離等沒有記錄怔昨。大家還是直接看MDN為宜雀久。這些真的是簡單的基礎(chǔ)內(nèi)容,但確實有很多細節(jié)趁舀,如果能夠因為無意看到我的文章去看MDN文檔而收獲一些東西,便是此文的意義了越庇。
擴展閱讀 真正理解"CSS選擇器的優(yōu)先級"

CSS預(yù)處理(預(yù)編譯)

當(dāng)面試關(guān)問我知不知道CSS預(yù)處理的時候罩锐,我一時并沒有將其與平常再用的 LESS、SCSS 等預(yù)編譯器對上卤唉。也就是我文章開頭提到的涩惑,有時我們以為熟知的東西,事實上我們那么陌生竭恬。


(以下內(nèi)容來自 再談 CSS 預(yù)處理器)
CSS 預(yù)處理器是什么熬的?一般來說痊硕,它們基于 CSS 擴展了一套屬于自己的 DSL悦析,來解決我們書寫 CSS 時難以解決的問題:

  • 語法不夠強大,比如無法嵌套書寫導(dǎo)致模塊化開發(fā)中需要書寫很多重復(fù)的選擇器亭螟;
  • 沒有變量和合理的樣式復(fù)用機制,使得邏輯上相關(guān)的屬性值必須以字面量的形式重復(fù)輸出预烙,導(dǎo)致難以維護道媚。

所以這就決定了 CSS 預(yù)處理器的主要目標(biāo):提供 CSS 缺失的樣式層復(fù)用機制、減少冗余代碼最域,提高樣式代碼的可維護性。


這篇文章不打算繼續(xù)將 LESS牺蹄、SASS 等的嵌套薄翅、變量等語法規(guī)則。一來這些內(nèi)容非一篇文章講得清(我懶)翘魄,再者看官方文檔是最好的入門方式,同時像上面百度EFE的文檔比我寫肯定高到不知道哪里去了斋射。
那么我為什么會將 CSS 預(yù)處理和 優(yōu)先級 放在同一篇文章寫呢。也是面試官連續(xù)問的這倆個問題(真的很基礎(chǔ)了绩鸣,對我這種轉(zhuǎn)行前端新人十分照顧),再者其實兩者有一些聯(lián)系呀闻,CSS 預(yù)編譯也是在變相解決 優(yōu)先級 的問題潜慎,因為我們需要完美利用優(yōu)先級,所以我們在寫 CSS 時往往選擇器需要十分詳細垒手,如下

div{}
div>ul{}
div>ul>li{}
div>ul>li>a{}

本著 Dry 宗旨倒信,CSS 預(yù)編譯的嵌套規(guī)則就是為了解決優(yōu)先級啊。


本文僅供個人學(xué)習(xí)使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末榜掌,一起剝皮案震驚了整個濱河市乘综,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卡辰,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件反砌,死亡現(xiàn)場離奇詭異萌朱,居然都是意外死亡,警方通過查閱死者的電腦和手機森渐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門冒晰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人壶运,你說我怎么就攤上這事〔嚎觯” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵夺衍,是天一觀的道長喜命。 經(jīng)常有香客問我,道長壁榕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任颊咬,我火速辦了婚禮牡辽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘催享。我一直安慰自己,他們只是感情好因妙,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布攀涵。 她就那樣靜靜地躺著,像睡著了一般以故。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上炉媒,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天昆烁,我揣著相機與錄音,去河邊找鬼静尼。 笑死传泊,一個胖子當(dāng)著我的面吹牛鸭巴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播溪椎,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼惯豆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了楷兽?” 一聲冷哼從身側(cè)響起华临,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤雅潭,失蹤者是張志新(化名)和其女友劉穎揭厚,沒想到半個月后扶供,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡太援,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年提岔,在試婚紗的時候發(fā)現(xiàn)自己被綠了笋敞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碱蒙。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赛惩,死狀恐怖趁餐,靈堂內(nèi)的尸體忽然破棺而出喷兼,到底是詐尸還是另有隱情澎怒,我是刑警寧澤阶牍,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布星瘾,位于F島的核電站,受9級特大地震影響磕瓷,放射性物質(zhì)發(fā)生泄漏念逞。R本人自食惡果不足惜困食,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一硕盹、第九天 我趴在偏房一處隱蔽的房頂上張望叨咖。 院中可真熱鬧瘩例,春花似錦甸各、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至碧浊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間箱锐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工浩聋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留臊恋,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓坊夫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親环凿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

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

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5羽杰? 答:HTML5是最新的HTML標(biāo)準(zhǔn)到推。 注意:講述HT...
    kismetajun閱讀 27,485評論 1 45
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 13,751評論 1 92
  • 1.CSS 元素選擇器 最常見的 CSS 選擇器是元素選擇器颜骤。換句話說捣卤,文檔的元素就是最基本的選擇器。如果設(shè)置 H...
    饑人谷_小侯閱讀 862評論 0 1
  • 其實平時用得多的選擇器無非也就是那么幾個,時間久了唆阿,許多不常用的選擇器就慢慢忘記了。為了不讓自己忘記這些選擇器驯鳖,今...
    盛夏晚清風(fēng)閱讀 1,830評論 0 5
  • 沒有春雨綿綿的濕潤 沒有牧童悠揚的笛聲 在北方天清地明之間 只有干燥的風(fēng)吹響號角 夾雜著哀哀的嗚咽 我要在起風(fēng)之前...
    遠方孤雁閱讀 193評論 1 2