动态类名在 <swiper-slide 的复制项中没有起作用的解决方法

动态类名在 <swiper-slide 的复制项中没有起作用的解决方法

错误代码

<swiper:options="swiperOption"ref="mySwiper"class="bottom-ul"><swiper-slide v-for="(d, i) in bottomData":key="i"class="menu-item"><!--@click="btnClick(d.groupName)"--><liclass="menu-li":class="{ active: activeGroup === d.groupName }"><!--<i style=""><img:src="d.src"></i>--><span>{{d.groupName}}</span></li></swiper-slide>

核心原因是复制的 slide 是 Swiper 纯 DOM 层面的复制,不会触发 Vue 的响应式渲染,所以复制项里的 Vue 指令(如 :class)完全失效。

问题本质拆解

v-for 只渲染了真实的 slide,这些 slide 内的<li>受 Vue 响应式控制,active 类名正常;
Swiper 开启 loop 后,会在 DOM 层面复制真实 slide 生成 duplicate 项,但复制的只是静态 DOM 结构,没有 Vue 的响应式绑定,所以 :class 指令不会执行,active 类名自然不会出现在复制项的<li>上;
当切换到复制 slide 时,视觉上看到的是复制项的<li>,但它没有 active 类,导致选中样式丢失。
解决方案:手动同步复制项的 active 类
核心思路是:监听 Swiper 的切换事件和 Vue 的 activeGroup 变化,手动给真实 slide + 复制 slide 中匹配的<li>添 / 删 active 类,绕过 Vue 响应式的限制。

<template><div><swiper:options="swiperOption"ref="mySwiper"class="bottom-ul"@slideChange="handleSlideChange"><swiper-slide v-for="(d, i) in bottomData":key="i"class="menu-item":data-group-name="d.groupName"<!--给真实slide标记分组名,方便DOM查找-->><liclass="menu-li":class="{ active: activeGroup === d.groupName }"><span>{{d.groupName}}</span></li></swiper-slide></swiper></div></template><script>import{Swiper,SwiperSlide}from'swiper/vue';import'swiper/css';import'swiper/css/navigation';import'swiper/css/pagination';importSwiperCorefrom'swiper';exportdefault{components:{Swiper,SwiperSlide},data(){return{bottomData:[// 示例数据{groupName:'分组1'},{groupName:'分组2'},{groupName:'分组3'},{groupName:'分组4'}],activeGroup:'分组2',// 默认选中的分组swiperOption:{centeredSlides:true,// 居中展示loop:true,// 循环(导致复制slide)slidesPerView:'auto',// 自适应宽度loopAdditionalSlides:5,// 增加复制slide数量initialSlide:1,// 初始从真实slide开始centeredSlidesBounds:false}};},watch:{// 监听activeGroup变化,同步更新所有slide(真实+复制)的active类activeGroup(newVal){this.syncActiveClass(newVal);}},mounted(){// 初始化时同步一次active类(确保复制项也有初始选中样式)this.$nextTick(()=>{this.syncActiveClass(this.activeGroup);});},methods:{// 核心方法:同步真实slide和复制slide的active类syncActiveClass(activeName){if(!this.$refs.mySwiper)return;// 1. 先移除所有slide内li的active类(避免多个active)document.querySelectorAll('.bottom-ul .menu-li').forEach(li=>{li.classList.remove('active');});// 2. 找到所有包含目标groupName的slide(真实+复制),给其li加active类consttargetSlides=document.querySelectorAll(`.bottom-ul .menu-item[data-group-name="${activeName}"]`);targetSlides.forEach(slide=>{constli=slide.querySelector('.menu-li');if(li)li.classList.add('active');});},// Swiper切换事件:同步activeGroup和active类handleSlideChange(){constswiperInstance=this.$refs.mySwiper.swiper;// 获取当前激活slide的真实索引constrealIndex=swiperInstance.realIndex;// 更新activeGroup为当前真实slide对应的分组名this.activeGroup=this.bottomData[realIndex].groupName;// 同步复制slide的active类this.syncActiveClass(this.activeGroup);},// 如果你有手动点击li的方法,也要同步调用syncActiveClassbtnClick(groupName){this.activeGroup=groupName;this.syncActiveClass(groupName);// 可选:点击后让对应的slide居中constswiperInstance=this.$refs.mySwiper.swiper;consttargetIndex=this.bottomData.findIndex(d=>d.groupName===groupName);swiperInstance.slideTo(targetIndex+1,300,true);// +1 适配loop的索引偏移}}};</script><style scoped>/* 示例样式:方便看选中效果 */.menu-li{list-style:none;padding:8px 16px;cursor:pointer;}.menu-li.active{background-color:#409eff;color:white;border-radius:4px;}.bottom-ul{width:100%;overflow:hidden;}.menu-item{display:inline-block;margin:08px;}</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1206165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哪个牌子的静脉曲张袜好用?medi迈迪静脉曲张袜专业之选

长久以来,静脉曲张袜(医用级压力袜)常被简单地视为一种缓解腿部疲劳的消费品。然而,真实的医学数据揭示,它更是一种经过严格临床验证的、在静脉疾病管理全链条中扮演重要角色的医疗器械。其必要性并非源于商业宣传…

除甲醛智商税避坑指南:2025年十大真有效产品

新房装修、新车入手后,甲醛污染始终是家庭健康的“隐形威胁”。市面上的除甲醛产品五花八门,消费者难免陷入“除甲醛产品哪个好”的选择困境。为了帮大家避开选购误区,本文基于GB/T18883-2022国家标准,结合第三方C…

专精特新培育:从政策红利到能力红利的系统跃迁之路

专精特新培育&#xff1a;从政策红利到能力红利的系统跃迁之路在中国制造业转型升级的关键时期&#xff0c;“专精特新”已成为中小企业高质量发展的明确路径。然而&#xff0c;真正的专精特新培育&#xff0c;绝非简单的资质申报或政策对接&#xff0c;而是一场深刻的系统性能…

专知智库:以数据要素为核心引擎,赋能专精特新企业生产力与产品力双重跃迁

专知智库&#xff1a;以数据要素为核心引擎&#xff0c;赋能专精特新企业生产力与产品力双重跃迁在数字经济浪潮下&#xff0c;数据已成为继土地、劳动力、资本、技术之后的第五大生产要素。对于专精特新企业而言&#xff0c;数据要素的深度应用不仅是技术升级的路径&#xff0…

成都余行专利代理事务所:专精特新企业知识产权全流程战略护航专家

成都余行专利代理事务所&#xff1a;专精特新企业知识产权全流程战略护航专家 在专精特新企业的发展征程中&#xff0c;知识产权不仅是技术创新的保护伞&#xff0c;更是企业构建核心竞争力和生态话语权的战略武器。然而&#xff0c;专利工作绝非简单的“申请-授权”线性流程&…

余行补位方法论:同步提升市场竞争力与专利授权率的双核引擎

余行补位方法论&#xff1a;同步提升市场竞争力与专利授权率的双核引擎在专精特新企业的发展实践中&#xff0c;市场竞争力与专利授权率常常被视为两个独立的目标&#xff1a;前者关乎商业成功&#xff0c;后者关乎法律保护。然而&#xff0c;成都专知利乎数字科技有限公司提出…

吐血推荐!自考AI论文软件TOP9:选对工具轻松过关

吐血推荐&#xff01;自考AI论文软件TOP9&#xff1a;选对工具轻松过关 2026年自考AI论文工具测评&#xff1a;选对工具&#xff0c;事半功倍 随着人工智能技术的不断进步&#xff0c;越来越多的自考生开始借助AI论文写作工具提升写作效率、优化内容质量。然而&#xff0c;面…

余行补位方法论:构建专精特新企业的“护城河飞轮”

余行补位方法论&#xff1a;构建专精特新企业的“护城河飞轮”一、方法论落地的三重验证体系1.1 技术验证与专利预审同步机制同步流程&#xff1a;在技术方案原型验证阶段&#xff0c;专利工程师同步介入关键动作&#xff1a;构建“技术特征-专利权利要求”映射矩阵开展模拟审查…

专精特新小巨人发展,为何必须依靠外脑?又该找谁?

专精特新小巨人发展&#xff0c;为何必须依靠外脑&#xff1f;又该找谁&#xff1f;专精特新小巨人企业正站在发展的关键节点&#xff1a;一方面拥有核心技术优势&#xff0c;另一方面却面临从“技术冠军”向“生态领袖”跃迁的复杂挑战。在这个阶段&#xff0c;仅靠企业内部力…

带pip的python2.x版本

带pip的python2.x版本python 2.7.9

亲测好用9个AI论文写作软件,专科生轻松搞定毕业论文!

亲测好用9个AI论文写作软件&#xff0c;专科生轻松搞定毕业论文&#xff01; 专科生的论文写作救星&#xff0c;AI 工具如何改变你的学习节奏&#xff1f; 在当今这个信息爆炸的时代&#xff0c;学术写作早已不再是少数人的专属。对于专科生而言&#xff0c;撰写一篇合格的毕业…

NMN哪个产品最好?NAD+哪个产品最好,2026细胞抗衰机制白皮书

本白皮书基于对当前衰老生物学研究的前沿洞察,旨在系统梳理与评估2026年主流NAD+前体补充剂品牌的产品作用机制。核心观点援引自《NatureAging》等顶刊近期的权威综述,即“针对衰老这一复杂系统性疾病,最有效的干预…

Zemax光学设计偶次非球面优化技巧

一、非球面K系数与高次项开启时机1. 仅开K系数◦ 用于校正初级球差&#xff0c;适合对像差要求不高的简单系统&#xff08;如单透镜、双胶合望远镜物镜&#xff09;。◦ 场景&#xff1a;中小视场、低NA成像系统&#xff0c;或作为复杂系统的“基础校正”第一步&#xff0c;避免…

光学工程师就业方向推荐

先给结论&#xff1a;优先选车载/AR光学、半导体光刻光学、硅光/光子集成&#xff0c;这三个方向当前需求旺、薪资高、成长空间大。入门先做成像光学设计攒工程经验&#xff0c;再转高端赛道更稳。下面按方向讲清工作内容、适合人群与推荐理由&#xff0c;最后给选择建议。一、…

Zemax光学设计MTF子午和弧矢分开大,

子午和弧矢分开大&#xff0c;核心是像散超标&#xff0c;常伴随场曲不匹配&#xff0c;按“先诊断-调结构-强约束-优参数-验结果”五步解决。 一、快速诊断&#xff08;抓本质&#xff09; • 看图表&#xff1a;场曲/畸变图里子午(T)、弧矢(S)像面分离&#xff1b;点列图呈…

小红书评论数据一键获取,item_reviewAPI接口讲解

小红书评论数据获取可通过官方API接口实现&#xff0c;其中item_review API是核心工具&#xff0c;以下从接口特性、调用流程、数据结构、合规要点四方面系统解析&#xff1a;1. 接口特性与能力核心功能&#xff1a;获取指定笔记的评论列表&#xff08;含子评论回复&#xff09…

技术革新与办公效率革命:Nano Banana Pro、NotebookLM与ChatPPT的深度解析

技术革新与办公效率革命&#xff1a;Nano Banana Pro、NotebookLM与ChatPPT的深度解析 一、Nano Banana Pro&#xff1a;图像生成领域的范式革命 1.1 技术核心突破 Nano Banana Pro&#xff08;基于Gemini 3 Pro Image架构&#xff09;并非简单的图像生成工具&#xff0c;而是一…

MongoDB实现发布订阅机制

一、MongoDB Pub/Sub 的实现原理 MongoDB 的发布订阅不是像 Redis 那样的原生 “频道式” Pub/Sub&#xff0c;而是基于变更流&#xff08;Change Streams&#xff09;&#xff08;MongoDB 3.6 推荐&#xff09;或早期的tailable cursor&#xff08;可尾游标&#xff09;实现&a…

conda下安装cuda11.8和cudnn

当需要多个cuda版本的时候我们可以将cuda安装到虚拟机里。 conda install -c nvidia cuda-runtime11.8conda install -c nvidia cudnn

2026最新conda镜像源

设置miniconda镜像源vim ~/.condarc//替换下面的源channels:- defaults show_channel_urls: true default_channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r- https://mirrors.tuna.tsinghua.edu.c…