CSS3选择器及优先级

1.简单选择器

1.1元素选择器

  根据标签名来选中指定的元素,如下面的 p 、 h 2 p、h2 ph2,语法就是:标签名 { } \{\} {}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            p{
                color: blueviolet;
                font-size: 15px;
            }
            h2{
                color:coral;
            }
        </style>
    </head>
    <body>
        <h1>我是h1标题</h1>
        <h2>我是h2标题</h2>
        <p>我是一个段落</p>
        <p>我是第二个段落</p>
    </body>
</html>

在这里插入图片描述

1.2id选择器

  根据元素的 i d id id属性值选中某个元素。注意是某个,而不是多个,因为根据规范,元素 i d id id属性的值应该是唯一的。语法: # i d \#id #id属性值 { } \{\} {}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            p{
                color: blueviolet;
                font-size: 15px;
            }
            h2{
                color:coral;
            }
            #red{
                color: red;
            }
        </style>
    </head>
    <body>
        <h1>我是h1标题</h1>
        <h2>我是h2标题</h2>
        <p id="red">我是一个段落</p>
        <p>我是第二个段落</p>
    </body>
</html>

在这里插入图片描述
  如果想选中多个的话,可以使用接下来介绍的类选择器。

1.3类选择器

   c l a s s class class是一个标签的属性,他和 i d id id类似,但是值可以重复。类选择器就是根据 c l a s s class class的值选择一组元素。语法: . c l a s s .class .class属性值 { } \{\} {}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            p{
                color: blueviolet;
                font-size: 15px;
            }
            h2{
                color:coral;
            }
            #red{
                color: red;
            }
            .blue{
                color: blue;
            }
        </style>
    </head>
    <body>
        <h1>我是h1标题</h1>
        <h2>我是h2标题</h2>
        <p id="red">我是一个段落</p>
        <p class="blue">我是第二个段落</p>
        <p class="blue">我是第三个段落</p>
        <p>我是第四个段落</p>
    </body>
</html>

在这里插入图片描述

  而且 h t m l html html元素的 c l a s s class class属性值可以同时有多个:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            p{
                color: blueviolet;
                font-size: 15px;
            }
            h2{
                color:coral;
            }
            #red{
                color: red;
            }
            .blue{
                color: blue;
            }
            .yellow{
                color: yellow;
            }
        </style>
    </head>
    <body>
        <h1>我是h1标题</h1>
        <h2>我是h2标题</h2>
        <p id="red">我是一个段落</p>
        <p class="blue">我是第二个段落</p>
        <p class="blue">我是第三个段落</p>
        <p class="blue yellow">我是第四个段落</p>
    </body>
</html>

在这里插入图片描述

  比如上面的第 4 4 4个段落,它有两个 c l a s s class class,且后面类也就是 y e l l o w yellow yellow会覆盖掉之前类也就是 b l u e blue blue

1.4通配选择器

  可以选择页面内的所有元素。语法: ∗ { } ^*\{\} {}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            /* p{
                color: blueviolet;
                font-size: 15px;
            }
            h2{
                color:coral;
            }
            #red{
                color: red;
            }
            .blue{
                color: blue;
            }
            .yellow{
                color: yellow;
            } */
            *{
                color: green;
            }
        </style>
    </head>
    <body>
        <h1>我是h1标题</h1>
        <h2>我是h2标题</h2>
        <p id="red">我是一个段落</p>
        <p class="blue">我是第二个段落</p>
        <p class="blue">我是第三个段落</p>
        <p class="blue yellow">我是第四个段落</p>
    </body>
</html>

在这里插入图片描述
  这里要把前面的部分注释掉才能显示出这个效果。原因是不同的选择器的优先级是不同的。我们稍后会讲到。
   A   ∗ A\ ^* A 会选中 A A A元素的所有子元素:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            div *{
                color:red;
            }
        </style>
    </head>
    <body>
        <div>
            我是一个div 我有子元素
            <p>11111</p>
            <p>222222</p>
            <p>
                333333
                <ul>
                    <li>a</li>
                    <li>b</li>
                    <li>c</li>
                </ul>
            </p>
            <p>444444</p>
        </div>
        <div>我是一个div 我没有子元素</div>
    </body>
</html>

在这里插入图片描述

2.复合选择器

2.1交集选择器

  如果我想要把 c l a s s class class r e d red red d i v div div元素的字体颜色设置为红色,该怎么写呢?之前介绍的简单选择器已经不能满足我们的需求了。我们需要交集选择器,它可以选择出满足所有条件的元素。语法: 选择器1选择器2选择器3…… { } \{\} {}。不过需要注意一点,如果使用了元素选择器的话,需要以它为开头。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            div.red{
                color:red;
            }
            .a.b.c{
                color:blue;
            }
        </style>
    </head>
    <body>
        <h1>我是h1标题</h1>
        <h2>我是h2标题</h2>
        <p>我是一个段落</p>
        <div class="red">我是div</div>
        <p class="a">我是a</p>
        <p class="a b c">我既是a 也是b 还是c</p>
    </body>
</html>

在这里插入图片描述

2.2并集选择器

  如果我想把所有的 p 、 d i v p、div pdiv元素的样式设置成一样的,该怎么办呢?可以使用并集选择器,它会选中多个选择器对应的元素。语法: 选择器1,选择器2,…… { } \{\} {}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            div,p{
                color:red;
            }
        </style>
    </head>
    <body>
        <h1>我是h1标题</h1>
        <h2>我是h2标题</h2>
        <p>我是一个段落</p>
        <div class="red">我是div</div>
        <p class="a">我是a</p>
        <p class="a b c">我既是a 也是b 还是c</p>
    </body>
</html>

在这里插入图片描述

3.关系选择器

  首先了解一下 h t m l html html中的元素关系:
在这里插入图片描述

3.1子元素选择器

  选中指定父元素的指定子元素。语法: 父元素>子元素 { } \{\} {}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            div>span{
                color:red;
            }
        </style>
    </head>
    <body>
        <div>
            我是一个div
            <p>
                我是div中的p元素
                <span>我是p元素中的span元素</span>
            </p>
            <span>我是div元素中的span元素</span>
        </div>
        <span>
            我是div元素的兄弟元素span
        </span>
    </body>
</html>

在这里插入图片描述

3.2后代元素选择器

  选择指定元素的指定后代元素。语法: 祖先 后代 { } \{\} {}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            div span{
                color:red;
            }
        </style>
    </head>
    <body>
        <div>
            我是一个div
            <p>
                我是div中的p元素
                <span>我是p元素中的span元素</span>
            </p>
            <span>我是div元素中的span元素</span>
        </div>
        <span>
            我是div元素的兄弟元素span
        </span>
    </body>
</html>

在这里插入图片描述

3.3选择下一个兄弟元素

  注意只会选择下一个。语法:自己+目标兄弟 { } \{\} {}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            div+span{
                color:red;
            }
        </style>
    </head>
    <body>
        <div>
            我是一个div
            <p>
                我是div中的p元素
                <span>我是p元素中的span元素</span>
            </p>
            <span>我是div元素中的span元素</span>
        </div>
        <span>我是div元素的兄弟元素span</span>
        <span>我是div元素的兄弟元素span</span>
        <span>我是div元素的兄弟元素span</span>
    </body>
</html>

在这里插入图片描述

  如果该元素的下一个元素不符合要求,那么依然不会选取。

3.4选择下面的所有兄弟元素

  语法:自己~目标兄弟 { } \{\} {}

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            div~span{
                color:red;
            }
        </style>
    </head>
    <body>
        <span>我是div元素的兄弟元素span</span>
        <div>
            我是一个div
            <p>
                我是div中的p元素
                <span>我是p元素中的span元素</span>
            </p>
            <span>我是div元素中的span元素</span>
        </div>
        <p>我是div元素的兄弟元素P</p>
        <span>我是div元素的兄弟元素span</span>
        <span>我是div元素的兄弟元素span</span>
        <span>我是div元素的兄弟元素span</span>
    </body>
</html>

在这里插入图片描述

4.属性选择器

  [属性名] 选择含有指定属性的元素:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            [title]{
                color:red;
            }
        </style>
    </head>
    <body>
        <p title>段落一</p>
        <p>段落二</p>
        <p>段落三</p>
        <p>段落四</p>
        <p>段落无</p>
    </body>
</html>

在这里插入图片描述

  [属性名=属性值] 选择含有指定属性和属性值的元素;[属性名^=属性值] 选择含有指定属性,且属性值以指定值开头的元素;[属性名$=属性值] 选择含有指定属性,且属性值以指定值结尾的元素:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            [title=abc]{
                color:red;
            }
            [title^=cde]{
                color:blue;
            }
            [title$=cde]{
                color:green;
            }
        </style>
    </head>
    <body>
        <p title>段落一</p>
        <p title="abc">段落二</p>
        <p title="cdef">段落三</p>
        <p title="bcde">段落四</p>
        <p>段落无</p>
    </body>
</html>

在这里插入图片描述

  [属性名*=属性值] 选择含有指定属性,且属性值含有指定值的元素:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            [title=abc]{
                color:red;
            }
            [title*=cde]{
                color:blue;
            }
        </style>
    </head>
    <body>
        <p title>段落一</p>
        <p title="abc">段落二</p>
        <p title="cdef">段落三</p>
        <p title="bcde">段落四</p>
        <p>段落无</p>
    </body>
</html>

在这里插入图片描述

5.伪类选择器

  伪类可以理解成不存在的类、特殊的类,它用来描述一个元素的特殊状态,比如第一个元素、被点击的元素、鼠标移入移出的元素等。伪类一般情况下使用:开头,详情可以看这个链接

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            ul>:first-child{
                color:red;
            }
            ul>li:first-of-type{
                color:blue;
            }
            ul>li:last-child{
                color:green;
            }
        </style>
    </head>
    <body>
        <ul>
            <span>test</span>
            <li>第一个</li>
            <li>第二个</li>
            <li>第三个</li>
            <li>第四个</li>
            <li>第五个</li>
        </ul>
    </body>
</html>

在这里插入图片描述

  再举一个超链接的例子:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            /*
                未访问过的链接
            */
            a:link{
                color:red;
            }
            /*
                访问过的链接
            */
            a:visited{
                color:orange;
            }
            /*
                鼠标移到链接上时
            */
            a:hover{
                color:blue;
            }
            /*
                鼠标点击链接时
            */
            a:active{
                color:green;
            }
        </style>
    </head>
    <body>
        <a href="https://mp.csdn.net/console/article?spm=1011.2124.3001.5114">这是一个超链接</a>
    </body>
</html>

在这里插入图片描述

6.伪元素选择器

  伪元素表示页面中一些特殊的并不真实存在的元素,比如第一个字母、第一行等等。它一般使用::开头。在第5节中,我提供了一个网址,里面有更加详细的介绍。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            p::first-letter{
                font-size: 30px;
            }
            p::first-line{
                color: red;
            }
        </style>
    </head>
    <body>
        <p>暖国的雨,向来没有变过冰冷的坚硬的灿烂的雪花。博识的人们觉得他单调,他自己也以为bai不幸否耶?江南的雪,
            可是滋润美艳之至了;那是还在隐约着的青春的消息,是极壮健的处子的皮肤。雪野中有血红的宝珠山茶,白中隐青
            的单瓣梅花,深黄的磬口的腊梅花;雪下面还有冷绿的杂草。</p>
        
        <p>胡蝶确乎没有;蜜蜂是否来采山茶花和梅花的蜜,我可记不真切了。但我的眼前仿佛看见冬花开在雪野中,有许多蜜
            蜂们忙碌地飞着,也听得他们嗡嗡地闹着。</p>

        <p>孩子们呵着冻得通红,像紫芽姜一般的小手,七八个一齐来塑雪罗汉。因为不成功,谁的父亲也来帮忙了。罗汉就塑得
            比孩子们高得多,虽然不过是上小下大的一堆,终于分不清是壶卢还是罗汉;然而很洁白,很明艳,以自身的滋润相
            粘结,整个地闪闪地生光。</p>

        <p>第二天还有几个孩子来访问他;对了他拍手,点头,嘻笑。但他终于独自坐着了。晴天又来消释他的皮肤,寒夜又使他
            结一层冰,化作不透明的模样;连续的晴天又使他成为不知道算什么,而嘴上的胭脂也褪尽了。</p>

        <p>是的,那是孤独的雪,是死掉的雨,是雨的精魂。</p>

    </body>
</html>

在这里插入图片描述

7.继承

  样式是可以继承的。我们为一个元素设置的样式,同时也会应用到它的后代元素中。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            p{
                color:red;
            }
        </style>
    </head>
    <body>
        <p>
            我是p元素
            <span>我是p元素内的span元素</span>
        </p>
    </body>
</html>

在这里插入图片描述

  但是不是所有的样式都会被继承,背景、布局相关的等等就不会被继承。可以通过查阅文档来确定:
在这里插入图片描述

8.选择器的权重

  当我们通过不同的选择器,选中了一个相同的元素时,就可能会出现样式冲突。如果发生了冲突,就要通过选择器的权重来决定最终应用哪个样式。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            div{
                color:red;
            }
            .blue{
                color:blue;
            }
        </style>
    </head>
    <body>
        <div class="blue">一个div</div>
    </body>
</html>

在这里插入图片描述

  关于优先级的相关介绍可以看这篇文章。这里直接给出结论:
在这里插入图片描述

  权重相同怎么办?就近原则(靠下的,也就是后出现的):

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            .blue{
                color:blue;
            }
            .green{
                color:green;
            }
        </style>
    </head>
    <body>
        <div class="blue green">一个div</div>
    </body>
</html>

在这里插入图片描述

  或者使用 i m p o r t a n t important important

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>第一个网页</title>
        <style>
            .blue{
                color:blue !important;
            }
            .green{
                color:green;
            }
        </style>
    </head>
    <body>
        <div class="blue green">一个div</div>
    </body>
</html>

在这里插入图片描述

  不过尽量不要使用这个……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值