Swiper轮播图实现

在这里插入图片描述
如上图,列表左右滚动轮播,用户鼠标移动到轮播区域,动画停止,鼠标移开轮播继续。
此例子实现技术框架是用的React+CSS。
主要用的是css的transform和transition来实现左右切换动画效果。
React代码:

import React, { useState, useRef, useEffect } from 'react';
import styles from './index.module.css';

export default function Swiper() {
  const dataSource = [
    'https://t7.baidu.com/it/u=1732966997,2981886582&fm=193&f=GIF',
    'https://t7.baidu.com/it/u=1785207335,3397162108&fm=193&f=GIF',
    'https://t7.baidu.com/it/u=3423293041,3900166648&fm=193&f=GIF',
    'https://t7.baidu.com/it/u=3659156856,3928250034&fm=193&f=GIF',
    'https://t7.baidu.com/it/u=826329656,2212580321&fm=193&f=GIF',
  ];
  const [tabIndex, setTabIndex] = useState(0);
  const [isScroll, setIsScroll] = useState(true);// 用于当鼠标移入时,轮播停止
  const scrollerRef = useRef(null);
  const timer = useRef(null);

  useEffect(() => {
    timer.current = setInterval(() => {
      if (!isScroll) return;
      const dom = scrollerRef.current;
      if (dom && dom.style) {
        const _tabIndex = tabIndex === dataSource.length - 1 ? 0 : tabIndex + 1;
        const width = dom.children[tabIndex].clientWidth;
        dom.style.transform = `translateX(${-tabIndex * width}px)`;
        setTabIndex(_tabIndex);
      }
    }, 1 * 1000);
    return () => {
      timer.current && window.clearInterval(timer.current);
    };
  }, [isScroll, tabIndex, dataSource]);

  return (
    <div className={styles.container}>
      <div
        className={styles.wrapper}
        ref={scrollerRef}
        onMouseEnter={() => setIsScroll(false)}
        onMouseLeave={() => setIsScroll(true)}
      >
        {dataSource.map((item, index) => (
          <div className={styles.item} key={index}>
            <img src={item} className={styles.image} alt={index} />
          </div>
        ))}
      </div>
    </div>
  );
}

Css :

.container {
  height: 300px;
  width: 500px;
  overflow: hidden;
  .wrapper {
    transform: translate(0);
    transition: transform 0.3s;
    width: 100%;
    display: flex;
    .item {
      flex: 0 0 100%;
      height: 300px;
      .image {
        width: 100%;
        height: 100%;
      }
    }
  }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WEB-INF 泄露-RoarCTF-2019-EasyJava(BUUCTF)

题目页面 点开help 这里存在文件下载漏洞&#xff0c;参数选择POST传参&#xff08;使用HackBar插件&#xff09; 查看文件内容 下载存有web信息的XML文件&#xff0c;这里补充一点知识点 WEB-INF主要包含一下文件或目录&#xff1a; /WEB-INF/web.xml&#xff1a;Web应用程序…

关于思维和智能体模型的思考(1)

思维的本质&#xff1a;它的能力似乎源自于那些智能体之间复杂的交错关联 --马文 明斯基 最近阅读美国马文 明斯基写的书《心智社会》&#xff0c;觉得忽然开朗。他对人类思维&#xff0c;智能&#xff0c;智能体等概念做了十分优雅的解读。 个人觉得&#xff0c;他利…

【银河麒麟高级服务器操作系统】数据中心系统异常卡死分析处理建议

了解银河麒麟操作系统更多全新产品&#xff0c;请点击访问&#xff1a;https://product.kylinos.cn 1.服务器环境以及配置 【机型】浪潮NF5280M5 处理器&#xff1a; Intel 内存&#xff1a; 1T 【内核版本】 4.19.90-24.4.v2101.ky10.x86_64 【OS镜像版本】 银河麒麟…

element UI时间组件两种使用方式

加油&#xff0c;新时代打工&#xff01; 组件官网&#xff1a;https://element.eleme.cn/#/zh-CN/component/date-picker 先上效果图&#xff0c;如下&#xff1a; 第一种实现方式 <div class"app-container"><el-formref"submitForm":model&q…

滑动窗口,最长子序列最好的选择 -> O(N)

最近在学校上短学期课程&#xff0c;做程序设计题&#xff0c;一下子回忆起了大一学数据结构与算法的日子&#xff01; 这十天我会记录一些做题的心得&#xff0c;今天带来的是对于最长子序列长度题型的解题框架&#xff1a;滑动窗口 本质就是双指针算法&#xff1a; 通过le…

VSCode神仙插件——通义灵码 (AI编程助手)

1、安装&登录插件 安装时,右下角会有弹窗,让你登录该软件 同意登录后,会跳转浏览器页面 VSCode右下角出现如下图标即登录成功 2、使用 (1)点击左侧栏中的如下图标,打开通义灵码,可以进行智能问答 (2) 选中代码,右键 但是,上述所有的操作会在左侧问答栏中提供答案,并无法直…

2024最适合小白的Midjourney教程,值得收藏!

一、Midjourney 的提示词 1、提示可以包括一个或多个图像 URL、多个文本短语以及一个或多个参数 1&#xff09;Image Prompts&#xff08;图像提示&#xff09;&#xff1a;可以将图像 URL 添加到提示中以影响最终结果的样式和内容。图像 URL 始终出现在提示的前面。文件应以.…

索引(数据库重点!!!)

1.介绍 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构。 2.索引结构 BTree索引&#xff1a;最常见的索引类型Hash索引&#xff1a;哈希表实现R-tree&#xff08;空间索引&#xff09;Full-text&#xff08;全文索引&#xff09; B-Tree&#xff08;…

双向链表 -- 详细理解和实现

欢迎光顾我的homepage 前言 双向链表是一种带头双向循环的链表。在双向链表中&#xff0c;首先存在着一个头结点&#xff1b;其次每个节点有指向下一个节点的指针next 和指向上一个节点的指针prev &#xff1b…

什么是业务架构、数据架构、应用架构和技术架构

TOGAF(The Open Group Architecture Framework)是一个广泛应用的企业架构框架&#xff0c;旨在帮助组织高效地进行架构设计和管理。而TOGAF的核心就是由我们熟知的四大架构领域组成&#xff1a;业务架构、数据架构、应用架构和技术架构。 所以今天我们就来聊聊&#xff0c;企业…

邮局服务器推荐需要考虑的因素?如何选择?

邮局服务器推荐时如何考量&#xff1f;怎么使用服务器提升效率&#xff1f; 在选择邮局服务器时&#xff0c;有许多重要因素需要考虑。这些因素将直接影响到邮件服务的质量、稳定性和安全性。AokSend将详细探讨选择邮局服务器时需要注意的各个方面。 邮局服务器推荐&#xff…

专属大学生的创作活动,你在CSDN坚持创作,虚竹哥带你成长,带你涨粉

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星评选TOP 10&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作…

x264 编码器 AArch64 汇编函数模块关系分析

x264 编码器 AArch64 汇编介绍 x264 是一个流行的开源视频编码器,它实现了 H.264/MPEG-4 AVC 标准。x264 项目致力于提供一个高性能、高质量的编码器,支持多种平台和架构。对于 AArch64(即 64 位 ARM 架构),x264 编码器利用该架构的特性来优化编码过程。在 x264 编码器中,…

[论文精读]BrainLM: A foundation model for brain activity recordings

论文网址&#xff1a;pdf (openreview.net) 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 省流版 1.1. 心得 1.2…

经验分享:征信查询多了会不会影响大数据综合评分?

很多人在申请贷款的时候&#xff0c;会有一个疑问&#xff0c;就是自己的征信没逾期&#xff0c;就是查询偏多一点&#xff0c;但能达到申贷要求&#xff0c;为什么还会被拒贷?其实就是大数据花了的原因&#xff0c;那征信查询多了会不会影响大数据综合评分呢?接下来本文就为…

从零开始学习嵌入式----Linux系统中shell脚本

目录 Shell脚本入门&#xff1a;玩转功能语句和数组&#xff0c;提升你的效率&#xff01; 一、功能语句&#xff1a;让你的脚本更灵活 1. 条件语句&#xff1a;if、else、elif 2. 循环语句&#xff1a;for、while 二、数组&#xff1a;处理多项数据的好帮手 1. 声明数组…

【CSS in Depth 2精译】2.5 无单位的数值与行高

当前内容所在位置 第一章 层叠、优先级与继承第二章 相对单位 2.1 相对单位的威力2.2 em 与 rem2.3 告别像素思维2.4 视口的相对单位2.5 无单位的数值与行高 ✔️2.6 自定义属性2.7 本章小结 2.5 无单位的数值与行高 有些属性允许使用无单位的数值&#xff08;unitless value…

《信息技术时代》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问&#xff1a;《信息技术时代》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是万方维普收录的正规学术期刊。 问&#xff1a;《信息技术时代》级别&#xff1f; 答&#xff1a;省级。主管单位&#xff1a;深圳湾科技发展有限公司 主办单位&am…

【Pytorch实用教程】transformer中创建嵌入层的模块nn.Embedding的用法

文章目录 1. nn.Embedding的简单介绍1.1 基本用法1.2 示例代码1.3 注意事项2. 通俗的理解num_embeddings和embedding_dim2.1 num_embeddings2.2 embedding_dim2.3 使用场景举例结合示例1. nn.Embedding的简单介绍 nn.Embedding 是 PyTorch 中的一个模块,用于创建一个嵌入层。…

cdr捕捉点怎么设置---模大狮模型网

在 CorelDRAW 中&#xff0c;捕捉点(Snap Points)是一种非常有用的功能&#xff0c;它可以帮助你在绘制和编辑图形时对齐、定位和调整对象。以下是关于如何设置捕捉点的简要步骤&#xff1a; 打开和设置捕捉点&#xff1a; 打开捕捉点控制器&#xff1a; 在 CorelDRAW 的顶部菜…