当前位置:首页 > React

react实现文字滚动

2026-01-27 05:26:26React

实现文字滚动的几种方法

使用CSS动画实现滚动 通过CSS的@keyframestransform属性实现横向滚动效果。将文字包裹在容器中,设置动画从右向左移动。

.scroll-container {
  white-space: nowrap;
  overflow: hidden;
}

.scroll-text {
  display: inline-block;
  animation: scroll 10s linear infinite;
}

@keyframes scroll {
  0% { transform: translateX(100%); }
  100% { transform: translateX(-100%); }
}
function ScrollingText({ text }) {
  return (
    <div className="scroll-container">
      <div className="scroll-text">{text}</div>
    </div>
  );
}

使用requestAnimationFrame实现可控滚动 通过JavaScript控制滚动位置,实现更精确的滚动控制。适合需要动态调整速度或暂停的场景。

react实现文字滚动

import { useEffect, useRef } from 'react';

function ScrollingText({ text, speed = 1 }) {
  const containerRef = useRef();
  const textRef = useRef();
  const pos = useRef(0);

  useEffect(() => {
    const container = containerRef.current;
    const textEl = textRef.current;
    let animationId;

    const animate = () => {
      pos.current -= speed;
      if (-pos.current > textEl.offsetWidth) {
        pos.current = container.offsetWidth;
      }
      textEl.style.transform = `translateX(${pos.current}px)`;
      animationId = requestAnimationFrame(animate);
    };

    animate();
    return () => cancelAnimationFrame(animationId);
  }, [speed]);

  return (
    <div ref={containerRef} style={{ overflow: 'hidden' }}>
      <div ref={textRef} style={{ whiteSpace: 'nowrap' }}>
        {text}
      </div>
    </div>
  );
}

使用第三方库实现复杂效果 对于需要复杂效果(如弹性滚动、渐变消失等),可以考虑使用专门库如react-fast-marquee

react实现文字滚动

import Marquee from 'react-fast-marquee';

function ScrollingText() {
  return (
    <Marquee speed={50}>
      这里是要滚动的文字内容...
    </Marquee>
  );
}

垂直滚动实现方法 通过修改CSS动画关键帧实现垂直方向的滚动效果。

.vertical-scroll {
  height: 100px;
  overflow: hidden;
}

.vertical-text {
  animation: verticalScroll 10s linear infinite;
}

@keyframes verticalScroll {
  0% { transform: translateY(100%); }
  100% { transform: translateY(-100%); }
}

无限循环衔接处理 当文字内容较短时,需要复制内容实现无缝衔接。通过JavaScript动态检测内容宽度,自动复制文本。

function InfiniteScrollingText({ text }) {
  const containerRef = useRef();
  const [displayText, setDisplayText] = useState(text);

  useEffect(() => {
    const container = containerRef.current;
    if (container.scrollWidth <= container.offsetWidth) {
      setDisplayText(`${text} ${text}`); // 复制内容
    }
  }, [text]);

  return (
    <div className="scroll-container" ref={containerRef}>
      <div className="scroll-text">{displayText}</div>
    </div>
  );
}

标签: 文字react
分享给朋友:

相关文章

如何用react

如何用react

使用React的基本步骤 安装Node.js和npm 确保系统已安装Node.js和npm。Node.js自带npm,可从官网下载安装包。安装完成后,通过命令行验证版本: node -v npm -…

react如何debugger

react如何debugger

调试 React 应用的方法 使用浏览器开发者工具进行调试 React 开发者工具(React DevTools)是调试 React 应用的必备工具。安装 Chrome 或 Firefox 扩展后,可…

react 如何精通

react 如何精通

掌握核心概念 深入理解React的基础概念,包括组件(函数组件与类组件)、状态(useState)、生命周期(useEffect)、Props传递、虚拟DOM与Diff算法。通过官方文档或《React…

react如何重新加载

react如何重新加载

重新加载当前页面 在React中重新加载当前页面可以通过window.location.reload()方法实现。该方法会强制浏览器重新加载当前URL,类似于按下F5刷新页面。 const relo…

react 如何算精通

react 如何算精通

精通 React 的标准 精通 React 不仅需要掌握基础语法和核心概念,还需具备解决复杂问题、优化性能和架构设计的能力。以下是衡量 React 精通程度的关键维度: 核心概念与机制 组件…

如何编译react文件

如何编译react文件

编译 React 文件的方法 使用 Create React App (CRA) Create React App 是官方推荐的快速搭建 React 项目的工具,内置了 Babel 和 Webpack…