上中下(左中右)显示三个图片时无缝轮播

思路:  假如有三张图 每次到第二张滚第三张的时候在结尾加上第一张, 第三张滚的下一个就是第一张了同时加上第二张,这样就实现了无缝轮播(别打我)

咳咳, 上面的思路确实实现了,但是存在一个致命的问题就是一直轮播会一直在后面添加元素,如果次数较多的时候会导致页面卡顿, 那我们就不能一直加

如果在再填加了第三张的时候是不是已经页面存在六张图了,我们完全可以利用这六张图让他们自己循环实现无缝轮播

            if (this.activeIndex >= this.originDatalist.length * 2) {
                // 当activeIndex 大于初始状态的两倍时归0 防止一直累加导致dataList列表数据过多导致页面卡顿
                this.activeIndex = 0
            }
            $(".line-img").removeClass("active")
            let move = -300 * this.activeIndex; // 一个列表占300高度
            if (move === 0) { // 当轮播到最后一个时 让动画时间归0 去除折回的动画
                $(".topic-list ul").animate({
                    "top": -300 * (this.originDatalist.length - 1) // 先让图片0秒回到第一个列表的最后一张图的位置
                }, 0)
                move = -300 * (this.originDatalist.length - 1) - 300 // 修改move的值让图片假装依次滚动下去,实际从第一个列表最后一张图到第二个列表第一张图的动画
                this.activeIndex = this.originDatalist.length // 改变当前active的值 防止active不准确
            }
            $(".topic-list ul").animate({
                "top": move
            }, 2000)            

 

HTML 并列式轮播图通常指的是使用 HTML、CSS 和 JavaScript(有也会结合 JavaScript 库或框架如 jQuery, Swiper, 或 Bootstrap Carousel)创建的一种动态图片展示效果,图片会按照设定的规则在多个位置上并排显示,用户可以通过点击或自动滚动来切换图片。 实现一个并列式轮播图的基本步骤如下: 1. **HTML结构**: - 使用 `div` 元素作为容器,包含多个 `img` 或 `figure` 元素(每个代表一张图片)和一个 `nav` 元素用于导航按钮或指示器。 ```html <div class="carousel"> <div class="carousel-item"> <img src="image1.jpg" alt="Image 1"> </div> <div class="carousel-item"> <img src="image2.jpg" alt="Image 2"> </div> <!-- 添加更多图片 --> <nav class="carousel-navigation"> <button data-slide="prev">Previous</button> <button data-slide="next">Next</button> </nav> </div> ``` 2. **CSS样式**: - 风格化 `.carousel`, `.carousel-item`, 图片和导航元素的布局、尺寸、颜色等。 ```css .carousel { position: relative; width: 100%; overflow: hidden; } .carousel-item { width: 50%; /* 假设图片宽度 */ float: left; transition: transform 0.5s; } .carousel-navigation button { /* 样式设置 */ } ``` 3. **JavaScript或库**: - 使用 JavaScript 或 JavaScript 库来处理轮播功能,如手动触发切换、自动切换以及响应导航按钮。 ```javascript const carouselItems = document.querySelectorAll('.carousel-item'); let currentSlide = 0; function slideShow() { carouselItems[currentSlide].style.transform = 'translateX(0)'; carouselItems[(currentSlide + 1) % carouselItems.length].style.transform = 'translateX(-100%)'; setTimeout(() => slideShow(), 3000); // 每隔3秒切换到下一张 } // 初始化轮播 slideShow(); // 添加按钮点击事件 document.querySelectorAll('.carousel-navigation button').forEach((btn, index) => { btn.addEventListener('click', () => { if (btn.dataset.slide === 'prev') { currentSlide--; } else { currentSlide++; } currentSlide = currentSlide % carouselItems.length; // 保持索引在合法范围内 carouselItems.forEach(item => item.style.transform = 'translateX(0)'); carouselItems[currentSlide].style.transform = 'translateX(-100%)'; }); }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值