一文搞懂 结构伪类 :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>
相关推荐
西洼工作室7 分钟前
Strapi快速入门:从安装到API开发
前端·后端
光影少年19 分钟前
前端线上出现白屏如何排查问题所在,利用第三方的工具都有哪些
前端·学习·web安全·前端框架
濑户川23 分钟前
Vue3 计算属性与监听器:computed、watch、watchEffect 用法解析
前端·javascript·vue.js
_Sem32 分钟前
KMP实战:从单端到跨平台的完整迁移指南
android·前端·app
Carry34535 分钟前
React 与 Vue 开发差异——CSS 样式
前端
前端九哥38 分钟前
我删光了项目里的 try-catch,老板:6
前端·vue.js
2301_7644413338 分钟前
身份证校验工具
前端·python·1024程序员节
4Forsee1 小时前
【Android】View 事件分发机制与源码解析
android·java·前端
一 乐1 小时前
车辆管理|校园车辆信息|基于SprinBoot+vue的校园车辆管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·车辆管理
百锦再2 小时前
Python、Java与Go:AI大模型时代的语言抉择
java·前端·vue.js·人工智能·python·go·1024程序员节