走马灯封装

走马灯功能需求:

  1. 支持定时切换;
  2. 支持左右按钮切换(根据鼠标是否在切换组件内展示和隐藏左右切换按钮);
  3. 支持底部标识切换;

走马灯 完整代码如下: 

/*** @class 走马灯*/import react, { Component } from 'react';
import './index.less';
import React from 'react';export default class CarouselCpn extends Component {/*** @param {*} props.itemList 传入元素数组 []* @param {*} props.autoplay 是否自动切换,默认false* @param {*} props.autoplaySpeed 自动切换的间隔(毫秒),默3000ms*/constructor(props) {super(props);const { itemList = [], autoplay = false, autoplaySpeed = 3000 } = props;this.timer = 0; //计时器this.state = {pointIndex: 0,autoplaySpeed, // 自动切换的间隔(毫秒)boxLen: 0, // 内容长度autoplay, // 是否自动切换itemList, // 传入元素数组 []};}onMounted() { }componentDidMount() {const { itemList } = this.state;this.setState({boxLen: itemList.length,})if (this.state.autoplay) {this.play();}}/*** 右按钮事件*/goRight() {if (this.state.pointIndex < (this.state.boxLen - 1)) {this.setState({pointIndex: this.state.pointIndex + 1,})} else {this.setState({pointIndex: 0,})}}/*** 左侧切换按钮*/onclickLeftBtn() {if (this.state.pointIndex == 0) {this.setState({pointIndex: (this.state.boxLen - 1),});} else {this.setState({pointIndex: this.state.pointIndex - 1,});}}/*** 右侧切换按钮*/onclickRightBtn() {if (this.state.pointIndex < (this.state.boxLen - 1)) {this.setState({pointIndex: this.state.pointIndex + 1,});} else {this.setState({pointIndex: 0,});}}/*** 点击对应的点* * @param {*} indexValue 序号标识*/onClickPoint(indexValue) {this.setState({pointIndex: indexValue,})}/*** 开始定时*/play() {this.timer = setInterval(() => {this.goRight();}, this.state.autoplaySpeed);}/*** 是否清除定时* @param {boolean} isRight * @returns */setTimer = (isRight) => {if (this.state.autoplay) {if (!isRight) {clearInterval(this.timer);this.timer = 0;} else if (isRight) {this.play();}}}render() {const { pointIndex, itemList } = this.state;const { keyIndex } = this.props;return (<divclassName="wrap"key={keyIndex}onMouseMove={this.setTimer.bind(this, false)}onMouseLeave={this.setTimer.bind(this, true)}style={{ width: '460px', height: '292px' }}><ul className="list" style={{ width: '460px', height: '292px' }}>{itemList.map((itemVaue, indexValue) => {return <liclassName={indexValue === pointIndex ? 'item active' : 'item'}key={`item${indexValue}`}style={{zIndex: indexValue === pointIndex ? 20 : 1,opacity: indexValue === pointIndex ? 1 : 0,}}>{itemVaue}</li>;})}</ul><ul className="pointList">{itemList.map((itemVaue, indexValue) => {return (<liclassName={indexValue === pointIndex ? 'point active' : 'point'}data-index={indexValue}onClick={this.onClickPoint.bind(this, indexValue)}key={`point${indexValue}`}></li>);})}</ul><button className="btn" id="leftBtn" onClick={this.onclickLeftBtn.bind(this)} style={{ display: 'none' }}>{'<'}</button><button className="btn" id="rightBtn" onClick={this.onclickRightBtn.bind(this)} style={{ display: 'none' }}>{'>'}</button></div>);}
}

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

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

相关文章

C语言 指针——缓冲区溢出与缓冲区溢出攻击

目录 缓冲区溢出攻击 缓冲区溢出攻击实例 字符串的安全输入方法​编辑 防止缓冲区溢出的两个要点 缓冲区溢出攻击 网络黑客常针对系统和程序自身存在的漏洞&#xff0c;编写相应的攻击程序  对缓冲区溢出漏洞的攻击 —— 最常见  几乎占到了网络攻击次数的一半以上…

Android (已解决)Gradle 编译失败 Unsupported class file major version 61

文章目录 一、报错原因二、解决方法 一、报错原因 新版本的 Android Studio 默认使用的是 Java 17 LTS&#xff0c;而这个历史项目的 Gradle 版本很低&#xff0c;不支持高版本的 Java。 具体原因&#xff1a;Java 17 (major version 61) 编译的 class 文件&#xff0c;如果在…

逆向学习汇编篇:指令的操作

本节课在线学习视频&#xff08;网盘地址&#xff0c;保存后即可免费观看&#xff09;&#xff1a; ​​https://pan.quark.cn/s/660c759dea95​​ 在逆向工程中&#xff0c;深入理解汇编语言的指令操作是至关重要的。汇编指令是计算机硬件与软件之间的桥梁&#xff0c;它们直…

DevEco Studio有时会多出来.js和.map文件,导致项目不能运行

1、问题 在使用DevEco的时候有时候会出现啥都没干&#xff0c;但是在项目的目录下会自动生成和文件同名的.js和.js.map文件&#xff0c;至于为什么会生成目前我也不知道&#xff0c;如果想要更深了解可以到论坛讨论&#xff1a;华为开发者论坛。生成.js和.js.map文件优…

Terraform基础概念一

Terraform基础概念一 1.Infrastructure-as-Code(IaC)概念1.1 IaC优势1.2 IaC工具1.3 IaC的两种方式 2.Terraform基础概念2.1 Terraform工作原理2.2 Terraform 工作流 3.总结 1.Infrastructure-as-Code(IaC)概念 基础设施即代码&#xff08;Infrastructure-as-Code&#xff0c;…

SVN 的忽略(Ignore)和递归(Recursively)以及忽略部分

SVN中忽略大家经常用到&#xff0c;但总是似懂非懂&#xff0c;下面就详细展开说明一下忽略如何设置。 两个忽略 通常设置忽略都是文件夹和里面的文件都忽略&#xff0c;通常只需要鼠标右键点击忽略就可以了&#xff0c;如图&#xff1a; 第一个忽略用的最多&#xff0c;就是…

关于GPIO的上拉、下拉,无上下拉

1.GPIO_PULLUP&#xff08;上拉&#xff09; 作用和原理 作用&#xff1a;上拉模式会在GPIO引脚和电源电压&#xff08;Vcc&#xff09;之间连接一个内部上拉电阻。原理&#xff1a;当引脚配置为输入模式时&#xff0c;如果引脚没有连接到其他外部电路&#xff0c;内部上拉电…

排序算法(C语言版)

前言 排序作为生产环境中常见的需求之一&#xff0c;对整个产品有举足轻重的影响&#xff0c;可以说使用一个合适的排序算法是业务逻辑中比较重要的一部分。今天我们就来介绍常见的排序算法以及实现 排序 所谓排序无非就是按照特定的规则对一组数据就行顺序化。 常见的排序有…

Spring项目报错解读与全部报错详解

你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ ​ gitee https://gitee.com/Qiuner &#x1f339; 如果本篇文章帮到了你 不妨点个赞吧~ 我会很高兴的 &#x1f604; (^ ~ ^) 想看更多 那就点个关注吧 我…

图像大模型中的注意力和因果掩码

AIM — 图像领域中 LLM 的对应物。尽管 iGPT 已经存在 2 年多了&#xff0c;但自回归尚未得到充分探索。在本文中&#xff0c;作者表明&#xff0c;当使用 AIM 对网络进行预训练时&#xff0c;一组图像数据集上的下游任务的平均准确率会随着数据和参数的增加而线性增加。 要运…

uniApp获取实时定位

通过你获取的key放到项目manifest.json里面&#xff0c;对应填写你所需要的key值&#xff0c;还有高德用户名 用户名&#xff1a; key值的位置&#xff1a; 代码&#xff1a; html: <view class"intList pdNone"><view class"label">详细地…

[Cocos Creator] v3.8开发知识点记录(持续更新)

问题&#xff1a;从 cc 里找不到宏定义 CC_PREVIEW 等。 解决方案&#xff1a;找不到就自己定义&#xff0c;将 declare const CC_PREVIEW; 添加到需要的ts文件里。参考&#xff1a;creator3d 找不到宏定义如 CC_EDITOR&#xff0c;CC_PREVIEW&#xff0c;CC_JSB - Creator 3.x…

爬虫:爬取知乎热榜一级评论及回答2024不包含翻页

一、先上结果&#xff08;注:本文仅为兴趣爱好探究&#xff0c;请勿进行商业利用或非法研究&#xff0c;负责后果自负&#xff0c;与作者无关&#xff09; 1、爬标题及其具体内容 2、抓标题下的对应回答 3、爬取对应一级评论 二、上流程 1、获取cookies&#xff08;相信哥哥姐姐…

静心冥想训练入门|流静

在喧嚣的都市中&#xff0c;我们时常被琐事所困&#xff0c;心灵难以得到片刻的宁静。然而&#xff0c;静心冥想训练如同一扇通往内心宁静的门户&#xff0c;引领我们踏上一段静谧的旅程。 静心冥想&#xff0c;并非遥不可及的高深技艺&#xff0c;而是每个人都能掌握的心灵修炼…

优思学院|「按计划推动型」与「需求拉动型」的生产模式

针对生产架构做对比分类的用语&#xff0c;主要有按计划推进型与需求拉动型。 「按计划推动型」与「需求拉动型」两者乃是生产架构上常使用、成对比的两个用语。不过&#xff0c;有时不只用来指单纯的生产现场架构&#xff0c;也有人把它应用在更广泛的生产架构设计上。 按计划…

【yolov8系列】ubuntu上yolov8的开启训练的简单记录

前言 yolov8的广泛使用&#xff0c;拉取yolov8源码工程&#xff0c;然后配置环境后直接运行&#xff0c;初步验证自己数据的检测效果&#xff0c;在数据集准备OK的情况下 需要信手拈来&#xff0c;以保证开发过程的高效进行。 本篇博客更注意为了方便自己使用时参考。顺便也记录…

每日一题——力扣144. 二叉树的前序遍历(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法&#xff1a; 代码结构 时间复杂度 空间复杂度 总结 我要更强 代码说明 …

C语言力扣刷题7——删除排序链表中的重复元素 II——[快慢双指针法]

力扣刷题7——删除排序链表中的重复元素 II——[快慢双指针法] 一、博客声明二、题目描述三、解题思路1、思路说明 四、解题代码&#xff08;附注释&#xff09; 一、博客声明 找工作逃不过刷题&#xff0c;为了更好的督促自己学习以及理解力扣大佬们的解题思路&#xff0c;开辟…

好书安利 | LangChain入门指南:构建高可复用、可扩展的LLM应用程序(送PDF)轻松入门LangChain

《LangChain入门指南》 LangChain作为大模型集成框架鼎鼎大名&#xff0c;这本《LangChain入门指南》是一本很及时的书&#xff0c;值得推荐&#xff5e; 01 为什么需要LangChain 首先想象一个开发者在构建一个LLM应用时的常见场景。 当你开始构建一个新项目时&#xff0c;…

不使用canvs也能创建出点状背景

div{ height: 100%; touch-action: none; background: radial-gradient(circle, #e6e6e6 1px, transparent 1px); /* 创建一个点状背景 */ background-size: 15px 15px; /* 控制点的大小和间距 */ padding: 20px; /* 添加内边距使内容不靠边 */ position: relative; /* 让内部内…