vue3横向自动来回滚动,鼠标移入暂停移出继续

html结构

    <div class="box-cp" id="nav">
        <div v-for="item,index in dataContainer.info.depts" class="item">
            <img class="img" src="../../../../assets/images/qi.jpg" fit="cover" />
            <div class="right">
                <div class="content">{{ item.deptName }}</div>
                <div class="describe">{{ item.honor }}</div>
            </div>
        </div>
    </div>

滚动函数 直接执行这个函数就行

        const dataContainer = reactive({ 
            address: 0,
            interval: null,
        });
        function scrollInit() {  
            //获取最外层dom
            const nav = document.getElementById("nav") 
            function start() {
                dataContainer.interval = setInterval(() => {
                    nav.scrollLeft += dataContainer.address ? -1 : 1
                    // 这一步判断如果滚动到最右边时往回滚
                    if (nav.scrollLeft + nav.clientWidth == nav.scrollWidth) dataContainer.address = 1
                    // 这一步判断如果回滚到最左边就切换状态往右滚
                    if (nav.scrollLeft == 0) dataContainer.address = 0
                }, 50)
            } 
            start()  
            // 鼠标悬停时停止滚动
            nav.addEventListener("mouseenter", () => {
                clearInterval(dataContainer.interval);
            }); 
            // 鼠标移开时继续滚动
            nav.addEventListener("mouseleave", start);
        } 
        nextTick(() => { 
            scrollInit() 
        })  
        return {
            dataContainer
        };
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐