swiper实现跑马灯效果

需要先引入js

https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.2/anime.min.js
在这里插入图片描述

JS:

xTrans = [];
    anime.set('.box', {
        translateX: function (el, i, l) {
            xTrans[i] = { x: i * 427 };
            return i * 427;
        },
    });

    anime({
        targets: xTrans,
        duration: 10000, //走一周持续时间
        easing: 'linear',
        x: "+=2135",
        loop: true,
        update: function (anim) {
            anime.set('.box', {
                translateX: function (el, i, l) {
                    console.log(i + "#" + xTrans[i].x)
                    return xTrans[i].x % 2135
                }
            });
        }
    })

HTML:

CSS:

 .list {
                position: relative;
                overflow: hidden;
                height: 27.7rem;
                width: 170.8rem;

                .boxes {
                    position: relative;
                    left: -427px;

                    .box {
                        width: 427px;
                        height: 27.7rem;
                        position: absolute;
                        // margin-right: 2.7rem;
                    }
                }
            }
 <div class="list">
                        <!-- for start -->
                        <a href="#" class="item">
                            <div class="img_box">
                                <img class="img_cover" src="./images/index_product2_1.png" alt="">
                            </div>
                            <div class="title">
                                <span class="index">01</span>EDGED BASIN
                            </div>
                            <div class="more_div more2">
                                VIEW MORE
                            </div>
                        </a>
                        <!-- for end -->

                        <a href="#" class="item">
                            <div class="img_box">
                                <img class="img_cover" src="./images/index_product2_1.png" alt="">
                            </div>
                            <div class="title">
                                <span class="index">02</span>EDGED BASIN
                            </div>
                            <div class="more_div more2">
                                VIEW MORE
                            </div>
                        </a>

                        <a href="#" class="item">
                            <div class="img_box">
                                <img class="img_cover" src="./images/index_product2_1.png" alt="">
                            </div>
                            <div class="title">
                                <span class="index">03</span>EDGED BASIN
                            </div>
                            <div class="more_div more2">
                                VIEW MORE
                            </div>
                        </a>
                    </div>

在swiper下载下来的demo运行是没问题的,但是改过宽度之后会有跳动和提前结束的问题,问题一般都是偏移量和总宽度设置的问题,demo宽度是显示7个的宽度,实际有8个元素
在这里插入图片描述

swiperdemo:
帖子链接:
http://bbs.swiper.com.cn/forum.php?mod=viewthread&tid=24271
demo下载链接:
http://bbs.swiper.com.cn/forum.php?mod=attachment&aid=MTMyNHwyNDU4MmVkNHwxNzA2MTU3NzAyfDg4NjU0fDI0Mjcx

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="utf-8">
	<title>Animejs demon</title>
	<!-- <script src="js/anime.min.js"></script> -->
	
	<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.2/anime.min.js" integrity="sha512-aNMyYYxdIxIaot0Y1/PLuEu3eipGCmsEUBrUq+7aVyPGMFH8z0eTP0tkqAvv34fzN6z+201d3T8HPb1svWSKHQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
	
	<!-- www.animejs.cn-->
	<style>
		body {
			margin: 0;
		}

		.wrapper {
			width: 700px; //1、!!这里总宽度是7个
			height: 100px;
			position: relative;
			margin: 40px auto 0;
			background: #ccc;
			overflow: hidden;
		}

		.box {
			width: 100px;
			height: 100px;
			position: absolute;
			background: red;
			font-size: 25px;
			line-height: 100px;
			text-align: center;
		}

		.box:nth-child(odd) {
			background: #f8f8f8;
		}

		.box:nth-child(even) {
			background: #eee;
		}

		.boxes {
			position: relative;
			left: -100px; //2、!!偏移量是一个元素的宽度
		}
	</style>
</head>

<body>
	<div class="wrapper">
		<div class="boxes">
			<div class="box">1</div>
			<div class="box">2</div>
			<div class="box">3</div>
			<div class="box">4</div>
			<div class="box">5</div>
			<div class="box">6</div>
			<div class="box">7</div>
			<div class="box">8</div>
			<!-- 3!!这里是8个元素 -->
		</div>
	</div>
	<script>
		xTrans = [];
		anime.set('.box', {
			translateX: function (el, i, l) {
				xTrans[i] = { x: i * 100 };
				return i * 100;
			},
		});

		anime({
			targets: xTrans,
			duration: 6000, //走一周持续时间
			easing: 'linear',
			x: "+=800", //4、!!这里是8个的的总宽度,不是7个
			loop: true,
			update: function (anim) {
				anime.set('.box', {
					translateX: function (el, i, l) {
						return xTrans[i].x % 800 
						//5、!!这里是8个的的总宽度,不是7个
					}
				});
			}
		})
	</script>
</body>

</html>
实现跑马灯效果,你可以使用Swiper Web组件的swiper-container标签结合一些配置选项。下面是一个示例代码: ```html <!DOCTYPE html> <html> <head> <!-- 引入Swiper的CSS文件 --> <link rel="stylesheet" href="https://unpkg.com/swiper/swiper-bundle.min.css"> </head> <body> <!-- 创建一个swiper容器 --> <div class="swiper-container"> <!-- 创建一个swiper-wrapper容器,用于包裹轮播项 --> <div class="swiper-wrapper"> <!-- 创建多个swiper-slide,每个slide代表一个轮播项 --> <div class="swiper-slide">Slide 1</div> <div class="swiper-slide">Slide 2</div> <div class="swiper-slide">Slide 3</div> <!-- 可以根据需求添加更多的轮播项 --> </div> </div> <!-- 引入Swiper的JS文件 --> <script src="https://unpkg.com/swiper/swiper-bundle.min.js"></script> <script> // 初始化Swiper实例 var swiper = new Swiper('.swiper-container', { // 设置轮播方向为水平 direction: 'horizontal', // 设置循环轮播 loop: true, // 设置自动播放 autoplay: { delay: 2000, // 延迟时间,单位为毫秒 disableOnInteraction: false, // 用户操作后是否禁止自动播放 }, }); </script> </body> </html> ``` 上述代码中,我们使用了Swiper Web组件的swiper-container标签作为轮播容器,swiper-wrapper标签包裹轮播项,每个轮播项使用swiper-slide标签表示。通过配置选项,我们设置了水平方向的循环轮播,并启用了自动播放功能。 你可以根据自己的需求修改轮播项的内容和样式,以及调整配置选项来实现所需的跑马灯效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值