CSS选择器学习笔记

  1. 选择器类型

    • 基础选择器
    • 组合选择器
    • 属性选择器
    • 伪类选择器
    • 伪元素选择器
  2. 各类选择器详解

    • 基础选择器

      选择器 含义
      * 通用元素选择器,匹配页面任何元素
      #id id选择器,匹配特定id的元素
      .class 类选择器,匹配class包含(不是等于)特定类的元素
      element 标签选择器
    • 组合选择器

      选择器 含义
      E,F 多元素选择器,用逗号分隔,同时匹配元素E和元素F
      E F 后代选择器,用空格分隔,匹配E元素所有的后代元素F
      E>F 子元素选择器,用>分隔,匹配E元素的所有直接子元素F
      E+F 直接相邻选择器,匹配E元素之后的相邻的同级元素F
      E~F 普通相邻选择器,匹配E元素之后的同级元素F(无论直接相邻与否)
      .class1.class2 id和class选择器和选择器连写的时候中间没有分隔符,.#本身充当分隔符的元素,匹配同时拥有这两个特性的元素
      element#id 同上
    • 属性选择器

      选择器 含义
      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的元素
    • 伪类选择器

      选择器 含义
      E:first-child 匹配元素E且为其父元素第一个子元素
      E:link 匹配所有未被点击的链接
      E:visited 匹配所有已被点击的链接
      E:active 匹配鼠标已经其上按下、还没有是释放的E元素
      E:hover 匹配鼠标悬停其上的E元素
      E:focus 匹配获得当前焦点的E元素
      E:lang(c) 匹配lang属性等于c的E元素
      E:enabled 匹配表单中可用的元素
      E:disabled 匹配表单中禁用的元素
      E:checked 匹配表单中被选中的radio或checkbox元素
      E::selection 匹配用户当前选中的元素
      E:root 匹配文档的根元素,对于HTML文档,就是HTML元素
      E:nth-child(n) 匹配其父元素的第n个子元素,第一个编号为1
      E:nth-last-child(n) 匹配其父元素的倒数第n个子元素,第一个编号为1
      E:nth-of-type(n) 与:nth-child()作用类似,但是仅匹配使用同种标签的元素
      E:nth-last-of-type(n) 与:nth-last-child()作用类似,但是仅匹配使用同种标签的元素
      E:last-child 匹配父元素的最后一个子元素,等同于:nth-last-child(1)
      E:first-of-type 匹配父元素下使用同种标签的第一个子元素,等同于nth-of-type(1)
      E:last-of-type 匹配父元素下使用同种标签的最后一个子元素,等同于nth-last-of-type(1)
      E:only-child 匹配父元素下仅有的一个子元素,等同于:first-child:last-child或nth-child(1):nth-last-child(1)
      E:only-of-type 匹配父元素下使用同种标签的唯一一个子元素,等同于:first-of-type:last-of-type或:nth-of-type(1):nth-last-of-type(1)
    • 伪元素选择器

      选择器 含义
      E::first-line 匹配E元素内容的第一行
      E::first-letter 匹配E元素内容的第一个字母
      E::before 在E元素之前插入生成的内容
      E::after 在E元素之后插入生成的内容
  3. 选择器优先级

    • 以下为从高到低排序

      1. 在属性后面使用!important会覆盖页面内任何位置定义的元素样式
      2. 作为style属性写在元素标签上的内联样式
      3. id选择器
      4. 类选择器
      5. 伪类选择器
      6. 属性选择器
      7. 标签选择器
      8. 通配符选择器
      9. 浏览器自定义
    • 复杂场景

      例如:

      #test p.class1 {
        ...
      }
      #test .class1.class2 {
        ...
      }
      
      • a: 行内样式

      • b: id选择器

      • c: 类,属性选择器和伪类选择器

      • d: 标签选择器、伪元素选择器

        示例:

        * {}                       /* a=0 b=0 c=0 d=0 -> 0,0,0,0 */
        p {}                       /* a=0 b=0 c=0 d=1 -> 0,0,0,1 */
        a:hover {}                 /* a=0 b=0 c=1 d=1 -> 0,0,1,1 */
        ul li {}                   /* a=0 b=0 c=0 d=2 -> 0,0,0,2 */
        ul ol+li {}                /* a=0 b=0 c=0 d=3 -> 0,0,0,3 */
        h1+input[type=hidden] {}   /* a=0 b=0 c=1 d=1 -> 0,0,1,1 */
        ul ol li.active {}         /* a=0 b=0 c=1 d=3 -> 0,0,1,3 */
        #ct .box p {}              /* a=0 b=1 c=1 d=1 -> 0,1,1,1 */
        div#header:after {}        /* a=0 b=1 c=0 d=2 -> 0,1,0,2 */
        style="" {}                /* a=1 b=0 c=0 d=0 -> 1,0,0,0 */
        
    • 样式覆盖

      例:

      div {
        color: #333;
      }
      ...
      div {
        color: #666;
      }
      

      选择器相同,则下面的样式会覆盖上面的。

你可能感兴趣的:(CSS选择器学习笔记)