CSS選擇器

一、 CSS選擇器常見的有幾種?

  • 通配符選擇器
    選擇所有元素:
    *{ }選擇某個元素下的所有元素:
    .demo *{ }表示類名為demo元素下的所有元素
    所有瀏覽器都支持通配符選擇器

  • 元素選擇器
    元素{ }選擇文檔元素
    所有瀏覽器都支持元素選擇器

  • 類選擇器
    .className{ }選擇類名為className的元素

    • 類選擇器與元素選擇器結合
      p.className{ }選擇類名為className的p元素
    • 多類選擇器
      .class1.class2{ }選擇同時有class1和class2這兩個類名的元素

    所有瀏覽器都支持類選擇器,但多類選擇器.class1.class2不被ie6支持。

  • id選擇器
    #IDName{ }選擇id為IDName的元素
    ID選擇器有幾個地方需要特別注意的:

一個文檔中一個id選擇器只充許使用一次,因為id在頁面中是唯一的;
id選擇器不能像類選擇器一樣多個合并使用,一個元素只能命名一個id名;
可以在不同的文檔中使用相同的id名,比如說在test.html中給h1定了#important
,也可以給test1.html中定義p的id為#important,但前提是不管在test.html
還是test1.html中只充許有一個id叫#important的存在。

所有瀏覽器都支持ID選擇器

  • 屬性選擇器

    • 元素[屬性]:選擇有某個屬性的元素
    • 元素[屬性][屬性]:同時具有這兩個屬性的元素
    • 元素[屬性="屬性值"]:指定屬性名,并指定了該屬性的屬性值
    • 元素[屬性~="value"]:某個屬性的屬性值中有value元素
    • [屬性="屬性值"]元素[屬性~="value"]的區別:
      屬性選擇器中有波浪(?)時屬性值有value時就相匹配,沒有波浪(?)時屬性值要完全是value時才匹配。
    • 元素[屬性^="value"]:選擇某個屬性的屬性值以“value”開頭的所有元素
    • 元素[屬性$="value"]:選擇某個屬性的屬性值以"value"結尾的所有元素
    • 元素[屬性*="value"]:選擇某個屬性的屬性值中包含子串"value"的所有元素
    • 元素[屬性|="value"]:選擇某個屬性的屬性值等于value或以value-開頭的所有元素

    屬性選擇器除了IE6不支持外,其他的瀏覽器都能支持

  • 后代選擇器(E F)
    元素1 元素2{ }:選擇元素1的所有后代元素元素2
    所有瀏覽器都支的后代選擇器

  • 子元素選擇器(E>F)
    元素1>元素2{ }:選擇元素1
    的所有子元素元素2
    IE6不支持子元素選擇器

  • 相鄰兄弟元素選擇器(E+F)
    元素1+元素2{ }:元素1與元素2
    在同一個父元素下,元素2在元素1后面,且相鄰,此選擇器選擇的是滿足上述條件的元素2
    IE6不支持這個選擇器

  • 通用兄弟元素選擇器
    元素1~元素2{ }:選擇某元素后面的所有兄弟元素
    通用兄弟選擇器和相鄰兄弟選擇器的區別:

    • 相鄰兄弟選擇器僅選擇是元素的僅與其相鄰的后面元素(選中的僅一個元素);
    • 通用兄弟元素選擇器,選中的是元素后面的所有兄弟元素(選中的元素有多個)

    IE6不支持這個選擇器

  • 分組選擇器
    元素1, 元素2:同時對元素1
    和元素2編寫樣式,常用于將具有相同樣式的元素分組在一起,簡化代碼
    所有瀏覽器都支持群組選擇器

  • 偽類選擇器

    • 動態偽類
      因為這些偽類并不存在于HTML中,而只有當用戶和網站交互的時候才能體現出來,動態偽類包含兩種,第一種是我們在鏈接中常看到的錨點偽類,如:link,:visited;另外一種被稱作用戶行為偽類,如:hover,:active和:focus。

      • 錨點偽類
        a:link {color:gray;}鏈接沒有被訪問時前景色為灰色
        a:visited{color:yellow;}鏈接被訪問過后前景色為黃色
        a:hover{color:green;}鼠標懸浮在鏈接上時前景色為綠色
        a:active{color:blue;}鼠標點中激活鏈接那一下前景色為藍色
        錨點偽類的先后順序:link–visited–hover–active

      • 用戶行為偽類
        :hover用于當用戶把鼠標移動到元素上面時的效果;
        :active用于用戶點擊元素那一下的效果(正發生在點的那一下,松開鼠標左鍵此動作也就完成了)
        :focus用于元素成為焦點,這個經常用在表單元素上

      :hover在IE6下只有a元素支持,:active只有IE7-6不支持,:focus在IE6-7下不被支持。

    • UI元素狀態偽類
      :enabled:disabled:checked主要是針對于HTML中的Form元素操作,最常見的比如我們type="textenabledisabled兩種狀態,前者為可寫狀態后者為不可狀態;另外type="radio"type="checkbox"checkedunchecked兩種狀態。
      IE6-8不支持:checked,:enabled,:disabled這三種選擇器。

    • CSS3的:nth選擇器
      :first-child選擇某個元素的第一個子元素;
      :last-child選擇某個元素的最后一個子元素;
      :nth-child()選擇某個元素的一個或多個特定的子元素;
      :nth-last-child()選擇某個元素的一個或多個特定的子元素,從這個元素的最后一個子元素開始算;
      :nth-of-type()選擇指定的元素;
      :nth-last-of-type()選擇指定的元素,從元素的最后一個開始計算;
      :first-of-type選擇一個上級元素下的第一個同類子元素;
      :last-of-type選擇一個上級元素的最后一個同類子元素;
      :only-child選擇的元素是它的父元素的唯一一個了元素;
      :only-of-type選擇一個元素是它的上級元素的唯一一個相同類型的子元素;
      :empty選擇的元素里面沒有任何內容。

    • 否定選擇器:not
      input:not([type="submit"]) {border: 1px solid red;}
      給除了type="submit"以外的所有input加邊框

    • 偽元素
      ::first-line選擇元素的第一行
      ::first-letter選擇文本塊的第一個字母,主要運用于段落排版上多,比如說首字下沉
      ::before::after這兩個主要用來給元素的前面或后面插入內容,這兩個常用content配合使用,見過最多的就是清除浮動,
      .clearfix:before,
      .clearfix:after {
      content: ".";
      display: block;
      height: 0;
      visibility: hidden;
      }
      .clearfix:after {clear: both;}
      .clearfix {zoom: 1;}

      ::selection用來改變瀏覽網頁選中文本的默認效果

二、選擇器的優先級是怎樣的?

選擇器按優先級從高到低排序:

  • !important
  • 內聯樣式
  • ID 選擇器
  • 偽類
  • 屬性選擇器
  • 類選擇器
  • 元素(類型)選擇器
  • 通用選擇器(*

三、class和id的使用場景

  • id使用場景
    具有唯一性使用id選擇器,如js中獲取元素
  • class使用場景
    公用的,類似的樣式使用類選擇器。

四、使用CSS選擇器時為什么要劃定適當的命名空間?

為了能夠更精確的定位到該元素,方便日后維護。舉個例子:

網頁中功能相似的模塊可能較多,比如導航,導航可能有頁面主導航,側邊欄導航,甚至頁腳導航,一般導航使用class類選擇器寫樣式,這時導航就不能單純的使用nav做class命名,要寫做main-nav,sidebar-nav,footer-nav,這樣不會造成樣式的污染.

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容

  • 其實平時用得多的選擇器無非也就是那么幾個,時間久了,許多不常用的選擇器就慢慢忘記了。為了不讓自己忘記這些選擇器,今...
    盛夏晚清風閱讀 1,864評論 0 5
  • 1.CSS 元素選擇器 最常見的 CSS 選擇器是元素選擇器。換句話說,文檔的元素就是最基本的選擇器。如果設置 H...
    饑人谷_小侯閱讀 878評論 0 1
  • 轉載自牢記31種CSS選擇器用法 1 * 星號選擇器用于選取頁面中的所有元素,可用于快速清除所有元素的 margi...
    Icestains閱讀 1,264評論 0 1
  • 1.class 和 id 的使用場景? 類選擇器允許以一種獨立于文檔元素的方式來指定樣式。該選擇器可以單獨使用,也...
    草鞋弟閱讀 2,446評論 0 1
  • 一、CSS選擇器常見的有幾種? 基本選擇器 通配選擇器~選擇文檔中所有的html元素,用一個*表示 元素選擇器~選...
    dengpan閱讀 977評論 0 3