CSS各式选择器记录

目录

element,element    

element1 element2

.class1.class2

element.class 

element1>element2

element1+element2

[attribute] 

element[attribute] 

[attribute=value] 

[attribute~=value] 

[attribute|=value]

[attribute^=value]

[attribute$=value]

[attribute*=value] 

:before

:after

a:visited

a:active

a:hover

input:focus 

:first-letter 

:first-line

:first-child 

:only-child

:nth-child(n)

:nth-last-child(n)

:last-child

:first-of-type

:only-of-type

:nth-of-type(n)

:nth-last-of-type(n)

:last-of-type

:empty

:target 

:enabled 

:disabled

:checked

:not(element)

:out-of-range

:in-range

:read-write

:read-only

:optional

:required

:valid 

:invalid


element,element    

几个元素具有相同的样式,用逗号分隔每个元素的名称。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        h1, p { background-color: yellow; }   /*选择所有<div>元素和<p>元素 */
    </style>
</head>
<body>
    <h1>Welcome</h1>   <!--变黄-->
    <p>Hello</p>   <!--变黄-->
</body>
</html>

 PS:也可以是(element,.class)  (.class,.class)组合

element1 element2

 对element1元素中的element2元素应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        div p { background-color: yellow; }  /*选择<div>元素内的所有<p>元素*/
    </style>
</head>
<body>
    <p>不是div中的p</p>   <!--不会变黄-->
    <div>
        <p>div中的p</p>   <!--变黄-->
        <section>
            <p>div中section中的p</p>   <!--变黄-->
        </section>
    </div>
</body>
</html>

 PS:也可以是(element .class) (.class element ) (.class .class)组合    (A B)表示A中的B

.class1.class2

 对同时具有class1和class2类选择器的元素应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        .p1.p2 { background-color: yellow; }      /*选择同时具有p1和p2类选择器的元素*/
    </style>
</head>
<body>
    <p class="p1 p2">拥有p1和p2</p>   <!--变黄-->
    <p class="p2">拥有p2</p>          <!--不会变黄-->
    <p class="p1">拥有p1</p>          <!--不会变黄-->
</body>
</html>

element.class 

 对拥有该class类选择器的element元素应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        p.p2 { background-color: yellow; }      /*选择所有拥有p2选择器的p元素*/
    </style>
</head>
<body>
    <p class="p1 p2">拥有p1和p2</p>   <!--变黄-->
    <p class="p2">拥有p2</p>          <!--变黄-->
    <p class="p1">拥有p1</p>          <!--不会变黄-->
</body>
</html>
p.p1.p2 { background-color: yellow; }    /*选择所有拥有p1和p2选择器的p元素*/ 

element1>element2

 对父级元素是element1的element2元素应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        .div > p { background-color: yellow; }  /*选择所有父级 class="div"的 元素的 <p> 元素*/
    </style>
</head>
<body>
    <p>不是div中的p</p>    <!--不会变黄-->
    <div class="div">
        <p>div中的p</p>   <!--变黄-->
        <section>
            <p>div中section中的p</p>   <!--不会变黄-->
        </section>
    </div>
</body>
</html>

PS:这里的例子是  .class > element    和element element的区别就是 element > element 只表示一层继承,只作用于父与子

element1+element2

 对紧接着element1之后的第一个element2元素应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        div+p { background-color: yellow; }   /*选择紧接着<div>元素之后第一个<p>元素*/
    </style>
</head>
<body>
    <p>div之前的p</p>   <!--不会变黄-->
    <div>
        <p>div中的p</p>   <!--不会变黄-->
    </div>
    <p>div之后的第一个p</p>   <!--变黄-->
    <p>div之后的第二个p</p>   <!--不会变黄-->
</body>
</html>

[attribute] 

 对拥有attribute属性的元素应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        [title] { background-color: yellow; }   /*选择所有带有该属性的元素*/
    </style>
</head>
<body>
    <p>div之前的p</p>   <!--不会变黄-->
    <p title="Hello">你好</p>  <!--变黄-->
</body>
</html>

element[attribute] 

对拥有attribute属性的element元素应用样式 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        h1[title] { background-color: yellow; }   /*选择所有带有该属性的h1元素*/
    </style>
</head>
<body>
    <h1>不含有title的h1</h1>  <!--不会变黄-->
    <h1 title="A">含有title的h1</h1>  <!--变黄-->
    <p title="Hello">你好</p>  <!--不会变黄-->
</body>
</html>

PS:也适用于  .class[attribute] 

[attribute=value] 

对拥有attribute属性且属性值为value的元素应用样式 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        [title="A"] { background-color: yellow; }   /*选择所有title="A"元素*/
    </style>
</head>
<body>
    <p title="A">title=A</p>  <!--变黄-->
    <p title="B">title=B</p>  <!--不会变黄-->
</body>
</html>

[attribute~=value] 

对拥有attribute属性且属性值含有value这个单词的元素应用样式 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        [title~="A"] { background-color: yellow; }   /*选择所有title中含有A这个单词的元素(字母不算)*/
    </style>
</head>
<body>
    <p title="A">title=A</p>  <!--变黄-->
    <p title="AB">title=AB</p>  <!--不会变黄-->
    <p title="A B">title=A B</p>  <!--变黄-->
</body>
</html>

PS:必须是单词(以空格隔开的才算一个单词,区分大小写) 

[attribute|=value]

 对拥有attribute属性且属性值等于value或者以value-开头的元素应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        [title|="A"] { background-color: yellow; }   /*选择所有title中单独一个A单词或者以A-开头的词组*/
    </style>
</head>
<body>
    <p title="A">title=A</p>  <!--变黄-->
    <p title="AB">title=AB</p>  <!--不会变黄-->
    <p title="A B">title=A B</p>  <!--不会变黄-->
    <p title="A-">title=A-</p>  <!--变黄-->
    <p title="A-B">title=A-B</p>  <!--变黄-->
    <p title="A-BC">title=A-BC</p>  <!--变黄-->
    <p title="A-B C">title=A-B C</p>  <!--变黄-->
</body>
</html>

PS:该样式主要用于lang属性 

[attribute^=value]

对拥有attribute属性且属性值是以value开头的元素应用样式 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        [title^="A"] { background-color: yellow; }  /*选择所有title中以字符串A开头的元素*/
    </style>
</head>
<body>
    <p title="A">title=A</p>      <!--变黄-->
    <p title="AB">title=AB</p>    <!--变黄-->
    <p title="A B">title=A B</p>  <!--变黄-->
    <p title="BA">title=BA</p>    <!--不会变黄-->
</body>
</html>

[attribute$=value]

对拥有attribute属性且属性值是以value结尾的元素应用样式 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        [title$="A"] { background-color: yellow; }  /*选择所有title中以字符串A结尾的元素*/
    </style>
</head>
<body>
    <p title="A">title=A</p>      <!--变黄-->
    <p title="A ">title=AB</p>    <!--不会变黄-->
    <p title="BA">title=BA</p>    <!--变黄-->
</body>
</html>

[attribute*=value] 

对拥有attribute属性且属性值包含value的元素应用样式 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        [title*="A"] { background-color: yellow; }  /*选择所有title中包含字符串A的元素*/
    </style>
</head>
<body>
    <p title="A">title=A</p>      <!--变黄-->
    <p title="A ">title=A </p>    <!--变黄-->
    <p title="BA">title=BA</p>    <!--变黄-->
</body>
</html>

 PS:[attribute~=value]表示要含有这个单词,[attribute*=value] 表示有这个字符串;[attribute*=value] 包含[attribute~=value]

:before

在元素前面加上内容,并给加上的内容应用样式 

:after

 在元素后面加上内容,并给加上的内容应用样式 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <style>
        p:before { content: "Read this:"; color: red; }    /*在所有p元素前面加上内容,并给加上的内容设置样式*/
    </style>
</head>
<body>
    <p>Hello</p>            <!--Read this:Hello-->     <!--"Read this:"为红色-->
    <p>Welcome</p>          <!--Read this:Welcome-->   <!--"Read this:"为红色-->
</body>
</html>

PS:在元素后面加上内容(:after);也可以应用于.class

对未访问的链接应用样式

a:visited

对访问过的链接应用样式

a:active

对活动的链接应用样式

a:hover

对鼠标在链接上面时应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        a:hover { background-color: yellow; }
        a:link { background-color: red; }
        a:visited { background-color: greenyellow; }
        a:active { background-color: brown; }
    </style>
</head>

<body>
    <a href="https://www.runoob.com/">菜鸟教程</a>
    <a href="https://c.runoob.com">菜鸟工具</a>
    <a href="https://baidu.com">baidu</a>
</body>
</html>

PS:hover也可以应用于其他element和.class;另外3个主要应用于链接 

input:focus 

一个输入字段获得焦点时选择的样式 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        input:focus { background-color: yellow; }
    </style>
</head>
<body>
    <form>
        First name: <input type="text" name="firstname" /><br>
        Last name: <input type="text" name="lastname" />
    </form>
</body>
</html>

:first-letter 

对元素的第一个字母应用样式

:first-line

对元素的第一行应用样式 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        p:first-line { background-color: yellow; }
        P:first-letter { color: red; }
    </style>
</head>
<body>
    <p>Hello</p>  <!--背景色为黄色,字母H为红色-->
</body>
</html>

:first-child 

若是父元素的第一个元素就对其应用样式 

:only-child

若是父元素的唯一元素就对其应用样式

:nth-child(n)

若是父元素的第n个元素就对其应用样式

:nth-last-child(n)

若是父元素的倒数第n个元素就对其应用样式

:last-child

若是父元素的最后一个元素就对其应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        p:first-child { background-color: yellow; }      /*1.若p元素是父元素的第1个子元素就应用样式*/
        p:only-child { color: red }                      /*2.若p元素是父元素的唯1元素就应用样式*/
        p:nth-child(3) { background-color:aqua; }        /*3.若p元素是父元素的第3个子元素就应用样式*/
        p:nth-last-child(2) { background-color:brown; }  /*4.若p元素是父元素的倒数第2个子元素就应用样式*/
        p:last-child { background-color:coral; }         /*5.若p元素是父元素的最后1个元素就应用样式*/
    </style>
</head>
<body>
    <p>The first child of body.</p>         <!--应用1-->
    <h1>The second child of body.</h1>      <!--无变化-->
    <p>The third child of body.</p>         <!--应用3-->
    <div>
        <h1>The first child of div.</h1>    <!--无变化-->
        <p>The second child of div.</p>     <!--应用5-->
    </div>
    <p>The last child 2 of body.</p>        <!--应用4-->
    <div>
        <p>The only child of div.</p>       <!--应用1,2,5-->
    </div>
</body>
</html>

PS:也可以对类选择器使用  .class:first-child 

:first-of-type

若是父元素的第一个该元素就对其应用样式

:only-of-type

若是父元素的唯一一个该元素就对其应用样式

:nth-of-type(n)

若是父元素的第n个该元素就对其应用样式

:nth-last-of-type(n)

若是父元素的倒数第n个该元素就对其应用样式

:last-of-type

若是父元素的最后一个该元素就对其应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        p:first-of-type { background-color: yellow; }         /*1.若p元素是父元素的第1个p元素就应用样式*/
        p:only-of-type{ color: red }                          /*2.若p元素是父元素的唯1的p元素就应用样式*/
        p:nth-of-type(2){ background-color:aqua; }            /*3.若p元素是父元素的第2个p元素就应用样式*/
        p:nth-last-of-type(2) { background-color: brown; }    /*4.若p元素是父元素的倒数第2个p元素就应用样式*/
        p:last-of-type { background-color: coral; }           /*5.若p元素是父元素的最后1个p元素就应用样式*/
    </style>
</head>
<body>
    <p>The first p of body.</p>         <!--符合1-->
    <h1>The second child of body.</h1>  <!--无变化-->
    <p>The second p of body.</p>        <!--符合3-->
    <div>
        <p>The only p of div.</p>       <!--符合1,2,5-->
    </div>
    <p>The second p of body.</p>        <!--符合4-->
    <p>The last p of body.</p>          <!--符合5-->
</body>
</html>

PS:first-child是针对所有子元素,而first-of-type是针对某一种子元素 

:empty

对空的元素应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        p:empty { width: 100px; height: 20px; background-color: yellow; }
    </style>
</head>
<body>
    <p></p>       <!--变黄-->
    <div>
        <p></p>   <!--变黄-->
    </div>
    <p>A paragraph.</p>
</body>
</html>

PS:可以对类选择器使用 .class:empty;也可以直接用 :empty,对所有元素应用 

:target 

选择当前活动的元素(包含该锚名称的点击的URL) 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        p:target { border: 2px solid #D4D4D4; background-color: yellow; }
    </style>
</head>
<body>
    <p><a href="#news1">Jump to New content 1</a></p>    <!--锚1-->
    <p><a href="#news2">Jump to New content 2</a></p>    <!--锚2-->
    <p id="news1"><b>New content 1...</b></p>            <!--点击锚1变黄,点击锚2变回原样-->
    <p id="news2"><b>New content 2...</b></p>            <!--点击锚2变黄,点击锚1变回原样-->
</body>
</html>

PS:可以对类选择器使用 .class:target ;也可以直接用 :target,对所有锚应用 

:enabled 

对启用中的元素应用样式 

:disabled

对就用中的元素应用样式 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        input[type="text"]:enabled { background-color: aquamarine }
        input[type="text"]:disabled { background-color: yellow; }
    </style>
</head>
<body>
    <form action="">
        First name: <input type="text" /><br>                       <!--aquamarine--> 
        Last name: <input type="text"  /><br>                       <!--aquamarine--> 
        Country: <input type="text" disabled="disabled" /><br>      <!--yellow--> 
    </form>
</body>
</html>

PS:也可以对类选择器应用;也可以对所有元素应用。  (主要用于表单元素)

:checked

对每个选中的元素应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        input:checked { height: 20px;width: 20px; }
        input[type="checkbox"]:checked { height: 40px;width: 40px; }
    </style>
</head>
<body>
    <form action="">
        <input type="radio" checked="checked" value="male" name="gender" /> Male<br>
        <input type="radio" value="female" name="gender" /> Female<br>
        <input type="checkbox" checked="checked" value="Bike" /> I have a bike<br>
        <input type="checkbox" value="Car" /> I have a car
    </form>
</body>
</html>

 PS:也可以对类选择器应用;也可以对所有元素应用。  (仅适用于单选按钮或复选框)

:not(element)

对非element元素应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        p { color: blue; }           /*对p元素应用该样式*/
        :not(p) { color: red; }      /*对非p元素应用该样式*/
    </style>
</head>
<body>
    <h1>这是一个标题</h1>       <!--红色-->
    <p>这是一个段落.</p>        <!--蓝色-->
    <p>这是另一个段落.</p>      <!--蓝色-->
    <div>这是div元素</div>      <!--红色-->
</body>
</html>

PS:也可以对类选择器应用 :not(.class);也可以对元素的类选择器  element:not(.class) 

:out-of-range

当元素的值超出范围就应用样式 

:in-range

当元素的值在范围内就应用样式 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        input:out-of-range { background-color: red; }
        input:in-range { background-color: aquamarine; }
    </style>
</head>
<body>
    <input type="number" min="5" max="10" value="17" />
    <!--当value值超出范围变为red,在范围内变为aquamarine-->
</body>
</html>

:read-write

当元素是可读写时就应用样式

:read-only

当元素是只读的就应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        input:read-write { background-color: yellow; }
        input:read-only { background-color: red; }
    </style>
</head>
<body>
    <p>普通的input元素:<br><input value="hello"></p>              <!--变黄-->
    <p>只读的input元素:<br><input readonly value="hello"></p>     <!--变红-->
</body>
</html>

PS:是否可读写,就看元素是否有 readonly属性,若有就为只读  (只适用于 input 和 textarea 元素)

:optional

在表单元素是可选项时应用样式

:required

在表单元素是必填项时应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        input:optional { background-color: yellow; }
        input:required{ background-color: red; }
    </style>
</head>
<body>
    <p>可选的input元素:<br><input value="hello"></p>              <!--变黄-->
    <p>必填的input元素:<br><input required value="hello"></p>     <!--变红-->
</body>
</html>

PS:是否可选,就看元素是否有 required 属性,若有就为必填(只适用于表单元素: input, select 和 textarea)

:valid 

验证元素符合设定条件或格式就应用样式

:invalid

验证元素不符合设定条件或格式就应用样式

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
    <style>
        input:valid { background-color: yellow; }
        input:invalid { background-color: red; }
    </style>
</head>
<body>
    <input type="email" value="support@exampel.com" />   <!--当输入符合email格式就是黄色否则为红色-->
</body>
</html>

PS:选择器只作用于能指定区间值的元素,例如 input 元素中的 min 和 max 属性,及正确的 email 字段, 合法的数字字段等。 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bridge_go

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值