CSS3 —— 选择器(带你深入了解 CSS3 选择器)

简介: CSS3 —— 选择器(带你深入了解 CSS3 选择器)

一、常用选择器

  1. 通用兄弟元素选择器( E~F ):E 和 F 属于同一父元素之内,并且 F 在 E 之后,通用兄弟选择器会选择符合这样排列的所有的 F 元素。
    .test ~ p{
      background-color: red;
    }
  <div>
      <p>1</p>
      <p class="test">2</p>
      <p>3</p>
      <p>4</p>
      <p>5</p>
    </div>
    <p>6 已脱离 div</p>

cf9e9b7d037144efb687c19f6461a678.png

二、属性选择器

  1. E[attr^="value"]:该选择器选择属性名为 attr ,属性值以 value 开头的元素。
  a[title^='test']{
        background: skyblue;
    }
    <a href="https://www.lanqiao.cn" title="test">title="test"</a><br />
    <a href="https://www.lanqiao.cn" title="testxxx">title="testxxx"</a><br />
    <a href="https://www.lanqiao.cn" title="xxtest">title="xxtest"</a><br />
    <a href="https://www.lanqiao.cn" title="xxx">title="xxx"</a><br />

202a5d08a8a14720a0fcd0af8bdecd09.png

  1. E[attr$="value"]:该选择器选择属性名为 attr,属性值以 value 结尾的元素。
  a[title^='test']{
        background: skyblue;
    }
    <a href="https://www.lanqiao.cn" title="test">title="test"</a><br />
    <a href="https://www.lanqiao.cn" title="testxxx">title="testxxx"</a><br />
    <a href="https://www.lanqiao.cn" title="xxtest">title="xxtest"</a><br />
    <a href="https://www.lanqiao.cn" title="xxx">title="xxx"</a><br />

0e8afe18f1014e0d8bcc09e31761f163.png

  1. E[attr*="value"]:该选择器选择属性名为 attr,属性值包含 value 的元素。
  a[title*='test']{
        background: skyblue;
    }
    <a href="https://www.lanqiao.cn" title="test">title="test"</a><br />
    <a href="https://www.lanqiao.cn" title="testxxx">title="testxxx"</a><br />
    <a href="https://www.lanqiao.cn" title="xxtest">title="xxtest"</a><br />
    <a href="https://www.lanqiao.cn" title="xxx">title="xxx"</a><br />

d1badc54181c46798da9843cc2a60cbc.png

三、伪类选择器

  1. E:root:该选择器选择文档的根节点,效果和设置 html 相同。
  :root {
        background-color: skyblue;
    }
    // 等同于
    html{
        background: lightgreen;
    }
  1. E:nth-child(n):该选择器选择 E 元素父元素的第 n 个子元素。

n 取值为整数:子元素不一定是同种类型,只能取正整数

  p:nth-child(3){
        background-color: red;
    }
  <p>1</p>
    <a href="">2</a>
    <p>3</p>
    <p>4</p>

7402543380904fab8ce1c3e9546b2477.png

n取值为表达式:取值为表达式时,选择器选择多个值,[n=0,1,2,3…]。当计算结果小于等于 0 或 大于子元素总数时,不选取元素。

  p:nth-child(2n + 1){
        background-color: red;
    }
  <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>

d85484f898ca45f38582bd9630dc1d61.png

  p:nth-child(even){
        background-color: red;
    }
  <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>

02291a6d7dbb441d8f8db152fe178cc8.png

  1. odd 相当于 2n+1。
  2. even 相当于 2n。
  1. E:nth-last-child(n):从最后一个往前计数。
  p:nth-last-child(2n+1){
        background-color: red;
    }
  <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>
    <p>5</p>

5532bc025218400fba99f8946aabf333.png

  1. E:nth-of-type():该元素选择的是与 E 相同类型的兄弟元素。
  p:nth-of-type(2n+1){
        background-color: red;
    }
    <p>1th of ele,1th of p</p>
    <p>2th of ele,2th of p</p>
    <a href="https://www.lanqiao.cn">3th of ele,1th of a</a>
    <p>4th of ele,3th of p</p>
    <p>5th of ele,4th of p</p>
    <p>6th of ele,5th of p</p>

def74de70b634cc89b257d7dd5d20b7d.png

5. E:last-child:该选择器选择 E 元素的父元素的最后一个子元素。

  p:last-child{
        color: red;
    }
    <p>第一个</p>
    <p>第二个</p>
    <p>第三个(最后一个)</p>

89af0932822c40f699dd653692b24183.png

注意:该选择器需要满足父元素的最后一个元素和 E 匹配才会选取,否则不会选取。

  p:last-child{
        color: red;
    }
    <p>第一个</p>
    <p>第二个</p>
    <p>第三个(最后一个)</p>
    <strong>真的最后一个</strong>

02b74de5f0234cf89f0fe081cd85acf1.png

  1. E:first-of-type:该选择器选择 E 元素父元素的子元素的第一个与 E 元素类型一致的元素。
  p:first-of-type{
        color: red;
    }
    <h3>好好学习(h3)</h3>
    <p>第一个(p)</p>
    <p>第二个(p)</p>

1c59ccf667cd4b1594fbee156b671b48.png

  1. E:last-of-type:该选择器选择 E 元素父元素的子元素的最后一个与 E 元素类型一致的元素。
  p:last-of-type{
        color: red;
    }
    <h3>好好学习(h3)</h3>
    <p>第一个(p)</p>
    <p>第二个(p)</p>

eb093fd00ff14854b748e998dbe942be.png

  1. E:only-child:该元素选择的是 E 是其父元素唯一的子元素。
  .div1{
    width:100px;
        border: 2px solid;
    }
    .div2{
      width:100px;
        margin-top: 10px;
        border: 2px solid;
    }
    p:only-child{
        background: red;
    }
  <div class="div1">
        <p>好好学习</p>
    </div>
    <div class="div2">
        <p>好好学习</p>
        <p>天天向上</p>
    </div>

69e2e8d078824aaa9e2db60cefc50310.png

  1. E:only-of-type:该选择器选择的是 E 是其父元素唯一的子元素类型。
  .div1{
        width:100px;
        border: 2px solid;
    }
    .div2{
        width:100px;
        margin-top: 10px;
        border: 2px solid;
    }
    p:only-of-type{
        background: red;
    }
  <div class="div1">
        <p>好好学习</p>
    </div>
    <div class="div2">
        <p>好好学习</p>
      <span>天天向上</span>
    </div>

76bea5a8682f4b5aa30c1da101f6a3ed.png

  1. E:empty:该选择器选择的是空元素。
  p:empty{
        width:200px;
        height:20px;
        background-color: red;
    }
  <p>好好学习</p>
    <p></p>
    <p>天天向上</p>

55c31f71a92f45dfac420637b4f1eb26.png

  1. E:target:该选择器选择的是一个 id 与 当前 url 匹配的元素。
  :target {
        border: 2px solid;
        background: lightgreen;
    }
  <a href="#p1">jump to p1</a><br />
    <a href="#p2">jump to p2</a>
    <p id="p1">p1</p>
    <p id="p2">p2</p>

707044c5cc0c465f8285ee6162bafa4a.png

  1. E:not(s):该选择器匹配不符合参数选择器 s 描述的元素。
  .demo{
        color: lightblue;
    }
    p:not(.demo){
        color:lightcoral;
    }
    :not(.demo){
        color:lightgreen;
    }
  <p class="demo">hello world</p>
    <p>好好学习</p>
    <span>天天向上</span>

edaf02a92c4a42b79a94c88056081d13.png

第一个否定伪类选择器选择了 class 不为 demo 的 <p> 元素,样式为红色;第二个否定伪类选择器选择了 class 不为 demo 的 <span> 元素,样式为绿色。


13.E:enabled & E:disabled:该选择器匹配的是元素的可用和禁用状态。

  input:enabled{
        background: pink;
    }
    input:disabled{
        background: lightgreen;
    }
  <input type="text" name="test1" placeholder="disabled(不可选中)" disabled="true">
    <br>
    <input type="text" name="test2" placeholder="enabled(可选中)">

69f5d58ce75c45c481e0124e3b42e3ad.png

14. E:checked:该选择器一般用于 radio-button 或 checkbox,选择它们的 checked 状态。

  input[type='checkbox']:checked{
        margin: 100px;
    }
  <input type="checkbox" name="checkbox">

62104b07fa534e429616d01c9e300cfe.png

54700c04bcad4fbe8724b971e21bebf9.png

不积跬步无以至千里 不积小流无以成江海

相关文章
|
13天前
|
前端开发
CSS:高级选择器
CSS:高级选择器
26 1
|
13天前
|
前端开发 JavaScript
CSS:基础选择器
CSS:基础选择器
26 1
|
13天前
|
前端开发 JavaScript 容器
谁动了我的选择器?深入理解CSS选择器优先级
该文章详细解释了CSS选择器的工作原理,包括不同种类选择器的权重计算规则,并通过实例说明了如何解决样式冲突问题,确保所需的样式能够正确应用到目标元素上。
|
14天前
|
前端开发
前端基础(四)_CSS层叠样式表_什么是css_css样式的引入方式_样式表的优先级_样式选择器
本文详细介绍了CSS(层叠样式表)的基本概念、语法规则、引入方式、样式表的优先级和样式选择器。文章解释了CSS的作用,展示了如何在HTML中通过行内样式、内部样式和外部样式引入CSS,讨论了不同CSS选择器的优先级和如何确定最终的样式应用。此外,还强调了使用`!important`规则时的优先级高于行内样式。
48 1
|
1月前
|
前端开发 JavaScript
【CSS】选择器
【CSS】选择器
|
2月前
|
前端开发
CSS3选择器
【8月更文挑战第23天】CSS3选择器。
27 1
|
2月前
|
前端开发
CSS中的层级选择器&伪类选择器和伪元素选择器
CSS中的层级选择器&伪类选择器和伪元素选择器
|
5月前
|
前端开发
web前端开发---CSS基础选择器
web前端开发---CSS基础选择器
43 1
|
3月前
|
前端开发
前端 CSS 经典:好用的 CSS 选择器
前端 CSS 经典:好用的 CSS 选择器
27 0
|
5月前
|
前端开发
前端 css 经典:选择器速记
前端 css 经典:选择器速记
41 0