CSS入门教程二,高级选择器 – 层次选择器,属性选择器,结构伪类选择器

温馨提示:本文最后更新于2024-11-27 21:41:09,某些文章具有时效性,若有错误或已失效,请在下方留言或联系ceo@xxidc.top

从零开始学前端CSS入门教程(2)CSS高级选择器-层次选择器,属性选择器,结构伪类选择器

如果你不知道什么是CSS选择器,请先看上篇文章

1.CSS层次选择器

通过HTML文档对象模型(DOM)元素间的层次选择元素

常用的层次选择器如下:

CSS后代选择器

使用空格连接,匹配A标签中的全部B标签

代码示例

<style>
    ul li{
        color: blue;
    }
</style>

<ul>
    <li>文本1</li>
    <li>文本2</li>
    <ol>
        <li>文本3</li>
    </ol>
</ul>

预览

CSS后代选择器效果预览图

解释

<style>标签中“ul li”表示选中<ul>标签中全部<li>标签,包含子层级标签。即<ul>标签中所有<li>标签中的字都会变为蓝色,无论在哪个层级

这就是后代选择器

CSS子选择器

使用“>”标识符链接,匹配A标签内的第一代B标签,即直接子标签

代码示例

<style>
    ul>li{
        color: blue;
    }
</style>

<ul>
    <li>文本1</li>
    <li>文本2</li>
    <ol>
        <li>文本3</li>
    </ol>
</ul>

预览

CSS子选择器效果预览图

解释

<style>标签中“ul>li”表示选中<ul>标签中全部<li>标签,但不包含子层级标签

子选择器只会选中直接子标签,不会选中子标签中其他层级的标签

示例代码中“文本3”父级标签<ol>而非<ul>,也就是说“文本3”不属于<ul>直接子标签所以不会被选中,即字体不会变蓝

CSS相邻兄弟选择器

使用“+”标识符链接,匹配紧位于A标签后的同级B标签

代码示例

<style>
    li+ol{
        color: blue;
    }
</style>

<ul>
    <li>文本1</li>
    <li>文本2</li>
    <ol>
        <li>文本3</li>
    </ol>
    <ol>
        <li>文本4</li>
    </ol>
</ul>

预览

CSS相邻兄弟选择器效果预览图

解释

<style>标签中“li+ol”表示选中<li>标签同级并且紧位于后面的<ol>标签

观察示例代码<ul>标签中<li>标签与第一个<ol>同级标签,并且<ol>标签仅位于<li>标签后面,所以<ol>标签会被选中,即字体变为蓝色

而第二个<ol>标签即“文本4”<li>标签不挨着,即不是相邻兄弟,所以不会被选中

CSS通用兄弟选择器

使用“~”标识符链接,匹配A标签后的所有B标签

代码示例

<style>
    li~ol{
        color: blue;
    }
</style>

<ul>
    <li>文本1</li>
    <li>文本2</li>
    <ol>
        <li>文本3</li>
    </ol>
    <ol>
        <li>文本4</li>
    </ol>
</ul>

预览

CSS通用兄弟选择器效果预览图

解释

<style>标签中“li~ol”表示选中<li>标签同级的多个<ol>标签

观察示例代码<ul>标签中最后一个<li>标签到最后一个<ol>标签全部被选中,即“文本3”“文本4”所在的有序列表变为蓝色

注意<li>标签与<ol>标签中间不能<ol>的标签,否则不符合兄弟标签,即不会被选中

2.CSS结构伪类选择器

CSS3新增的选择器,通过HTML文档对象模型(DOM)中的标签结构选择标签

常见的CSS结构伪类选择器类型

  • :first-child选择器:父级元素的第一个子元素
  • :last-child选择器:父级元素的最后一个子元素
  • :nth-child(n)选择器:父级元素的第n个子元素
  • :first-of-type选择器:父级元素的第一个相同类型子元素
  • :first-of-type选择器:父级元素的最后一个相同类型子元素
  • :nth-of-type(n)选择器:父级元素的第n个相同类型子元素

以上说明使用较为官方的说法,具体使用看下面预览就清楚了

由于类型比较多,使用起来大同小异,这里就不挨个说了,具体用法写在示例代码的注释

代码示例

   <style>
        ol li:first-child {
            background: red;
        } 
        /* 选中<ol>标签中第一个<li>子标签 */
        /* 并将文本背景颜色设置为红色 */

        ol li:last-child {
            background: green;
        }
        /* 选中<ol>中最后一个<li>子标签 */
        /* 并将文本背景颜色设置为绿色 */

        ol li:nth-child(2) {
            background: pink;
        }
        /* 选中<ol>中最第二个<li>子标签 */
        /* 并将文本背景颜色设置为粉色 */

        p:first-of-type {
            background: blue;
        }
        /* 选择第一个<p>标签 */
        /* 并将文本背景颜色设置为深蓝色 */

        p:last-of-type {
            background: skyblue;
        }
        /* 选择最后一个<p>标签 */
        /* 并将文本背景颜色设置为天蓝色 */

        p:nth-of-type(2) {
            background: yellowgreen;
        }
        /* 选择第二个<p>标签 */
        /* 并将文本背景颜色设置为黄绿色 */

    </style>

    <ol>
        <li><a href="#">文本1</a></li>
        <!-- 这是<ol>标签中第一个<li>子标签 -->

        <li><a href="#">文本2</a></li>
        <!-- 这是<ol>标签中第二个<li>子标签 -->

        <li><a href="#">文本3</a></li>
        <!-- 这是<ol>标签中最后一个<li>子标签 -->
    </ol>

    <p>文本4</p>
    <!-- 这是第一个<p>标签 -->

    <p>文本5</p>
    <!-- 这是第二个<p>标签 -->

    <p>文本6</p>
    <!-- 这是最后一个<p>标签 -->

预览

CSS结构伪类选择器效果预览图

通过对比代码中注释与图片中文本背景颜色,可以清晰的看到不同类型的CSS结构伪类选择器的具体用法

3.CSS属性选择器

根据HTML标签的属性及属性值选择标签

常见的CSS属性选择器类型

  • p[name] 匹配具有name属性的p标签
  • p[name=abc] 匹配具有name属性,且属性值为abc的p标签。注意属性值区分大小写
  • p[name^=abc] 匹配具有name属性,且属性值是以abc开头的p标签
  • p[name$=abc] 匹配具有name属性,且属性值是以abc结尾的p标签
  • p[name*=abc] 匹配具有name属性,且属性值包含了“abc”的p标签

其中p标签可以换成任意HTML标签,属性和属性值同理

CSS属性选择器就比较简单了,字面意思选择HTML标签的属性

同样这么多类型不一一举例说明了,大同小异看下面示例就能看懂了

代码示例

<style>
    li[name] {
        color: blue;
    }
    /* 选择含有name属性的<li>标签 */
    /* 并将字体颜色设置为蓝色 */

    li[class=a]{
        color: red;
    }
    /* 选择class属性值为a的<li>标签 */
    /* 并将字体颜色设置为红色 */

    li[id=b] {
        color: yellow;
    }
    /* 选择id属性值为b的<li>标签 */
    /* 并将字体颜色设置为黄色 */

    li[title*=abc]{
        color: green;
    }
    /* 选择title属性值包含abc的<li>标签 */
    /* 并将字体颜色设置为绿色 */

</style>

<ol>
    <li name>文本1</li>
    <!-- 含有name属性的<li>标签 -->

    <li class="a">文本2</li>
    <!-- class属性值为a的<li>标签 -->

    <li id="b">文本3</li>
    <!-- id属性值为b的<li>标签 -->

    <li title="abcdefg">文本4</li>
    <!-- title属性值包含abc的<li>标签 -->

</ol>

预览

CSS属性选择器效果预览图
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容