伪类和伪类元素

一、结构伪类选择器

目标:能够使用结构伪类选择器在HTML中定位元素

1、作用与优势:

  1. 作用:根据元素在HTML中的结构关系查找元素
  2. 优势:减少对于HTML中类的依赖,有利于保持代码整洁
  3. 场景:常用于查找某父级选择器中的子元素

2、选择器

选择器说明
E:first-child { }匹配父元素中第一个子元素,并且是E元素
E:last-child { }

匹配父元素中最后一个元素,并且是E元素

E:nth-child(n) { }匹配父元素中第n个元素,并且是E元素
E:nth-last-child(n) { }匹配父元素中倒数第n个子元素,并且是E元素

注:

  • E:xxxx这是交集选择器,不能有东西分隔
  • 括号里除了可以填具体的数字,还可以填n这个字母
<style>
        /* 1、找到第一个子元素 ,并且为li标签*/
        li:first-child {
            background-color: blue;
        }
    </style>

<body>
    <ul>

        <li>我是第1个li</li>
        <li>我是第2个li</li>
        <li>我是第3个li</li>
        <li>我是第4个li</li>
        <li>我是第5个li</li>
        <li>我是第6个li</li>
        <li>我是第7个li</li>
        <li>我是第8个li</li>
        <li>我是第9个li</li>
        <li>我是第10个li</li>
    </ul>
</body>

 

 

<style>
        /* 1、找到第一个子元素 ,并且为li标签*/
        li:first-child {
            background-color: blue;
        }

        /* 2、找到最后一个子元素,并且为li标签 */
        li:last-child {
            background-color: orange;
        }

        /* 3、找到第三个子元素,并且为li标签 */

        li:nth-child(3) {
            background-color: pink;
        }

        /* 4、找到倒数第三个子元素,并且为li标签 */

        li:nth-last-child(3) {
            background-color: green;
        }
    </style>

<body>
    <ul>
        <li>我是第1个li</li>
        <li>我是第2个li</li>
        <li>我是第3个li</li>
        <li>我是第4个li</li>
        <li>我是第5个li</li>
        <li>我是第6个li</li>
        <li>我是第7个li</li>
        <li>我是第8个li</li>
        <li>我是第9个li</li>
        <li>我是第10个li</li>
    </ul>
</body>

n的注意点:

  1. n为:0、1、2、3、4、5、6、.....
  2. n在式子里必须写在前面
  3. 通过n可以组成常见公式
    功能公式
    偶数2n、even
    奇数2n+1、2n-1、odd
    找到前五个-n+5
    找到从第五个往后n+5
    <style>
            /* 1、找到偶数个li */
            li:nth-child(2n) {
                /* background-color: orange; */
            }
    
            li:nth-child(even) {
                background-color: blue;
            }
    
        </style>
    <body>
        <ul>
            <!-- <div>私生子</div> -->
            <li>我是第1个li</li>
            <li>我是第2个li</li>
            <li>我是第3个li</li>
            <li>我是第4个li</li>
            <li>我是第5个li</li>
            <li>我是第6个li</li>
            <li>我是第7个li</li>
            <li>我是第8个li</li>
            <li>我是第9个li</li>
            <li>我是第10个li</li>
        </ul>
    </body>
    
    

     完整代码

     <style>
            /* 1、找到偶数个li */
            li:nth-child(2n) {
                /* background-color: orange;  */
            }
    
            li:nth-child(even) {
                /* background-color: blue; */
            }
    
            /* 2、找到奇数个li */
            li:nth-child(2n+1) {
                /* background-color: orange; */
            }
            li:nth-child(2n-1) {
                /* background-color: orange; */
            }
    
            /* 3、找到前五个 */
            li:nth-child(-n+5) {
                /* background-color: ; */
            }
    
            /* 4、找到第五个往后 */
            li:nth-child(n+5) {
                background-color: red;
            }
        </style>
    
    <body>
        <ul>
            <!-- <div>私生子</div> -->
            <li>我是第1个li</li>
            <li>我是第2个li</li>
            <li>我是第3个li</li>
            <li>我是第4个li</li>
            <li>我是第5个li</li>
            <li>我是第6个li</li>
            <li>我是第7个li</li>
            <li>我是第8个li</li>
            <li>我是第9个li</li>
            <li>我是第10个li</li>
        </ul>
    </body>

(拓展补充)结构伪类选择器的易错点

问题:在下列案例中,如果需要找到一个a标签,如何去查找

 

 

<style>

        /* 正确的写法:找第一个li中的a */
        li:first-child a {
            color: red;
        }
    </style>

<body>
    <ul>
        <li><a href="#">我是第1个a标签</a></li>
        <li><a href="#">我是第2个a标签</a></li>
        <li><a href="#">我是第3个a标签</a></li>
        <li><a href="#">我是第4个a标签</a></li>
        <li><a href="#">我是第5个a标签</a></li>
        <li><a href="#">我是第6个a标签</a></li>
        <li><a href="#">我是第7个a标签</a></li>
        <li><a href="#">我是第8个a标签</a></li>

    </ul>
</body>

 

 二、伪元素

目标:能够使用伪元素在网页中创建内容

伪元素:一般页面中的非主体内容可以使用伪元素

区别:

  1. 元素:HTML设置的标签
  2. 伪元素:由CSS模拟出的标签效果 

种类:

伪元素作用
::before父元素内容的最前添加一个伪元素
::after父元素内容的最后添加一个伪元素

 注意点:

  1. 必须设置content属性才能生效 表示伪元素内部显示的基本内容
  2. 伪元素默认是行内元素
<style>
        .father {
            width: 300px;
            height: 300px;
            background-color: skyblue;
        }

        .father::before {
            /* 必加的内容 */
            content: '我是一个伪元素';
            width: 100px;
            height: 100px;
            background-color: orange;
            display: block;
        }
    </style>

<body>
    <div class="father">我是father内部的内容</div>
</body>

 

 <style>
        .father {
            width: 300px;
            height: 300px;
            background-color: skyblue;
        }

        .father::after {
            content: '我是一个伪元素';
            width: 100px;
            height: 100px;
            background-color: orange;
            display: block;
        }
    </style>

<body>
    <div class="father">我是father内部的内容</div>
</body>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值