结构伪类选择器

结构伪类选择器主要根据文档结构来选择器元素,常用于根据父亲父亲选择器里面的子元素

选择符简介
E:first-child匹配父元素中的第一个子元素E
E:last-child匹配父元素中最后一个E元素
E:nth-child(n)匹配父亲中的第n个子元素E
E:first-of-type指定类型E的第一个
E:last-of-type指定类型E的最后一个
E:nth-of-type(n)指定类型E的第n个

 前三个的代码样例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>结构伪类选择器</title>
    <style>
        ul li:first-child {
            background-color: pink;
        }
        ul li:last-child {
            background-color: lightblue;
        }
        ul li:nth-child(3) {
            background-color: tomato;
        }
    </style>
</head>
<body>
    <ul>
        <li>我是第1个孩子</li>
        <li>我是第2个孩子</li>
        <li>我是第3个孩子</li>
        <li>我是第4个孩子</li>
        <li>我是第5个孩子</li>
        <li>我是第6个孩子</li>
        <li>我是第7个孩子</li>
        <li>我是第8个孩子</li>
    </ul>
</body>
</html>

效果图:

        


1、关于nth-child(n) 扩展

nth-child(n) 选择某个父元素的一个或多个特定的子元素

  • n可以是数字,关键字,公式。

  • n如果是数字,即使选怎第n个子元素,里面数字从1开始。。。。

  • n可以是关键字:even偶数,odd奇数

  • n可以是公式:常见的公式如下(如果n是公式,则从第0个元素或者超出了元素的个数会被忽略)

  • 公式取值
    2n偶数
    2n+1奇数
    5n5 10 15 .....
    n+5从第五个开始(包含第五个) 到最后一个
    -n+5前五个(包含第五个)。。。。

    关键字效果图:

🐱代码样例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>结构伪类选择器</title>
    <style>
        /* 关键字 把所有的偶数行 都变 */
        ul li:nth-child(even) {
            background-color: #ccc;
        }
        /* 关键字 把所有的奇数行 都变 */
        ul li:nth-child(odd) {
            background-color: gray;
        }
    </style>
</head>
<body>
    <ul>
        <li>我是第1个孩子</li>
        <li>我是第2个孩子</li>
        <li>我是第3个孩子</li>
        <li>我是第4个孩子</li>
        <li>我是第5个孩子</li>
        <li>我是第6个孩子</li>
        <li>我是第7个孩子</li>
        <li>我是第8个孩子</li>
    </ul>
</body>
</html>

公式效果图:

🐱代码样例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>结构伪类选择器</title>
    <style>
        /* 通过公式去改变  里面只加 公式n就是 从1-n(最后一个变色)*/
        ul li:nth-child(n) {
            background-color: pink;
        }
    </style>
</head>
<body>
    <ul>
        <li>我是第1个孩子</li>
        <li>我是第2个孩子</li>
        <li>我是第3个孩子</li>
        <li>我是第4个孩子</li>
        <li>我是第5个孩子</li>
        <li>我是第6个孩子</li>
        <li>我是第7个孩子</li>
        <li>我是第8个孩子</li>
    </ul>
</body>
</html>

2、nth-child(n) 和 nth-of-type 的区别

区别:

  1. nth-child 对父元素里面所有孩子排序选择(序号是固定的)先找到第n个孩子,然后看看是否和E(:这个符号前面的元素标签)匹配

  2. nth-of-type对父元素里面指定子元素进行选择。先去匹配E(同理上面的E),然后再根据E找第n个孩子。


3、代码样例解析

nth-child版代码:

section div:nth-child(1) {
            background-color: pink;
}
​
 <section>
        <p>光头强</p>
        <div>熊大</div>
        <p>吉吉国王</p>
        <div>熊二</div>
   </section>

效果图:

nth-of-type版代码:

section div:nth-of-type(2) {
            background-color: #ccc;
}
​
<section>
        <p>光头强</p>
        <div>熊大</div>
        <p>吉吉国王</p>
        <div>熊二</div>
    </section>

效果图:

所以综合上述区别如下:

  • <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>nth-child(n) 和 nth-of-child(n) 区别</title>
        <style>
            /* 区别 */
            /* nth-child(n) 是把子元素从头到尾 去标记1,2,3 
            它会先去看 nth-child(1) 这个部分 再去看你前面的元素标签是什么 
            很显然 我们第一个子元素是p标签
            但是你代码中的是div标签 所以 此代码不会执行*/
            section div:nth-child(1) {
                background-color: pink;
            }
    ​
            /* nth-of-type(n) 是先看前面标签div元素 然后跟前面给出的标签div 然后从子元素中第一个div位置 标记是1
            如果中间穿插着其他元素是不会呗记录的*/
            section div:nth-of-type(2) {
                background-color: #ccc;
            }
        </style>
    </head>
    <body>
        <section>
            <p>光头强</p>
            <div>熊大</div>
            <p>吉吉国王</p>
            <div>熊二</div>
        </section>
    </body>
    </html>

4、小结

  • 结构伪类选择器一般用于选择父级里面的第几个孩子

  • nth-child对父元素里面所有孩子排序选择(序号是固定的)先找到第几个孩子,然后看看是否和E匹配

  • nth-of-type 对父元素里面指定子元素进行排序选择。先去匹配E,然后再根据E找第n个孩子

  • 关于nth-child(n) n表示公式 一个n也是!!! 我们要知道n是从0开始计算,要记住常用的公式

  • 如果是无序列表,通常用nth-child更多

  • 类选择器、属性选择器、伪类选择器,权重为10.

大家可以思考以下这个权重值是多少,欢迎 小伙伴留言~ 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值