5 CSS 复合选择器

  复合选择器可以更准确、更高效的选择目标元素(标签),复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的,常用的复合选择器包括:后代选择器、子选择器、并集选择器、伪类选择器等等

5.1 后代选择器

  • 作用:根据 HTML 标签的嵌套关系,选择父元素后代中满足条件的元素
  • 选择器语法:选择器1 选择器2 { css }
  • 结果:在选择器1中找到为选择器2的后代标签,设置样式
  • 注意点:
    • 后代包括:儿子、孙子、重孙子......
    • 后代选择器中,选择器与选择器之前通过空格隔开

图 1

5.2 子代选择器

  • 作用:根据 HTML 标签的嵌套关系,选择父元素子代中满足条件的元素
  • 选择器语法:选择器1 > 选择器2 { css }
  • 结果:在选择器1中找到为选择器2的子代标签,设置样式
  • 注意点:
    • 子代只包括:儿子
    • 子代选择器中,选择器与选择器之前通过 > 隔开

图 2

5.3 并集选择器

  • 作用:同时选择多组标签,设置相同的样式
  • 选择器语法:选择器1,选择器2 { css }
  • 结果:找到选择器1和选择器2选中的标签,设置样式
  • 注意点:
    • 并集选择器中的每组选择器之间通过 , 分隔
    • 并集选择器中的每组选择器可以是基础选择器或者复合选择器
    • 并集选择器中的每组选择器通常一行写一个,提高代码的可读性

图 4

5.4 交集选择器

  • 作用:选中页面中同时满足多个选择器的标签
  • 选择器语法:选择器1选择器2 { css }
  • 结果:(既又原则)找到页面中既能被选择器1选中,又能被选择器2选中的标签,设置样式
  • 注意点:
    • 交集选择器中的选择器之间是紧挨着的,没有东西分隔
    • 交集选择器中如果有标签选择器,标签选择器必须写在最前面

图 3

5.5 属性选择器

  • 场景:通过元素上的HTML属性来选择元素,常用于选择 input 标签
  • 选择器语法:
语法 功能
E[attr]{ } 选择具有attr属性的E元素
E[attr="val"]{ } 选择具有attr属性并且属性值等于val的E元素

图 4

5.6 伪类选择器

  • 伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第1个,第n个元素
  • 伪类选择器书写最大的特点是用冒号(:)表示,比如 :hover 、 :first-child

5.6.1 hover伪类选择器

  • 作用:选中鼠标悬停在元素上的状态,设置样式
  • 选择器语法:选择器:hover { css }

      /* 悬停的时候文字颜色是红色 */
      a:hover {
          color: red;
          background-color: green;
      }
    
      /* 用户鼠标悬停到div的时候, 文字是绿色 */
      div:hover {
          color: green;
      }
    

5.6.2 结构伪类选择器

  • 作用与优势:
    • 作用:根据元素在HTML中的结构关系查找元素
    • 优势:减少对于HTML中类的依赖,有利于保持代码整洁
    • 场景:常用于查找某父级选择器中的子元素
  • 选择器
选择器 说明
E:first-child{} 匹配父元素中第一个子元素,并且是E元素
E:last-child{} 匹配父元素中最后一个子元素,并且是E元素
E:nth-child(n){} 匹配父元素中第n个子元素,并且是E元素
E:nth-last-child(n){} 匹配父元素中倒数第n个子元素,并且是E元素
  • n的注意点:
    • n为:0、1、2、3、4、5、6、......
    • 通过n可以组成常见公式
功能 公式
偶数 2n、even
奇数 2n+1、2n-1、odd
找到前5个 -n+5
找到从第5个往后 n+5

图 6

5.6.2 链接伪类选择器

  • 场景:常用于选中超链接的不同状态
  • 选择器语法:
选择器语法 功能
a:link{ } a链接未访问过的状态
a:visited{ } a链接访问之后的状态
a:hover{ } 鼠标悬停的状态
a:active{ } 鼠标按下的状态
  • 注意点:
    • 如果需要同时实现以上四种伪类状态效果,需要按照 LVHA 顺序书写
    • 其中 :hover伪类选择器 使用更为频繁,常用于选择各类元素的悬停状态

5.6.3 焦点伪类选择器

  • 场景:用于选中元素获取焦点时状态,常用于表单控件
  • 选择器语法:input:focus{ }
  • 效果:表单控件获取焦点时默认会显示外部轮廓线

图 7

results matching ""

    No results matching ""