国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > CSS > 正文

css選擇器的優(yōu)先級:簡潔、高效的CSS

2024-07-11 09:01:54
字體:
供稿:網(wǎng)友

武林網(wǎng)(www.survivalescaperooms.com)文章簡介:css選擇器的優(yōu)先級和匹配原理。

選擇器種類

嚴格來講,選擇器的種類可以分為三種:標簽名選擇器、類選擇器和ID選擇器。而所謂的后代選擇器和群組選擇器只不過是對前三種選擇器的擴展應用。而在標簽內(nèi)寫入style=""的方式,應該是CSS的一種引入方式,而不是選擇器,因為根本就沒有用到選擇器。而一般人們將上面這幾種方式結(jié)合在一起,所以就有了5種或6種選擇器了。

注意,ID選擇器跟類選擇器有很大的不同:一個頁面內(nèi)不能出現(xiàn)相同的ID;再就是ID也是后臺開發(fā)人員會經(jīng)常用的,所以前端開發(fā)人員應該盡量少的使用。當然跟后臺人員的工作配合十分嫻熟之后,這些都不會成為限制。

擴展選擇器

◆后代選擇器,如.polaris span img{},后代選賊器實際上是使用多個選擇器加上中間的空格來找到具體的要控制標簽。

◆群組選擇器,如div,span,img{},群組選擇器實際上是對CSS的一種簡化寫法,只不過把有相同定義的不同選擇器放在一起,省了很多代碼。

選擇器的優(yōu)先級別

了解了各種選擇器后,還有一個重要的知識點就是CSS選擇器的優(yōu)先級。這也就是為什么polaris會遇到文章開頭的問題。舉個簡單的例子:

如果已經(jīng)把.polaris下面span內(nèi)的字體設置成紅色:

  • .polaris span {color:red;}
  • 這時,如果要改變.beijixing的顏色為藍色,用下面的命令是不能實現(xiàn)的:

  • .beijixing {color:blue;}
  • 出現(xiàn)這種情況就是因為后一個命令的優(yōu)先級不夠,兩條相互沖突的樣式設置,瀏覽器只會執(zhí)行優(yōu)先級較高的那個。

    那么選擇器的優(yōu)先級是怎么規(guī)定的呢?

    一般而言,選擇器越特殊,它的優(yōu)先級越高。也就是選擇器指向的越準確,它的優(yōu)先級就越高。通常我們用1表示標簽名選擇器的優(yōu)先級,用10表示類選擇器的優(yōu)先級,用100標示ID選擇器的優(yōu)先級。比如上例當中 .polaris span {color:red;}的選擇器優(yōu)先級是 10 + 1 也就是11;而 .polaris 的優(yōu)先級是10;瀏覽器自然會顯示紅色的字。理解了這個道理之后下面的優(yōu)先級計算自是易如反掌:

    對于什么情況下使用什么選擇器,用不同選擇器的原則是:第一:準確的選到要控制的標簽;第二:使用最合理優(yōu)先級的選擇器;第三:HTML和CSS代碼盡量簡潔美觀。通常:

    1、最常用的選擇器是類選擇器。

    2、li、td、dd等經(jīng)常大量連續(xù)出現(xiàn),并且樣式相同或者相類似的標簽,我們采用類選擇器跟標簽名選擇器結(jié)合的后代選擇器 .xx li/td/dd {} 的方式選擇。

    3、極少的情況下會用ID選擇器,當然很多前端開發(fā)人員喜歡header,footer,banner,content設置成ID選擇器的,因為相同的樣式在一個頁面里不可能有第二次。

    在這里不得不提使用在標簽內(nèi)引入CSS的方式來寫CSS,即:

  • 這時候的優(yōu)先級是最高的。我們給它的優(yōu)先級是1000,這種寫法不推薦使用,特別是對新手來說。這也完全違背了內(nèi)容和顯示分離的思想。DIV+CSS的優(yōu)點也不能再有任何體現(xiàn)。

    后代選擇器的定位原則

    在這里介紹一下對于后代選擇器,瀏覽器是如何查找元素的呢?

    瀏覽器CSS匹配不是從左到右進行查找,而是從右到左進行查找。比如DIV#divBox p span.red{color:red;},瀏覽器的查找順序如下:先查找html中所有class='red'的span元素,找到后,再查找其父輩元素中是否有p元素,再判斷p的父元素中是否有id為divBox的div元素,如果都存在則匹配上。

    瀏覽器從右到左進行查找的好處是為了盡早過濾掉一些無關(guān)的樣式規(guī)則和元素。比如如下html和css:

    如果按從左到右查找,那會先查找到很多不相關(guān)的p和span元素。而如果按從左到右的方式進行查找,則首先就查找到<span>的元素。firefox稱這種查找方式為key selector(關(guān)鍵字查詢),所謂的關(guān)鍵字就是樣式規(guī)則中最后(最右邊)的規(guī)則,上面的key就是span.red。

    簡潔、高效的CSS

    所謂高效的CSS就是讓瀏覽器在查找style匹配的元素的時候盡量進行少的查找,下面列出一些我們常見的寫CSS犯一些低效錯誤:

    ◆不要在ID選擇器前使用標簽名

    一般寫法:DIV#divBox

    更好寫法:#divBox

    解釋: 因為ID選擇器是唯一的,加上div反而增加不必要的匹配。

    ◆不要再class選擇器前使用標簽名

    一般寫法:span.red

    更好寫法:.red

    解釋:同第一條,但如果你定義了多個.red,而且在不同的元素下是樣式不一樣,則不能去掉,比如你css文件中定義如下:

     

  • p.red{color:red;}
  • span.red{color:#ff00ff}
  • 如果是這樣定義的就不要去掉,去掉后就會混淆,不過建議最好不要這樣寫

    ◆盡量少使用層級關(guān)系

    一般寫法:#divBox p .red{color:red;}

    更好寫法:.red{..}

    ◆使用class代替層級關(guān)系

    一般寫法:#divBox ul li a{display:block;}

    更好寫法:.block{display:block;}

    發(fā)表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發(fā)表
    主站蜘蛛池模板: 南通市| 邵阳市| 扶余县| 普兰店市| 柏乡县| 漯河市| 盐源县| 昌平区| 台山市| 荔浦县| 乐都县| 广德县| 宁化县| 滨海县| 龙泉市| 中超| 遵义市| 莱芜市| 扎兰屯市| 洛南县| 丹凤县| 保亭| 富裕县| 武鸣县| 古交市| 邵阳县| 桃源县| 红原县| 平塘县| 嵩明县| 芜湖市| 阜新市| 福海县| 沛县| 安泽县| 阳春市| 新安县| 东兰县| 阳春市| 卢湾区| 连云港市|