CSS 之Selector 选择器

1. 选择器

1. id 选择器

也叫身份选择器,选取带有 id 属性,并且 id 属性值为 id-name 的 tag。

  • html 写法:<tag id="id-name"></tag>
  • css 写法:#id-name{}
  • 整个 html 页面必须是唯一的,一个 id 属性值只能被一个 tag 拥有
  • 值除了第一个字符必须为英文字母以外,后续字符可以是大小写字母和-_

2. class 选择器

选取所有带有 class 属性,并且 id 属性值为 id-name 的 tag。

  • html 写法:<tag class="class-name"></tag>
  • css 写法:.class-name{}
  • 一个 tag 可以使用多个 class

3. tag 选择器

选取所有相同的 tag

  • html 写法:<tag></tag>
  • css 写法:tag{}
  • 如果在 tag 后面加上 id 或者 class 选择器,代表只能套用到相同 tag 后的 id 或者 class 上。例如 div.container 只能对
    下的 container class 生效

4. 运用空格

选取并修饰某种 class 修饰的 tag 下的所有子 tag ,不包括该 tag 本身

  • html 写法:<tag1 class="container" id="a"><tag id="b"><tag id="c"></tag></tag><tag id="d"></tag></tag1>
  • css 写法:.container tag{}
  • 此时,会选取带有 container 类属性值的所有元素下的所有子 tag 元素,即修饰 b、c、d
  • 这里的空格只是起到将字符串分割出 token 的作用,连续空格算一个空格。所以确切含义是一个 token 紧接着另一个 token

5. 运用大于号(>)

选取某种 class 修饰的 tag 下的所有第一层子 tag,不包括该 tag 本身

  • html 写法:<tag class="container"id="a"><tag id="b"><tag id="c"></tag></tag><tag id="d"></tag></tag>
  • css 写法:.container > tag {}
  • 此时,修饰 b、c
  • 大于号本身已经将字符串分割出两个 token ,大于号本身算一个 token ,在 token 之间加空格只是用来美化代码

6. 运用加号(+)

选取与某种 class 修饰的 tag 紧接着的第一个兄弟 tag 生效,tag 本身不生效

  • html 写法:<tag class="container" id="a"><tag id="b"></tag><tag id="c"></tag></tag>
  • css 写法:.container + tag {}
  • 此时,修饰 b,但如果紧接着的第一个 tag 加号后声明的,则不会生效

7. 运用波浪号(~)

选取所有某种 class 修饰的 tag 之后所有同一层的所有某种元素

  • html 写法:<tag1 class="container" id="a"><tag id="b"></tag></tag><tag id="c"></tag><tag id="d"></tag>
  • css 写法:.container ~ tag{}
  • 此时,修饰 b、d

8. 运用星号(*)

表示选取所有 tag ,一般配合前面的几种一起使用,缩小范围

  • html 写法:<tag1 class="container" id="a"><tag id="b"></tag></tag><tag id="c"></tag><tag id="d"></tag>
  • css 写法:.container * {}
  • 此时,修饰 b、c、d

9. 属性选择器

通过 tag 的属性进行选择

  • html 写法:<a href="https:www.123.com">
  • css 写法:a[href="https:www.123.com"]{}
  • 此时,修饰 a 标签下 href=”https:www.123.com
  • [id^="keywords"]:取 id 值开头为关键词 keywords 的所有元素
  • [id$="keywords"]:取 id 值结尾为关键词 keywords 的所有元素
  • [id*="keywords"]:取 id 值包含关键词 keywords 的所有元素

10. 伪类(pseudo class)

用于选择一般选择器无法表达的选择方式

  • 写法格式:以上九种形式加冒号加条件
  • html 写法:
  • css 写法:<a href:"...">点我</a><p>A</p><p>B</p>
  • a: hover{color:red} /鼠标悬停变红/
  • a: visited{color: cyan} /点击过该链接则为天蓝色/
  • a ~ p:nth-child(2n){} /效果和 a~p:nth-child(even){} 一样/