事件委托Tab栏切换

2024-01-09

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>tab栏切换</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    .tab {
      width: 590px;
      height: 340px;
      margin: 20px;
      border: 1px solid #e4e4e4;
    }

    .tab-nav {
      width: 100%;
      height: 60px;
      line-height: 60px;
      display: flex;
      justify-content: space-between;
    }

    .tab-nav h3 {
      font-size: 24px;
      font-weight: normal;
      margin-left: 20px;
    }

    .tab-nav ul {
      list-style: none;
      display: flex;
      justify-content: flex-end;
    }

    .tab-nav ul li {
      margin: 0 20px;
      font-size: 14px;
    }

    .tab-nav ul li a {
      text-decoration: none;
      border-bottom: 2px solid transparent;
      color: #333;
    }

    .tab-nav ul li a.active {
      border-color: #e1251b;
      color: #e1251b;
    }

    .tab-content {
      padding: 0 16px;
    }

    .tab-content .item {
      display: none;
    }

    .tab-content .item.active {
      display: block;
    }
  </style>
</head>

<body>
  <div class="tab">
    <div class="tab-nav">
      <h3>每日特价</h3>
      <ul>
        <li><a class="active" href="javascript:;" data-id="0">精选</a></li>
        <li><a href="javascript:;" data-id="1">美食</a></li>
        <li><a href="javascript:;" data-id="2">百货</a></li>
        <li><a href="javascript:;" data-id="3">个护</a></li>
        <li><a href="javascript:;" data-id="4">预告</a></li>
      </ul>
    </div>
    <div class="tab-content">
      <div class="item active"><img src="../images/tab00.png" alt="" /></div>
      <div class="item"><img src="../images/tab01.png" alt="" /></div>
      <div class="item"><img src="../images/tab02.png" alt="" /></div>
      <div class="item"><img src="../images/tab03.png" alt="" /></div>
      <div class="item"><img src="../images/tab04.png" alt="" /></div>
    </div>
  </div>
  <script>
    //采用事件委托形式tab栏切换
    //获取父级元素ul。因为ul只有一个
    const ul = document.querySelector('.tab-nav ul')
    //添加事件
    ul.addEventListener('click',function (e){
      // console.log(e.target.tagName)
      if (e.target.tagName === 'A'){
        // console.log('wxdsa')
        document.querySelector('.tab-nav .active').classList.remove('active')
        e.target.classList.add('active')
        // console.log(e.target.dataset.id)
        const i = +e.target.dataset.id
        //排他思想
        document.querySelector('.tab-content .active').classList.remove('active')
        document.querySelector(`.tab-content .item:nth-child(${i+1})`).classList.add('active')
      }
    })
  </script>
</body>

</html>

报错一定要注意: e.target.dataset.id获取过来的是数组,要转成int类型。不要忘记’+‘号

const i = +e.target.dataset.id

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

事件委托Tab栏切换 的相关文章

  • 前端如何处理大量数据。

    理论就是分割后台数据 然后通过定时器将数据加载到虚拟dom上 加载完成后渲染一部分 在项目中经常会碰到大量数据需要在前端页面渲染 很多时候会使用分页的功能 但是数据量过大的时候比如10万条这种的 一直滑动列表后面会出现卡顿 滑不动的现象 这
  • HarmonyOS鸿蒙开发指南:容器组建 dialog开发指导

    目录 创建Dialog组件 设置弹窗响应 场景示例 创建Dialog组件 在pages index目录下的hml文件中创建一个Dialog组件 并添加Button组件来触发Dialog Dialog组件仅支持width height mar

随机推荐

  • 工作五年,一年内我靠这系列java面试宝典从13K到大厂30K

    我认为对于面试以及进阶最佳的学习方法莫过于 刷题 博客 书籍 总结 前三者我将淋漓尽致地挥毫于这篇文章中 至于总结要靠个人 实际上越到后面你越会发现面试并不难 其次就是在刷题的过程中有没有去思考 刷题只是次之 这又是一个层次了 这里暂时不提
  • 如何处理不稳定的自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 abluecolor 在解决这个问题之前 请停止编写更多测试 因为这将花费你较高的测试维护成本 你需要尽快行动起来对不稳定的原因进行深入研究 找到不稳定
  • HarmonyOS鸿蒙开发指南:容器组建 tabs开发指导

    目录 创建Tabs 设置Tabs方向 设置样式 显示页签索引 场景示例 创建Tabs 在pages index目录下的hml文件中创建一个Tabs组件 div class container div
  • 阿里巴巴大神发布的Java零基础笔记,实战教程多到手软,跪了

    前言 现值金九银十之际 是面试高峰季 很多学校开始校招 也是跳槽转行的最佳时机 根据数据显示 程序员是金九银十里最热门的行业 也是需求量最大的行业 但是程序员是个门槛低 但金字塔顶峰比较高的行业 意味着你的付出要比别人多才能拔尖 我们都知道
  • 987页的Java面试宝典,看完才发现,应届生求职也没那么难

    前言 现在已经九月底 金九银十也已经过去了一大半 很明显今年的面试季明显不如往年火热 对于求职者来说 也更难了一些 马上迎来国庆节 假期一过 十月份又过去了三分之一 综合来看今年确实不是面试的最佳时期 不过趁今年所剩的时间来好好准备 明年的
  • 基于Java ssm美容院管理系统的设计与实现

    一 技术介绍 Java语言 SSM框架 SpringBoot框架 JSP页面 Mysql数据库 IDEA Eclipse开发 有需要的同学 源代码和配套文档领取 加文章最下方的名片哦 二 资料介绍 完整源代码 前后端源代码 SQL脚本 配套
  • 鸿蒙Ability开发-Stage模型下Ability的创建和使用

    创建Ability和Page页面 创建两个Ability EntryAbility DetailsAbility 其中EntryAbility是由工程默认创建的 这里我们只讲如何创建DetailsAbility 使用DevEco Studi
  • 基于Java ssm教资考前指导系统的设计与实现

    一 技术介绍 Java语言 SSM框架 SpringBoot框架 JSP页面 Mysql数据库 IDEA Eclipse开发 有需要的同学 源代码和配套文档领取 加文章最下方的名片哦 二 资料介绍 完整源代码 前后端源代码 SQL脚本 配套
  • Airtest常用API介绍

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 今天就继续给大家介绍一下Airtest框架常用的核心API用法 这也是熟悉使用Airtest框架的必备手册之一 一 官方文档 官方文档 https ai
  • 各大厂急招鸿蒙开发员,争抢鸿蒙工程师

    去年9月 余承东宣布鸿蒙原生应用全面启动 华为开始了全面抛弃安卓的进程 多家互联网公司也发布了鸿蒙OS的App开发工程师的岗位 开启了抢人大战 有的企业开出了近百万的年薪招聘鸿蒙OS工程师 而华为甚至为鸿蒙OS资深架构师开出了100万 16
  • 2024年一套超详细Java面试精华资料,让进大厂少走弯路

    在座的诸位有没有是自学Java的 有的话评论区给我扣个1看看 但凡自学过的同学都知道有多难 虽说现在互联网非常发达 不明白的上网一搜就有很多资料 不过大多质量不高 而且非常碎片化 实在很难梳理成一个可持续成长的体系 所以有了这篇文章 我结合
  • 基于Java ssm考研助手系统的设计与实现

    一 技术介绍 Java语言 SSM框架 SpringBoot框架 JSP页面 Mysql数据库 IDEA Eclipse开发 有需要的同学 源代码和配套文档领取 加文章最下方的名片哦 二 资料介绍 完整源代码 前后端源代码 SQL脚本 配套
  • OpenHarmony基于HDF简单驱动开发实例

    背景 OpenHarmony 3 0 LTS qemu small system demo liteos a qemu 添加配置 device qemu arm virt liteos a hdf config device info de
  • 蜜罐技术是指什么?

    特殊设计的安全措施 蜜罐技术 是一种特殊设计的安全措施 其主要目的是为了吸引并诱骗潜在的 网络攻击者 这种技术涉及布置诱饵主机 网络服务和信息 旨在引诱攻击者在不知情的情况下对其发起攻击 一旦攻击发生 蜜罐便能够捕获和分析攻击者的行为 从而
  • Python采集猎聘网站招聘数据内容,看看现在职位风向

    嗨喽 大家好呀 这里是爱看美女的茜茜呐 环境使用 Python 3 10 Pycharm 模块使用 第三方模块 需安装 requests gt pip install requests pandas gt pip install panda
  • 2024 年最新版 Java 面试题及答案整理(纯干货,超详细)

    程序员一步入中年 不知不觉便会被铺天盖地的 危机感 上身 曾经的那个少年已经不在 时间就是这样公平 就算你能发明 Java 语言 随着时间的推移 你注定还是要成为慢慢变蔫的茄子 缓缓变黑的葡萄 看着春招就要来临的消息 吓得我周末赶紧拿出了面
  • 基于ssm面向品牌会员的在线商城的设计与实现

    一 技术介绍 Java语言 SSM框架 SpringBoot框架 JSP页面 Mysql数据库 IDEA Eclipse开发 有需要的同学 源代码和配套文档领取 加文章最下方的名片哦 二 资料介绍 完整源代码 前后端源代码 SQL脚本 配套
  • 工程管理系统功能设计与实践:实现高效、透明的工程管理

    在现代化的工程项目管理中 一套功能全面 操作便捷的系统至关重要 本文将介绍一个基于Spring Cloud和Spring Boot技术的Java版工程项目管理系统 结合Vue和ElementUI实现前后端分离 该系统涵盖了项目管理 合同管理
  • Java面试资料合集(24年目前最全整理面试跳槽必备)

    有了他们闭着眼睛也能找到工作 这段时间不是正好到了金三银四的季节了嘛 我司前段时间在整体环境不是很景气的大前提下也是招到了很多的开发小伙伴 听到开发组的组长说这批进来的一些新人还算是很优秀的 本来我心里的小算盘是 这样后面再给他们提一些需求
  • 事件委托Tab栏切换