发布时间:2026-09-28 18:02:52 浏览次数:3
下面是JS实现的手机端精简幻灯片效果的完整攻略:
<p class="slide-container"> <p class="slide"> <img src="slide1.jpg"> <p>这是第一张幻灯片</p> </p> <p class="slide"> <img src="slide2.jpg"> <p>这是第二张幻灯片</p> </p> <p class="slide"> <img src="slide3.jpg"> <p>这是第三张幻灯片</p> </p></p>.slide-container { width: 100%; height: 100%; position: relative; overflow: hidden;}// 获取容器元素和幻灯片元素const slideContainer = document.querySelector('.slide-container');const slides = document.querySelectorAll('.slide');// 设置幻灯片的宽度为容器的宽度,并设置幻灯片元素排成一行const slideWidth = slideContainer.clientWidth;slideContainer.style.width = `${slideWidth}px`;slides.forEach(slide => { slide.style.width = `${slideWidth}px`;});// 使用CSS3的transition属性和transform属性来实现幻灯片的平滑过渡效果slides.forEach((slide, index) => { slide.style.left = `${index * slideWidth}px`; slide.style.transition = 'left 0.5s ease';});// 使用JS来控制幻灯片的滑动和切换let currentSlideIndex = 0;function moveSlide(direction) { if (direction === 'prev') { currentSlideIndex--; if (currentSlideIndex < 0) { currentSlideIndex = slides.length - 1; } } else { currentSlideIndex++; if (currentSlideIndex >= slides.length) { currentSlideIndex = 0; } } const offset = currentSlideIndex * slideWidth * -1; slides.forEach(slide => { slide.style.left = `${offset}px`; });}//为幻灯片添加事件**器 const prevBtn = document.querySelector('.prev-button');const nextBtn = document.querySelector('.next-button');prevBtn.addEventListener('click', () => { moveSlide('prev');});nextBtn.addEventListener('click', () => { moveSlide('next');});在上述代码的基础上,我们可以通过使用JS的setInterval方法定时调用moveSlide函数实现自动轮播的效果:
setInterval(() => { moveSlide('next');}, 3000);在HTML文件中创建一个指示器元素容器,并根据幻灯片的数量动态创建指示器元素,设置选中状态和未选中状态的样式。
<p class="indicator-container"> <p class="indicator active"></p> <p class="indicator"></p> <p class="indicator"></p></p>.indicator-container { position: absolute; bottom: 10px; left: 50%; transform: translateX(-50%);}.indicator { width: 10px; height: 10px; background-color: #999; border-radius: 50%; margin-right: 10px; cursor: pointer;}.active { background-color: #fff;}然后,我们可以在JS中获取指示器元素并为其添加事件**器,以实现点击指示器切换幻灯片的效果:
// 获取指示器元素并设置它们的默认选中状态const indicators = document.querySelectorAll('.indicator');indicators[0].classList.add('active');// 为指示器添加事件**器indicators.forEach((indicator, index) => { indicator.addEventListener('click', () => { currentSlideIndex = index; const offset = currentSlideIndex * slideWidth * -1; slides.forEach(slide => { slide.style.left = `${offset}px`; }); indicators.forEach((indicator, index) => { if (index === currentSlideIndex) { indicator.classList.add('active'); } else { indicator.classList.remove('active'); } }); });});