CSS 之选择器

选择器

元素选择器

  • *{ }
    1. 通配选择符 (*)
    2. 选定所有对象。
    3. 通常不建议使用通配选择符,因为它会遍历并命中文档中所有的元素,出于性能考虑,需酌情使用。
  • E{ }
    1. 类型选择符(E)
    2. 以文档语言对象类型作为选择符。
    
    
    

    标题

    正文内容

  • #myid{ }
    1. ID选择符
    2. 以唯一标识符id属性等于myid的E对象作为选择符.
  • .myclass{ }
    1. 以class属性包含myclass的E对象作为选择符。

关系选择器

  • E F{ }
    1. 包含选择器,又称之为:后代选择器。
    2. 选择所有被E元素包含的F元素。
    3. 与子选择器不同的是,包含选择符将会命中所有符合条件的后代,包括儿子,孙子,孙子的孙子..
  • E>F{ }
    1. 子选择器
    2. 选择所有作为E元素的子元素F。
    3. 与包含选择符不同的是,子选择符只能命中子元素,而不能命中孙辈。
  • E+F{ }
    1. 相邻选择器
    2. 选择紧贴在E元素之后F元素。
    3. 与兄弟选择符不同的是,相邻选择符只会命中符合条件的相邻的兄弟元素。
    # 此例,如果使用 p+p{color:#f00;} ,那么p2,p5将会变成红色;
    # 如果使用p~p{color:#f00;},那么p2,p3,p4,p5将会变成红色;
    
    
    

    p1

    p2

    这是一个标题

    p3

    这是一个标题

    p4

    p5

  • E~F{ }
    1. 兄弟选择符
    2. 选择E元素后面的所有兄弟元素F。
    3. 与相邻选择符不同的是,兄弟选择符会命中所有符合条件的兄弟元素,而不强制是紧邻的元素。

属性选择器

  • [att]
    选择具有for属性的所有元素
    
    

    不带有 for 属性的 p 元素

    带有 for 属性的 p 元素

    带有 for 属性的 p 元素

  • E[att]
    选择具有att属性的E元素
    
    
    
    
    
  • E[att="val"]
    选择具有for属性,并且for=Alice的所有元素
    
    

    不带有 for 属性的 p 元素

    带有 for 属性的 p 元素,且for的值为 Ethan

    带有 for 属性的 p 元素,且for的值为 Alice

  • E[att^="val"]
    选择具有att属性,且属性值以字符串val开头的E元素。
    #此例,将会命中1, 2两个div,因为匹配到了class属性,且属性值以a开头
    
    
    
    1
    2
    3
  • E[att$="val"]
    选择具有att属性且属性值为以val结尾的字符串的E元素。
    #此例,将会命中1, 3两个div,因为匹配到了class属性,且属性值以c结尾
    
    
    
    1
    2
    3
  • E[att*="val"]
    选择具有att属性且属性值为包含字符串val的E元素。
    #此例,将会命中所有div,因为匹配到了class属性,且属性值中都包含了b
    
    
    
    1
    2
    3

伪类选择器

  • :first-child
    向元素的第一个子元素添加样式
  • :last-child
    向元素的最后一个子元素添加样式
  • :nth-child(n)
    向元素的第 n 个子元素添加样式
    特殊应用(可用于表格隔行变色):
    • :nth-child(even)
      选中偶数位置的子元素,添加样式
    • :nth-child(odd)
      选中奇数位置的子元素,添加样式
  • :nth-last-child(n)
    父元素的倒数第n个子元素E,假设第n个该子元素不是E,则选择符无效(E元素必须是某个元素的子元素)
    • 注意:

      第1个p

      第2个p

      第1个span

      第3个p

      第2个span
      1. 假设要命中倒数第一个p(即正数第3个p),那么CSS选择符应该是:
        p:nth-last-child(2)
      2. 而不是: p:nth-last-child(1)

      解释:
      1. 倒数第1个p,其实是倒数第2个子元素。
      2. 基于选择符从右到左解析,首先要找到第1个子元素,然后再去检查该子元素是否为p,如果不是p,则n递增,继续查找。

      1. 假设不确定倒数第1个子元素是否为E,但是又想命中倒数第1个E,应该这样写: p:last-of-type
  • :only-child
    匹配父元素仅有一个子元素,且该子元素为E。
    要使该属性生效,E元素必须是某个元素的子元素,E的父元素最高是body,即E可以是body的子元素。
    
    
    

    只有唯一一个子元素

    • 结构性伪类选择符 only-child
    • # 只有 这个字体变色了

    有多个子元素

    • 结构性伪类选择符 only-child
    • 结构性伪类选择符 only-child
    • 结构性伪类选择符 only-child
  • :first-of-type
    同类型中的第一个同级兄弟元素E
  • :last-of-type
    匹配同类型中的最后一个同级兄弟元素E。
    该选择符总是能命中父元素的倒数第1个为E的子元素,不论倒数第1个子元素是否为E。
  • :only-of-type
    匹配同类型中的唯一的一个同级兄弟元素E。
    该选择符总是能命中父元素的唯一同类型子元素E,不论该元素的位置。
    
    
    

    结构性伪类选择符 only-of-type

  • :nth-of-type(n)
    匹配同类型中的第n个同级兄弟元素E。
  • :nth-last-of-type(n)
    匹配同类型中的倒数第n个同级兄弟元素E。
    该选择符总是能命中父元素的倒数第n个为E的子元素,不论倒数第n个子元素是否为E。
  • :empty
    匹配没有任何子元素(包括text节点,即文字)的元素E。
  • :not(s)
    匹配不含有s选择符的元素E。
      
    
    

    否定伪类选择符 not(s)

    #只有class为 .abc的未变色,后面的三个都变色了

    否定伪类选择符 not(s)

    否定伪类选择符 not(s)

    否定伪类选择符 not(s)

超链接的伪类

  • a:link{}
    设置超链接a在未被访问前的样式。

  • a:visited{}
    设置超链接a在其链接地址已被访问过的样式。

  • a:hove{}
    设置元素在其鼠标悬停时的样式。

  • a:active{}
    设置元素在被用户激活(在鼠标点击与释放之间发生的事件)时的样式。

  • 注意点

    如果需要给超链接定义:访问前,鼠标悬停,当前被点击,已访问这4种伪类效果,而又没有按照一致的书写顺序,不同的浏览器可能会有不同的表现。
    超链接的4种状态,需要有特定的书写顺序才能生效。
    可靠的顺序是:l(link)ov(visited)e h(hover)a(active)te, 即用喜欢和讨厌两个词来概括

    #注意,a:hover 必须位于 a:link 和 a:visited 之后,a:active 必须位于 a:hover 之后
    a:link{}
    a:visited{}
    a:hover{}
    a:active{}
    

伪元素

  • ::first-letter{ }
    设置对象内的第一个字符的样式。
  • ::first-line{ }
    设置对象内的第一行的样式。
  • ::before
    1.设置在对象前(依据对象树的逻辑结构)发生的内容。
    2.用来和content属性一起使用,并且必须定义content属性
  • ::after
    1.设置在对象后(依据对象树的逻辑结构)发生的内容。
    2.用来和content属性一起使用,并且必须定义content属性

你可能感兴趣的:(CSS 之选择器)