您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)怎么編寫(xiě)高效的CSS選擇符,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
首先看一小段 CSS 代碼:
#menus > li { font-size: 14px; }
可能大家都會(huì)猜想瀏覽器會(huì)使從左到右匹配上面的規(guī)則,我們會(huì)想象瀏覽器先找到唯一的 id 為 menus 的元素,然后把樣式應(yīng)用到其直系子元素 li 元素上。這看起來(lái)好像還挺高效的。
但是,事實(shí)上,CSS 選擇符是從右到左進(jìn)行匹配的。所以,上面的這條規(guī)則并不高效,瀏覽器必需遍歷頁(yè)面上的每個(gè) li 元素并確定其父元素的 id 是否為 menus。
樣式系統(tǒng)從最右邊的選擇符開(kāi)始向左匹配規(guī)則。只有當(dāng)前選擇符的左邊還有其他的選擇符,樣式系統(tǒng)就會(huì)繼續(xù)向左移動(dòng),直到找到和規(guī)則匹配的元素,或者因?yàn)椴黄ヅ涠顺觥?/p>
編寫(xiě)高效的CSS選擇符有以下常用規(guī)則:
一、避免使用通配規(guī)則
除了傳統(tǒng)意義上的通配選擇符之外,我們把相鄰兄弟選擇符、子選擇符、后代選擇符合屬性選擇符都?xì)w納到通配規(guī)則分類(lèi)下,推薦僅使用 ID、類(lèi)和標(biāo)簽選擇符。
二、不要限定 ID 選擇符
在頁(yè)面中一個(gè)指定的ID只能對(duì)應(yīng)一個(gè)元素,所以沒(méi)有必要添加額外的限定符。例如,div#header是沒(méi)有必要的,應(yīng)該簡(jiǎn)化為#header。
三、不要限定類(lèi)選擇符
不要用具體的標(biāo)簽限定類(lèi)選擇符,而是根據(jù)實(shí)際情況對(duì)類(lèi)名進(jìn)行擴(kuò)展。例如,把li.chapter改成.li-chapter,或是.list-chapter更好。
四、讓規(guī)則越具體越好
不要試圖編寫(xiě)像 ol li a 這樣的長(zhǎng)選擇符,最好是創(chuàng)建一個(gè)像.list-anchor一樣的類(lèi),并把它添加到適當(dāng)?shù)脑厣稀?/p>
五、避免使用后代選擇符
通常處理后代選擇符的開(kāi)銷(xiāo)時(shí)最高的,而使用子選擇符也可以得到想要的結(jié)果,并且更加高效。
六、避免使用標(biāo)簽—子選擇符
如果有像#menus > li > a這樣的基于標(biāo)簽的子選擇符,那么應(yīng)該使用一個(gè)類(lèi)來(lái)關(guān)聯(lián)每個(gè)標(biāo)簽元素,例如.menus-item。
七、質(zhì)疑子選擇符的所有用途
檢查所有使用子選擇符的地方,然后盡可能用具體的類(lèi)取代它們。
八、依靠繼承
了解哪些屬性可以通過(guò)繼承而來(lái),然后避免對(duì)這些屬性重復(fù)指定規(guī)則。例如,對(duì)列表元素而不是每個(gè)列表元素指定list-style-image。請(qǐng)參考繼承屬性的列表來(lái)了解每個(gè)元素的可繼承的屬性。
css的基本語(yǔ)法是:1、css規(guī)則由選擇器和一條或多條聲明兩個(gè)部分構(gòu)成;2、選擇器通常是需要改變樣式的HTML元素;3、每條聲明由一個(gè)屬性和一個(gè)值組成;4、屬性和屬性值被冒號(hào)分隔開(kāi)。
關(guān)于“怎么編寫(xiě)高效的CSS選擇符”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。