一文搞懂 结构伪类 :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>
相关推荐
刺客-Andy12 分钟前
React 第七十节 Router中matchRoutes的使用详解及注意事项
前端·javascript·react.js
前端工作日常27 分钟前
我对eslint的进一步学习
前端·eslint
禁止摆烂_才浅1 小时前
VsCode 概览尺、装订线、代码块高亮设置
前端·visual studio code
程序员猫哥1 小时前
vue跳转页面的几种方法(推荐)
前端
代码老y2 小时前
十年回望:Vue 与 React 的设计哲学、演进轨迹与生态博弈
前端·vue.js·react.js
一条上岸小咸鱼2 小时前
Kotlin 基本数据类型(五):Array
android·前端·kotlin
大明882 小时前
用 mouseover/mouseout 事件代理模拟 mouseenter/mouseleave
前端·javascript
小杨梅君2 小时前
vue3+vite中使用自定义element-plus主题配置
前端·element
一个专注api接口开发的小白2 小时前
Python + 淘宝 API 开发:自动化采集商品数据的完整流程
前端·数据挖掘·api
林太白2 小时前
Nuxt.js搭建一个官网如何简单
前端·javascript·后端