VueSeamlessScroll 无缝滚动点击事件不生效(需要给复制Dom加样式)

本文主要是介绍VueSeamlessScroll 无缝滚动点击事件不生效(需要给复制Dom加样式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

VueSeamlessScroll 无缝滚动点击事件不生效(需要给复制Dom加样式)

  • 实现效果
  • 遇到问题
  • 具体实现
  • 扩展

实现效果

  • VueSeamlessScroll 列表无缝滚动,且可以选择某一项进行选中改变背景,并且将选中的数据传到其他接口中
    在这里插入图片描述

遇到问题

  • 问题:数据的点击事件,只有第一遍循环的时候生效,后面循环出来的数据都不生效
  • 原因:不能点击的原因是因为html元素是复制出来的(滚动组件是将后面的复制出来一份,进行填铺页面,方便滚动)
  • 解决方案: 往滚动组件的父节点上添加绑定事件(js冒泡机制),通过e.target定位到具体点击位置。

具体实现

<template><divclass="scroll-list h_24"ref="scrollList"@click="onSelect($event)"><vue-seamless-scrollv-if="data && data.length":data="data"ref="seamlessScroll":class-option="vueSeamlessOptions":style="{ height: scrollHeight }"><div class="scroll-list_body"><divclass="scroll-list_body__item"v-for="(item, index) in data":key="index":data="JSON.stringify(item)":style="{ backgroundColor: item.index === activeIndex ? color : '' }"><!-- 你的滚动列表内容 --></div></div></vue-seamless-scroll></div>
</template>
<script>
import vueSeamlessScroll from "vue-seamless-scroll";
export default {name: "scroll-list",components: {vueSeamlessScroll,},props: {// 你的渲染数据data: {type: Array,default: () => [],},// 传入的选中背景色color: {type: String,default: "rgba(250, 173, 20, 0.1)",},},data() {return {// 滚动高度scrollHeight: 0,activeIndex: undefined,vueSeamlessOptions: {step: 1, // 设置步长为1,即每次滚动一条数据limitMoveNum: 8, // 限制滚动次数为8次hoverStop: true, // 鼠标悬停时停止滚动direction: 1, // 滚动方向为向下},};},watch: {data() {this.activeIndex = undefined;},},mounted() {const scrollHeight = this.$refs["scrollList"].clientHeight;if (scrollHeight) {this.scrollHeight = `${scrollHeight}px`;}},methods: {onSelect(e) {const path = e.path || (e.composedPath && e.composedPath());let target = path.filter((r) => /scroll-list_body__item/.test(r.className));if (target.length) target = target[0];else return;//列表超过8条数据即开始滚动有复制元素时才这样操作if (this.data.length > 8) {const classNames = document.getElementsByClassName("scroll-list_body__item");// 循环获取到的元素集合Array.prototype.forEach.call(classNames, function (element) {element.style.background = "";});target.style.background = this.color;}const data = JSON.parse(target.getAttribute("data")); // 单项数据详情,点击那行数据的所有数据this.activeIndex = data.index;//你要做的其他操作},},
};
</script>
<style lang="less" scoped>
.scroll-list {overflow: hidden;&_body {&__item {display: flex;align-items: center;padding: 8px 0;position: relative;cursor: pointer;// 你的滚动列表样式}}
}
</style>

扩展

  • 获取class为xxx的元素
// 获取class为email-tag的元素:
var elements = document.getElementsByClassName('xxx');
// 循环获取到的元素集合
Array.prototype.forEach.call(elements, function (element) {console.log(element)
});
  • 为什么不能直接用forEach 循环?

因为document.querySelectorAll()返回的并不是我们想当然的数组,而是NodeList,对NodeList,它里面没有.forEach方法。

这篇关于VueSeamlessScroll 无缝滚动点击事件不生效(需要给复制Dom加样式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097535

相关文章

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动

一文详解PostgreSQL复制参数

《一文详解PostgreSQL复制参数》PostgreSQL作为一款功能强大的开源关系型数据库,其复制功能对于构建高可用性系统至关重要,本文给大家详细介绍了PostgreSQL的复制参数,需要的朋友可... 目录一、复制参数基础概念二、核心复制参数深度解析1. max_wal_seChina编程nders:WAL

CSS3 布局样式及其应用举例

《CSS3布局样式及其应用举例》CSS3的布局特性为前端开发者提供了无限可能,无论是Flexbox的一维布局还是Grid的二维布局,它们都能够帮助开发者以更清晰、简洁的方式实现复杂的网页布局,本文给... 目录深入探讨 css3 布局样式及其应用引言一、CSS布局的历史与发展1.1 早期布局的局限性1.2

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结

使用FileChannel实现文件的复制和移动方式

《使用FileChannel实现文件的复制和移动方式》:本文主要介绍使用FileChannel实现文件的复制和移动方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录使用 FileChannel 实现文件复制代码解释使用 FileChannel 实现文件移动代码解释