当前位置:首页 > 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控制滚动位置,实现更精确的滚动控制。适合需要动态调整速度或暂停的场景。

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

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
分享给朋友:

相关文章

css3制作印章文字

css3制作印章文字

使用CSS3制作印章文字效果 圆形印章基础结构 通过HTML创建一个圆形容器,内部放置印章文字。结构示例: <div class="seal"> <div class="se…

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

如何生成react代码

如何生成react代码

使用 Create React App 生成项目 安装 Node.js 后,通过命令行工具运行以下命令创建新项目: npx create-react-app my-app cd my-app npm…

react如何销毁

react如何销毁

React 组件销毁的机制 在 React 中,组件的销毁通常由 React 的生命周期管理。当组件从 DOM 中移除时,React 会自动触发销毁相关的生命周期方法。以下是关键点: 组件的销毁通常…

如何记忆react

如何记忆react

理解核心概念 React的核心概念包括组件、状态(state)、属性(props)、生命周期方法(类组件)和钩子(函数组件)。掌握这些基础概念是记忆React的关键。组件是React应用的构建块,分为…

react如何调试

react如何调试

调试 React 应用的方法 使用 React Developer Tools React Developer Tools 是 Chrome 和 Firefox 的浏览器扩展,可以检查组件树、状态和…