css選擇器

id選擇器

先看看class屬性和id屬性的區(qū)別吧攘残。

id

id用于定義唯一的標(biāo)識(shí)符插佛,它是一個(gè)全局屬性产弹,在整個(gè)HTML文檔中它的值必須是唯一的两疚。它的用途是當(dāng)進(jìn)行鏈接時(shí)標(biāo)識(shí)元素的(使用片段時(shí)的標(biāo)識(shí)符)床估,比如使用腳本,或者樣式(CSS)诱渤。
這個(gè)屬性的值是一個(gè)不能讀懂的字符串:這意味著網(wǎng)頁(yè)作者不能用他來(lái)傳遞任何信息丐巫,比如語(yǔ)義,不能從該字符串中得到(譯者認(rèn)為這句話的意思是勺美,id屬性的值只是用來(lái)標(biāo)識(shí)一個(gè)元素的字符串递胧,該字符串沒(méi)有實(shí)際的語(yǔ)義,即不能從中知道元素的功能或內(nèi)容等信息)赡茸。
這個(gè)屬性的值必須不能包含空格缎脾,對(duì)于包含空格的屬性值瀏覽器會(huì)認(rèn)為是不符合標(biāo)準(zhǔn)的。相比之下占卧,class屬性允許包含用空格隔開的多個(gè)值遗菠,而元素的id只能有一個(gè)單一的標(biāo)識(shí)符联喘。注意某個(gè)元素可能有幾個(gè)id,但是其他的id應(yīng)該是通過(guò)別的方法定義的辙纬,比如可以通過(guò)DOM接口操作元素的腳本豁遭。

class

全局屬性class,是一個(gè)以空格分隔的class屬性列表贺拣”托唬可允許CSS和Javascript對(duì)Class屬性進(jìn)行選擇,通過(guò)class選擇器或者類似DOM方法的方程來(lái)選取文檔中某一類特定的元素纵柿。document.getElementsByClassName
.

id選擇器
在一個(gè)HTML文檔中,CSS ID 選擇器會(huì)根據(jù)該元素的ID屬性中的內(nèi)容匹配元素,元素ID屬性名必須與選擇器中的ID屬性名完全匹配蜈抓,此條樣式聲明才會(huì)生效。
class選擇器
類選擇器昂儒,使用.name定義(name為類名沟使,可任意取名),使用class="name"調(diào)用渊跋,一個(gè)標(biāo)簽可以有多個(gè)類且同一個(gè)類可以用到不同的標(biāo)簽上腊嗡,多用于多個(gè)標(biāo)簽樣式相似或完全相同時(shí);

css常見選擇器

Type selectors elementname 類型選擇器

Class selectors .classname 類選擇器

ID selectors #idname id選擇器

Universal selectors * ns|* | 通配符

Attribute selectors [attr=value] 屬性選擇器

Combinators組合子

Adjacent sibling selectors A + B (:first-of-type CSS 偽類匹配子元素中新的種類的元素(第一次出現(xiàn)叫做新))

General sibling selectors A ~ B(在使用 ~ 連接兩個(gè)元素時(shí),它會(huì)匹配第二個(gè)元素,條件是它必須跟(不一定是緊跟)在第一個(gè)元素之后,且他們都有一個(gè)共同的父元素 .)

Child selectors A > B(當(dāng)使用 > 選擇符分隔兩個(gè)元素時(shí),它只會(huì)匹配那些作為第一個(gè)元素的直接后代(子元素)的第二元素. )

Descendant selectors A B(當(dāng)使用 ?
選擇符 (這里代表一個(gè)空格,更確切的說(shuō)是一個(gè)或多個(gè)的空白字符) 連接兩個(gè)元素時(shí)使得該選擇器可以只匹配那些由第一個(gè)元素作為祖先元素的所有第二個(gè)元素(后代元素) . 后代選擇器與 子選擇器 很相似, 但是后代選擇器不需要相匹配元素之間要有嚴(yán)格的父子關(guān)系.)

Pseudo-elements(偽元素) 偽元素添加到選擇器拾酝,但不是描述特殊狀態(tài)燕少,它們?cè)试S您為元素的某些部分設(shè)置樣式。
Pseudo-classes(偽類)SS偽類是添加到選擇器的關(guān)鍵字蒿囤,指定要選擇的元素的特殊狀態(tài)客们。

css優(yōu)先級(jí)與復(fù)雜場(chǎng)景的計(jì)算方式

優(yōu)先級(jí),復(fù)雜場(chǎng)景的計(jì)算方式
這里作為補(bǔ)充:

  1. "與"組合子


    image.png

    我在mdn上沒(méi)有找到相關(guān)的信息,但是確實(shí)有這樣的例子材诽,感謝老師的幫助底挫。暫且稱之為“與”選擇器吧。

  2. 直接選擇和繼承樣式


    image.png

    這里脸侥,沒(méi)有翻譯建邓,而且例子也有問(wèn)題,我就大概說(shuō)明一下吧睁枕,繼承屬性是會(huì)被直接選擇的屬性所替代的官边。

  3. 復(fù)雜場(chǎng)景的權(quán)重計(jì)算

1.類型選擇器(type selectors)(例如, h1)和 偽元素(pseudo-elements)(例如, ::before)(假設(shè)=a)
2.類選擇器(class selectors) (例如,.example),屬性選擇器(attributes selectors)(例如, [type="radio"])外遇,偽類(pseudo-classes)(例如, :hover)(假設(shè)=b)
3.ID選擇器(例如, #example)(假設(shè)=c)

數(shù)值越大優(yōu)先級(jí)越高
計(jì)算方法如下:

image.png

注意:相同類型的簡(jiǎn)單選擇器是允許重復(fù)的而且注簿,會(huì)增加對(duì)應(yīng)的權(quán)重

狀態(tài)偽類的覆蓋

正確的覆蓋順序:link、a:visited跳仿、a:hover诡渴、a:active (其中,link和visited可以互換)
1.鼠標(biāo)經(jīng)過(guò)的“未訪問(wèn)鏈接”同時(shí)擁有a:link塔嬉、a:hover兩種屬性玩徊,后面的屬性會(huì)覆蓋前面的屬性定義;
2.鼠標(biāo)經(jīng)過(guò)的“已訪問(wèn)鏈接”同時(shí)擁有a:visited谨究、a:hover兩種屬性恩袱,后面的屬性會(huì)覆蓋前面的屬性定義(hover也可以覆蓋active和link);

實(shí)例:

image.png

1 .#header{}:匹配Id=header的元素

  1. .header{}:匹配類class=header的元素
  2. .header .logo{}:
    匹配類為header元素的后代元素中類為logo的元素
  3. .header.mobile{}:
    匹配類名包含header和mobile的元素胶哲,如class = 'beader mobile'
  4. .header p, .header h3{}:
    匹配兩個(gè)類型的元素(并集畔塔,‘或’關(guān)系),類型1是header類的后代p標(biāo)簽鸯屿,類型2是header類的后代h3標(biāo)簽
    6.#header .nav>li{}:
    匹配id為header的后代中澈吨,類名為nav的直接子元素中,的li標(biāo)簽
    7.#header a:hover{}:
    匹配id為header的后代a標(biāo)簽在hover狀態(tài)(鼠標(biāo)懸停其上)下的樣式
    8.#header .logo~p{}:
    匹配id為header的后代中寄摆,類名為logo的元素之后的同級(jí)元素中谅辣,的p標(biāo)簽
    9.#header input[type="text"]{}
    id為header的后代中,input標(biāo)簽中婶恼,屬性type的值為"text"的元素集合

常見選擇器

E:first-child:匹配元素E的第一個(gè)子元素
E:nth-child:匹配元素E的第n個(gè)子元素
E:enabled和E:disabled:匹配元素E的狀態(tài)為可用/不可用
E:checked和E:selection:匹配元素E的狀態(tài)為單選框選中/復(fù)選框選中
a:link:未被點(diǎn)擊的鏈接
a:visited:已被點(diǎn)擊的鏈接
a:hover:鼠標(biāo)懸停其上的鏈接
a:active:鼠標(biāo)已經(jīng)按下桑阶,但沒(méi)有釋放的鏈接

div:first-child和div:first-of-type的作用和區(qū)別

div:first-child:父元素的第一個(gè)子元素且必須符合指定類型(為div)
div:first-of-type:父元素中的第一個(gè)div元素
區(qū)別:如

<body>
<p>title</p>
<div>div1</div>
<div>div2</div>
</body>

1.div:first-child指定必須是第一個(gè)元素的div標(biāo)簽,所以無(wú)效果
2.div:first-of-type指定第一個(gè)div標(biāo)簽勾邦,所以是指div1所在的div標(biāo)簽樣式

分析

image.png

原因:

  1. item1:first-child{ color: red;}
    指定父元素中第一個(gè)類名為item1的元素的字體顏色為紅色
  2. item1:first-of-type{ background: blue;}
    父元素中每一類元素的第一個(gè)類名為item1的元素的背景色為藍(lán)色蚣录,
    (即現(xiàn)將div中的子元素分為p、h3兩類標(biāo)簽眷篇,每一類取第一個(gè)類名為item1的元素萎河,最終:內(nèi)容為aa的p標(biāo)簽和內(nèi)容為bb的h3標(biāo)簽被選中)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蕉饼,隨后出現(xiàn)的幾起案子虐杯,更是在濱河造成了極大的恐慌,老刑警劉巖椎椰,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厦幅,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡慨飘,警方通過(guò)查閱死者的電腦和手機(jī)确憨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瓤的,“玉大人休弃,你說(shuō)我怎么就攤上這事∪Ω啵” “怎么了塔猾?”我有些...
    開封第一講書人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)稽坤。 經(jīng)常有香客問(wèn)我丈甸,道長(zhǎng)糯俗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任睦擂,我火速辦了婚禮得湘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘顿仇。我一直安慰自己淘正,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開白布臼闻。 她就那樣靜靜地躺著鸿吆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪述呐。 梳的紋絲不亂的頭發(fā)上惩淳,一...
    開封第一講書人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音乓搬,去河邊找鬼黎泣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛缤谎,可吹牛的內(nèi)容都是我干的抒倚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼坷澡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼托呕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起频敛,我...
    開封第一講書人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤项郊,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后斟赚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體着降,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年拗军,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了任洞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡发侵,死狀恐怖交掏,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情刃鳄,我是刑警寧澤盅弛,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響挪鹏,放射性物質(zhì)發(fā)生泄漏见秽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一讨盒、第九天 我趴在偏房一處隱蔽的房頂上張望张吉。 院中可真熱鬧,春花似錦催植、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至省核,卻和暖如春稿辙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背气忠。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工邻储, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人旧噪。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓吨娜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親淘钟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宦赠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

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

  • 1.class 和 id 的使用場(chǎng)景? class:類選擇器,一個(gè)標(biāo)簽可以有多個(gè)類且同一個(gè)類可以用到不同的標(biāo)簽上米母,...
    饑人谷_兔子君閱讀 1,192評(píng)論 0 0
  • 1.CSS 元素選擇器 最常見的 CSS 選擇器是元素選擇器勾扭。換句話說(shuō),文檔的元素就是最基本的選擇器铁瞒。如果設(shè)置 H...
    饑人谷_小侯閱讀 863評(píng)論 0 1
  • 1妙色,class 和 id 的使用場(chǎng)景? 1.class是類選擇器,用.class定義慧耍,定位到頁(yè)面中有相同特征的一類...
    饑人谷_思銘閱讀 369評(píng)論 0 0
  • class 和 id 的使用場(chǎng)景?class指定標(biāo)簽的類名身辨, 把需要相同樣式的元素歸類于一個(gè)name下,需要此樣式...
    饑人谷_CCCLARITY閱讀 247評(píng)論 0 0
  • class 和 id 的使用場(chǎng)景? id:id選擇器,使用#name命名芍碧,一個(gè)標(biāo)簽只能有一個(gè)id且每個(gè)id只能使用...
    jamesXiao_閱讀 237評(píng)論 0 0