结构性伪类

:first‐child/last‐child

父元素中第一个元素和最后一个元素

    <div>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </div>
        div li:first-child {
   
            color: red;
        }
        div li:last-child {
   
            color: green;
        }

这个元素必须是li,并且这个li元素必须是div的第一个子元素(同理最后一个)

:nth‐child(n)/nth‐last‐child(n)

父元素中第几个子元素(last从后往前数),其中n还可以写成odd(奇数),even(偶数)

    <div>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </div>
        li:nth-child(1) {
   
            color: hotpink;
        }
        li:nth-last-child(1) {
   
            color: blue;
        }

:only‐child

e:only-child表示父元素下只有一个子元素而且该元素为e

    <div>
        <span>
            qwe
            <span>qwe</span>
        </span>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </div>
        span:only-child {
   
            color: red;
        }

:first‐of‐type/last‐of‐type

父元素下同类型同级别的第一个元素和最后一个元素

    <div>
        <span>
            qwe
            <span>qwe</span>
        </span>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
    </div>
        span:only-child {
   
            color: red;
        }

这个元素必须是li,并且是div元素下面的li元素的第一个(同理最后一个)

:nth‐of‐type(n)/nth‐last‐of‐type(n)

同类型同级别的第几个(从1开始)

:only‐of‐type

与:only‐child进行对比发现区别

    <div>
        <span>
            qwe
            <span>qwe</span>
        </span>
        <li>1</li>
        <li>2</li>
        <li>
            <span>zxc</span>
            <p>asdadsfs</p>
        </li>
        <li>4</li>
    </div>
        span:only-child {
   
            color: red;
        }

子元素中只能有span元素

        span:only-of-type {
   
            color: blue;
        }

同级别中只有一个span元素

元素状态伪类

:enabled

可用状态的元素

:disabled

禁用状态的元素

:read‐only

只读状态的元素

:focus

得到焦点的元素

:checked

选中状态的元素

::selection

当前选中(通过鼠标画选或Ctrl+A)的元素,支持的元素、样式有限

    <div>
        <p>asdadasdasdas</p>
    </div>

没加样式之前

加样式之后

		p::selection {
   
            color: red;
            background: #ccc;
        }

属性选择器

  • E[attr] 有属性attr的E元素
  • E[attr=“val”] 属性attr的值为val的E元素
  • E[attr^=“val”] 属性attr的值以val开头的E元素
  • E[attr$=“val”] 属性attr的值以val结尾的E元素
  • E[attr*=“val”] 属性attr的值包含val的E元素
    <div class="a">
        lorem
        <div class="b">
            lorem
        </div>
    </div>
        div[class="a"] {
   
            color: red;
        }
        div[class="b"] {
   
            color: salmon;
        }

其他选择器

:empty

没有任何内部内容(无论是子元素还是文本)的元素

    <div>
        <div></div>
        <div>
            
        </div>
    </div>
        div:empty {
   
            width: 100px;
            height: 100px;
            border: 1px solid red;
        }


只选中了一个,父元素div里面有两个子元素所以没被选中,子元素中第二个div有换行也没有被选中

:not(s)

否定/取反,选择所有不匹配选择器s的E元素

    <div class="a">asdasd</div>
    <div>
        <div>
            asdasd
        </div>
    </div>
        div:not([class="a"]) {
   
            color: red;
        }


有class属性且值为a的div没有被选中

E ~ F

选择同级别中E元素之后的F元素

    <div>
        <div>
            asdasd
        </div>
        <li>sadsad</li>
        <span>ibbib</span>
    </div>
        div ~ span {
   
            color: red;
        }

选中div之后同级别的span元素

:root

文档根元素,即元素

:target

选择当前活动的目标锚点