CSS選擇器

選擇器是制作網(wǎng)頁效果非常重要的一部分浪箭,學會對選擇器的使用劣挫,對網(wǎng)頁效果圖的控制至關重要枪汪。

下面主要羅列的幾個選擇器:

  1. 基礎選擇器
  2. 組合選擇器
  3. 屬性選擇器
  4. 偽類選擇器
  5. 偽元素選擇器

=====================

1倍阐、基本選擇器 作用
* 通用選擇器主儡,匹配所有元素
tagName 元素(標簽)選擇器仇箱,對應標簽名為tagName的標簽進行樣式設置
.className 類選擇器县恕,對應類名為className的部分
#IDname ID選擇器,對應ID名為IDname的部分

選擇器書寫和樣例可以參考: CSS選擇器 - MDN

2剂桥、組合選擇器 作用
tagname1忠烛,tagname2 多元素選擇器,同時匹配所有tagname1或2权逗,兩個(或多個)之間用逗號分隔
T1 T2 后代元素選擇器美尸,匹配所有屬于T1元素后代的F元素,T1\T2之間用空格分隔
T1>T2 子元素選擇器斟薇,匹配所有T1元素的直接子元素T2
T1+T2 直接相鄰選擇器师坎,匹配緊隨T1元素之后同級元素T2(僅選中一個)
E~F 普通相鄰選擇器(弟弟選擇器),匹配E元素之后的同級元素F(無論直接相鄰與否)
.class1.class2 id和class選擇器和選擇器連寫的時候中間沒有分隔符堪滨,. 和 # 本身充當分隔符的元素屹耐。這樣子僅選中一個元素

空格與大于號的區(qū)別需要注意,且可以通過>這種組合方法來使得匹配更加嚴格椿猎。

直接相鄰選擇器僅選中一個同類元素惶岭,而普通相鄰選擇器選中不止一個元素且不需要直接(緊密)相鄰。

3犯眠、屬性選擇器 作用
E[attr] 匹配所有具有屬性attr的元素按灶,div[id]就能取到所有有id屬性的div
E[attr = value] 匹配屬性attr值為value的元素,div[id=test],匹配id=test的div
E[attr ~= value] 匹配所有屬性attr具有多個空格分隔筐咧、其中一個值等于value的元素
E[attr ^= value] 匹配屬性attr的值以value開頭的元素
E[attr $= value] 匹配屬性attr的值以value結尾的元素
E[attr *= value] 匹配屬性attr的值包含value的元素

注:這部分內容和正則的使用相關

4鸯旁、偽類選擇器 作用
E:first-child 匹配父元素的第一個子元素
E:link 匹配所有未被點擊的鏈接
E:visited 匹配所有已被點擊的鏈接
E:active 匹配鼠標已經(jīng)其上按下、還沒有釋放的E元素
E:hover 匹配鼠標懸停其上的E元素
E:focus 匹配獲得當前焦點的E元素
E:nth-child(n) 匹配E的父元素的第n個子元素量蕊,第一個編號為1
E:last-child 匹配父元素的最后一個子元素铺罢,等同于:nth-last-child(1)

偽類選擇器往往表示元素的一個狀態(tài),對不同狀態(tài)進行css設置残炮。除了上述常用的之外韭赘,還有E:enabled/disabled 來 匹配表單中可用/禁用的元素 ; E:checked匹配表單中被選中的radio或checkbox元素; E::selection 匹配用戶當前選中的元素。

關于E:nth-child(n)势就, 注意E元素必須得有父元素泉瞻,然后它會尋找同類的元素E(類名E或者標簽名E相同)脉漏,若在尋找時第n個位置被不同元素的位置占有則不生效。下圖中將.two類移到除第二個以外的位置均生效袖牙,但在算第n個時它也是占位的侧巨。

E:nth-child(n)

n的取值可以是 :

  • 1,2鞭达,3司忱,4,5 ...
  • 4n+1,4n+2,4n+3,4n+4..etc (每四個設置不同的樣式)
  • odd(奇數(shù)), even(偶數(shù))
注意兩者區(qū)別(空格)
div:first-child 選擇div父元素下的第一個且是div的子元素
div :first-child 選擇div元素下的第一個子元素

div:first-of-type 選擇的是父元素下每一類的第一個畴蹭,例如下例子中被選中的是p[a]&h3[b]

<style>
.item1:first-of-type{
  background: blue;
}
</style>
<div class="ct">
   <p class="item1">a</p>
   <h3 class="item1">b</h3>
   <h3 class="item1">c</h3>
 </div>

a:link, a:hover, a:active, a:visited 的書寫順序及原因

書寫順序 :

  • a:link
  • a:visited
  • a:hover
  • a:active

因為上面四個樣式的權重是一樣坦仍,寫在后面的樣式會覆蓋前面的樣式。即觸發(fā)了后面的事件后若無釋放則會一直覆蓋前面的樣式撮胧,說到底還是CSS層疊性的問題:

  1. 若無任何操作,則顯示a:link
  2. 若已經(jīng)訪問老翘,則a:visited會覆蓋a:link芹啥,所以a:visiteda:link之后(若把a:visited放在最后,則觸發(fā)過visited之后前面的樣式就會被覆蓋了無法再次觸發(fā))
  3. 無論是否訪問铺峭,鼠標經(jīng)過時 a:hover需要生效墓怀,所以寫在a:linka:visited
  4. 當點擊時則只會顯示 a:active,所以寫在最后
5卫键、偽元素選擇器 作用
E::first-line 匹配E元素內容的第一行
E::first-letter 匹配E元素內容的第一個字母
E::before 在E元素之前插入生成的內容
E::after 在E元素之后插入生成的內容

可以兩個冒號也可以一個冒號傀履,老IE對兩個冒號不兼容,但兩個冒號是CSS3的新寫法莉炉,更加規(guī)范钓账。

注意對于偽元素選擇器,必須加content屬性絮宁,如下例梆暮,則content中的內容會加入到main內部,作為第一個子元素绍昂,內容是necessary

.main::before {
content: "necessary"; }

部分參考: CSS選擇器筆記 - 阮一峰

=====================
<br />

選擇器的使用經(jīng)驗

  • 遵守 CSS 書寫規(guī)范(可參考這篇文章
  • 使用合適的命名空間
  • 合理的復用class

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

  1. !important
  2. 內聯(lián)樣式
  3. id選擇器
  4. 類選擇器
  5. 偽類選擇器
  6. 屬性選擇器
  7. 標簽選擇器
  8. 通配符選擇器
  9. 瀏覽器自定義
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末啦粹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子窘游,更是在濱河造成了極大的恐慌唠椭,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忍饰,死亡現(xiàn)場離奇詭異贪嫂,居然都是意外死亡,警方通過查閱死者的電腦和手機艾蓝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門撩荣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铣揉,“玉大人,你說我怎么就攤上這事餐曹」涔埃” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵台猴,是天一觀的道長朽合。 經(jīng)常有香客問我,道長饱狂,這世上最難降的妖魔是什么曹步? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮休讳,結果婚禮上讲婚,老公的妹妹穿的比我還像新娘。我一直安慰自己俊柔,他們只是感情好筹麸,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雏婶,像睡著了一般物赶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上留晚,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天酵紫,我揣著相機與錄音,去河邊找鬼错维。 笑死奖地,一個胖子當著我的面吹牛,可吹牛的內容都是我干的赋焕。 我是一名探鬼主播鹉动,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宏邮!你這毒婦竟也來了泽示?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蜜氨,失蹤者是張志新(化名)和其女友劉穎械筛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體飒炎,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡埋哟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赤赊。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡闯狱,死狀恐怖,靈堂內的尸體忽然破棺而出抛计,到底是詐尸還是另有隱情哄孤,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布吹截,位于F島的核電站瘦陈,受9級特大地震影響,放射性物質發(fā)生泄漏波俄。R本人自食惡果不足惜晨逝,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望懦铺。 院中可真熱鬧捉貌,春花似錦、人聲如沸冬念。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽刘急。三九已至棚菊,卻和暖如春浸踩,著一層夾襖步出監(jiān)牢的瞬間叔汁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工检碗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留据块,地道東北人。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓折剃,卻偏偏與公主長得像另假,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子怕犁,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內容

  • 1.class 和 id 的使用場景? class:類選擇器边篮,一個標簽可以有多個類且同一個類可以用到不同的標簽上,...
    饑人谷_兔子君閱讀 1,194評論 0 0
  • 其實平時用得多的選擇器無非也就是那么幾個奏甫,時間久了戈轿,許多不常用的選擇器就慢慢忘記了。為了不讓自己忘記這些選擇器阵子,今...
    盛夏晚清風閱讀 1,834評論 0 5
  • 1.class 和 id 的使用場景? 當頁面中某元素的樣式并不獨有思杯,或與其他元素共用一個樣式時,可以為該元素指定...
    Feiyu_有貓病閱讀 926評論 0 0
  • 1.class 和 id 的使用場景? 類選擇器允許以一種獨立于文檔元素的方式來指定樣式誊册。該選擇器可以單獨使用,也...
    草鞋弟閱讀 2,419評論 0 1
  • CSS選擇器結構邏輯圖 接下來按照結構邏輯圖具體講解各個選擇器的作用及用法暖璧; 基本選擇器 基本選擇器主要有以下5類...
    FoolishFlyFox閱讀 566評論 0 8