一文搞懂 结构伪类 :nth-child && :nth-of-typ

结构伪类

从使用结构伪类的选择器开始 往上一层父辈开始筛选

从使用结构伪类的选择器开始 往上一层父辈开始筛选

从使用结构伪类的选择器开始 往上一层父辈开始筛选
不是从左往右选择 不是先父辈后筛选子类
从使用结构伪类的选择器开始 往上一层父辈开始筛选

依次选中第1个 第2个 第3个 div

1.前两组 表明 从使用结构伪类的选择器开始 往上一层父辈开始筛选 非先父辈后筛选子类
.f_row1 div:nth-child(1) { background-color: pink; } 错误原因: 先辈筛选子类 ; 整体选择器 选中的是 一整组div; .f_row1 div:nth-child(2) 在dom中不存在这样的结构
.f_row2 li:nth-child(1) div { background-color: #005971; } 正确原因: li在第一层父辈div存在5组 然后计数 依次选中

整体选中第1个P标签 第2个P标签

2.后两组 表明 nth-child是任何儿子辈分都计数1 :nth-of-typ是 结构伪类选择器前的 选择器选中的那种 计数1 【注意 一定是整体可以被匹配到才计数】
.f_row3 p:nth-child(1) { background-color: pink; } 错误原因: 根本不在这样的dom结构
.f_row4 p:nth-of-type(1) { background-color: #005971; } 正确原因: 1. 使用了 正确的结构伪类:nth-of-type 2. 整体能被匹配
点击查看代码

复制代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div[class^="f_row"] li {
      float: left;
      margin: 10px;
    }
    div[class^="f_row"] {
      overflow: hidden;
      margin: 20px auto;
    }
    ul,
    li {
      margin: 0;
      padding: 0;
      list-style: none;
    }
    .c {
      width: 800px;
      margin: 20px auto;
    }

  /* -----------------依次选中第1个 第2个 第3个div--------------------------- */
    /* 错误 .f_row1 div:nth-child(1) 有效 和 .f_row1 div:nth-child(2) 未匹配任何 */
    .f_row1 div:nth-child(1) {
      background-color: pink;
    }

    .f_row1 div:nth-child(2) {
      background-color: pink;
    }

    /* 正确 */
    .f_row2 li:nth-child(1) div {
      background-color: #005971;
    }

    .f_row2 li:nth-child(2) div{
      background-color: #005971;
    }

    .f_row2 li:nth-child(3) div{
      background-color: #005971;
    }


 /* -----------------依次选中第1个 第2个 p--------------------------- */
    /* 错误 nth-child(1)没有选中 nth-child(2)选中1 */
    .f_row3 p:nth-child(1) {
      background-color: pink;
    }
    .f_row3 p:nth-child(2) {
      background-color: pink;
    }
    

    /* 正确 */
    .f_row4 p:nth-of-type(1) {
      background-color: #005971;
    }

    .f_row4 p:nth-of-type(2) {
      background-color: #005971;
    }
  </style>
</head>

<body>
  <div class="c">
    <div class="f_row1">
      <ul>
        <li>
          <div>1</div>
          <p>正品保障</p>
          <p>正品保障,提供发票</p>
        </li>
        <li>
          <div>2</div>
          <p>极速物流</p>
          <p>急速物流,急速送达</p>
        </li>
        <li>
          <div>3</div>
          <p>无优售后</p>
          <p>7天无理由退换货</p>
        </li>
        <li>
          <div>3</div>
          <p>特色服务</p>
          <p>私人定制家电套餐</p>
        </li>
        <li>
          <div>4</div>
          <p>帮助中心</p>
          <p>您的购物指南</p>
        </li>
      </ul>
    </div>
    <div class="f_row2 clearfix">
      <ul>
        <li>
          <div>1</div>
          <p>正品保障</p>
          <p>正品保障,提供发票</p>
        </li>
        <li>
          <div>2</div>
          <p>极速物流</p>
          <p>急速物流,急速送达</p>
        </li>
        <li>
          <div>3</div>
          <p>无优售后</p>
          <p>7天无理由退换货</p>
        </li>
        <li>
          <div>4</div>
          <p>特色服务</p>
          <p>私人定制家电套餐</p>
        </li>
        <li>
          <div>5</div>
          <p>帮助中心</p>
          <p>您的购物指南</p>
        </li>
      </ul>
    </div>
    <div class="f_row3 clearfix">
      <ul>
        <li>
          <div>1</div>
          <p>正品保障</p>
          <p>正品保障,提供发票</p>
        </li>
        <li>
          <div>2</div>
          <p>极速物流</p>
          <p>急速物流,急速送达</p>
        </li>
        <li>
          <div>3</div>
          <p>无优售后</p>
          <p>7天无理由退换货</p>
        </li>
        <li>
          <div>4</div>
          <p>特色服务</p>
          <p>私人定制家电套餐</p>
        </li>
        <li>
          <div>5</div>
          <p>帮助中心</p>
          <p>您的购物指南</p>
        </li>
      </ul>
    </div>
    <div class="f_row4 clearfix">
      <ul>
        <li>
          <div>1</div>
          <p>正品保障</p>
          <p>正品保障,提供发票</p>
        </li>
        <li>
          <div>2</div>
          <p>极速物流</p>
          <p>急速物流,急速送达</p>
        </li>
        <li>
          <div>3</div>
          <p>无优售后</p>
          <p>7天无理由退换货</p>
        </li>
        <li>
          <div>4</div>
          <p>特色服务</p>
          <p>私人定制家电套餐</p>
        </li>
        <li>
          <div>5</div>
          <p>帮助中心</p>
          <p>您的购物指南</p>
        </li>
      </ul>
    </div>
  </div>

</body>

</html>
相关推荐
uhakadotcom25 分钟前
Astro 框架:快速构建内容驱动型网站的利器
前端·javascript·面试
uhakadotcom29 分钟前
了解Nest.js和Next.js:如何选择合适的框架
前端·javascript·面试
uhakadotcom30 分钟前
React与Next.js:基础知识及应用场景
前端·面试·github
uhakadotcom39 分钟前
Remix 框架:性能与易用性的完美结合
前端·javascript·面试
uhakadotcom1 小时前
Node.js 包管理器:npm vs pnpm
前端·javascript·面试
LaoZhangAI2 小时前
2025最全GPT-4o图像生成API指南:官方接口配置+15个实用提示词【保姆级教程】
前端
ONE_Gua2 小时前
chromium魔改——CDP(Chrome DevTools Protocol)检测01
前端·后端·爬虫
LaoZhangAI2 小时前
2025最全Cherry Studio使用MCP指南:8种强大工具配置方法与实战案例
前端
咖啡教室2 小时前
前端开发日常工作每日记录笔记(2019至2024合集)
前端·javascript
溪饱鱼2 小时前
Nuxt3能上生产吗?
前端