zoukankan      html  css  js  c++  java
  • 简单实现react 列表自动向上滚动,进入暂停,离开继续

    import React, { useEffect, useRef, useState } from 'react';
    import './1.css';

    function App() {
    const [list] = useState([1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13]);

    const [isScrolle, setIsScrolle] = useState(true);

    // 滚动速度,值越小,滚动越快
    const speed = 30;
    const warper = useRef();
    const childDom1 = useRef();
    const childDom2 = useRef();

    // 开始滚动
    useEffect(() => {
    // 多拷贝一层,让它无缝滚动
    childDom2.current.innerHTML = childDom1.current.innerHTML;
    let timer;
    if (isScrolle) {
    timer = setInterval(
    () =>
    warper.current.scrollTop >= childDom1.current.scrollHeight
    ? (warper.current.scrollTop = 0)
    : warper.current.scrollTop++,
    speed
    );
    }
    return () => {
    clearTimeout(timer);
    };
    }, [isScrolle]);

    const hoverHandler = (flag) => setIsScrolle(flag);

    return (
    <>
    <div className='parent' ref={warper}>
    <div className='child' ref={childDom1}>
    {list.map((item) => (
    <li
    key={item}
    onMouseOver={() => hoverHandler(false)}
    onMouseLeave={() => hoverHandler(true)}
    >
    {item}
    </li>
    ))}
    </div>
    <div className='child' ref={childDom2}></div>
    </div>
    </>
    );
    }

    export default App;
    ————————————————————————————————————————————————————

    css

    .parent {
    300px;
    height: 40vh;
    overflow-y: scroll;
    scrollbar- none;
    -ms-overflow-style: none;
    }
    .parent::-webkit-scrollbar {
    display: none;
    }
    /*设置的子盒子高度大于父盒子,产生溢出效果*/
    .child {
    height: auto;
    }

    .child li {
    height: 50px;
    margin: 2px 0;
    background: #009678;
    }

  • 相关阅读:
    .NET开发微信公众号之创建自定义菜单
    FOR XML PATH 可以将查询结果根据行输出成XML格式
    Node入门
    javascript客户端检测技术
    理解OAuth 2.0(转)
    RESTful API 设计指南(转)
    forever让nodejs应用后台执行
    Git使用教程
    NodeJS基础教程
    windows系统下简单nodejs安装及环境配置
  • 原文地址:https://www.cnblogs.com/yixiaoyang-/p/14677712.html
Copyright © 2011-2022 走看看