欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > 【HTML5】轮播图的实现方式一

【HTML5】轮播图的实现方式一

2025/5/5 12:32:06 来源:https://blog.csdn.net/weixin_41798072/article/details/147602313  浏览:    关键词:【HTML5】轮播图的实现方式一

实现思路:

采用老式放映机的原理,将轮播图的图片放在类似放映机的胶卷上,然后根据需求左右拉动胶卷从而播放胶卷上的图片。下列代码中的无序列表ul则相当与胶卷一样。

1.页面整体布局

<div class="banner"><div class="banner_wraper"><ul class="banner_wraper_list"><li class="banner_wraper_list_item"><a href="###"><img src="./images/banner_pic_01.jpg"></a></li><li class="banner_wraper_list_item"><a href="###"><img src="./images/banner_pic_02.jpg"></a></li><li class="banner_wraper_list_item"><a href="###"><img src="./images/banner_pic_03.jpg"></a></li></ul><button class="banner_wraper_left_btn h_btn iconfont icon-left"></button><button class="banner_wraper_right_btn h_btn iconfont icon-right"></button><div class="banner_wraper_btn_box"><span>1</span><span class="active">2</span><span>3</span></div></div></div>

2.css样式

.banner{height: 300px;position: relative;overflow: hidden;
}
.banner_wraper{width: 1920px;height: 300px;position: absolute;left: 50%;margin-left: -960px;overflow: hidden;border: 2px solid red;
}
.banner_wraper_list{height: 300px;width: 5780px; /*临时宽度*/position: absolute;left: 0;transition: 0.3s;border: 1px solid blue;
}
.banner_wraper_list_item{float: left;
}
.banner_wraper_left_btn {left: 400px;
}
/* 这里两个按钮相同样式可以合并一下 */
.banner_wraper_right_btn { right: 400px;}
.h_btn{position: absolute;top: 50%;margin-top: -20px;width: 40px;height: 40px;border: none;color: white;font-size: 30px;background-color:rgba(0,0,0,0.8); 
}
.banner_wraper_btn_box{position: absolute;left: 50%;margin-left: -75px;bottom: 10px;width: 150px;height: 10px;display: flex;
}
.banner_wraper_btn_box span {flex: 1;cursor: pointer;text-indent: -99999px;background-color:#09c762 ;
}
.banner_wraper_btn_box .active{background-color: white;
}

3.js部分

window.onload = function(){//轮播图carousel()
}
function carousel(){//第一步: 获取所有要用到的标签let Banner= document.querySelector('.banner');let BannerWraperList = document.querySelector('.banner_wraper_list');let BannerWraperListItem = document.querySelectorAll('.banner_wraper_list_item');let BannerWraperLeftBtn = document.querySelector('.banner_wraper_left_btn');let BannerWraperRightBtn = document.querySelector('.banner_wraper_right_btn');let BannerWraperBtnBoxSpan = document.querySelectorAll('.banner_wraper_btn_box span');let index = 0;// 第二步: 给按钮添加事件for (let i = 0; i < BannerWraperBtnBoxSpan.length; i++) {BannerWraperBtnBoxSpan[i].onclick = function () {index = i;move();}}function move() {// 先将所有按钮class清空for (let j = 0; j < BannerWraperBtnBoxSpan.length; j++) {BannerWraperBtnBoxSpan[j].className = "";}// 在给当前点击的按钮加activeBannerWraperBtnBoxSpan[index].className = "active";// 计算BannerWraperList的leftBannerWraperList.style.left = - index * 1920 + "px";}// 第三步: 实现轮播图自动播放let timer="";timer = setInterval(autoPlay, 3000);function autoPlay(){index++;if(index>= BannerWraperBtnBoxSpan.length){index =0;}move();} // 第四步:实现鼠标悬停--停止播放   鼠标离开--自动播放Banner.onmouseover= function(){clearInterval(timer);}Banner.onmouseout= function(){timer = setInterval(autoPlay, 3000);}// 第五步: 实现点击左右按钮,滚动轮播图BannerWraperRightBtn.onclick = function(){autoPlay();}BannerWraperLeftBtn.onclick = function(){index--;if(index<0){index = BannerWraperBtnBoxSpan.length-1;}move();}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词