本文实例为大家分享了JS实现pc端轮播图效果的具体代码,供大家参考,具体内容如下
案例:轮播图需求
布局:ul下有很多li标签;浮动在一行;
原理:切换图片的时候,把ul位置修改一下,给ul的父容器,设置一个 overflow:hidden;
功能需求:
- 序号轮播
- 左右按钮的轮播
- 自动轮播
- 鼠标在轮播图里面的时候,停止自动轮播,离开后继续自动轮播
实现效果:
html部分
<div class="box" id="box"> <div class="inner" id="inner"> <ul id="imglist"> <li> <a href="#" ><img src="/UploadFiles/2021-04-02/1.jpg">css部分
* { margin: 0; padding: 0; } ul { list-style: none; } .box { width: 730px; height: 454px; padding: 8px; border: 1px solid green; margin: 100px auto; } .inner { position: relative; overflow: hidden; height: 454px; } #imglist { width: 700%; position: absolute; left: 0; transition: left 300ms linear; } li { float: left; } .list { position: absolute; bottom: 20px; left: 50%; margin-left: -85px; } .list i { width: 20px; height: 20px; border-radius: 50%; background-color: #fff; color: #333; float: left; font-style: normal; line-height: 20px; font-size: 14px; text-align: center; margin-right: 10px; cursor: pointer; } .list i:last-child { margin-right: 0; } .list i.current { background-color: skyblue; color: #fff; } .arrow { position: absolute; width: 100%; top: 50%; margin-top: -30px; } .arrow-left, .arrow-right { width: 30px; height: 60px; position: absolute; font: 20px/60px "consolas"; color: #fff; background-color: rgba(0, 0, 0, .3); text-align: center; cursor: pointer; } .arrow-right { right: 0; }js部分:
// 获取DOM var yuan = document.querySelectorAll("i"); var li = document.querySelector("ul li"); var ul = document.querySelector("ul"); var imgs = document.querySelector("#imglist"); var right = document.querySelector(".arrow-right"); var left = document.querySelector(".arrow-left"); var box = document.querySelector(".box"); window.onload = function() { //------------------------------------这里是点击小圆圈,控制图片的切换 //循环小圆点 注册小圆点 for (var i = 0; i < yuan.length; i++) { //我们需要这里面的i 必须提前拿出来,要不最后i的值就是最后一个数值了 yuan[i].num = i; //注册事件 yuan[i].onmouseover = function() { // 现在要循环将样式移除 for (var j = 0; j < yuan.length; j++) { yuan[j].classList.remove("current"); } //这里是为了将点击的小圆点 增加上样式 this.classList.add("current"); var num = this.num; //到这里的思路就是点击小圆点 将图片进行移动,向左面移动,上面css做了相应的定位操作 //移动的距离就是 n 乘以 一张图片的宽度, //n 就是选择的小圆点的 坐标-----i(num) //图片的宽度 box.offsetWidth var left = num * li.offsetWidth; // console.log(num, box.offsetWidth, left); imgs.style.left = `-${left}px`; //这里小原点联动左右按钮 for (var p = 0; p < yuan.length; p++) { //清除全部样式(小圆点) yuan[p].classList.remove("current"); } //给当前的小圆点增加样式 yuan[num].classList.add("current"); //这里这个位置比较关键,在上面设置完样式之后,记得将此num赋值给全局的index index = this.num; } } //------------------------------------以上是点击小圆圈,控制图片的切换 //------------------------------------下面是开始右面轮播,控制图片的切换 //首先定义一个全局的index,这个index的作用依旧是控制图片的切换 var index = 0; right.onclick = function() { index++; //这里要对index做一下判断,如果不做判断,可以试想一下, //只要你一点击,index就会无限的增大,增大到你“无法自拔” if (index == ul.children.length) { //如果坐标为6的话,显示应该显示第1张图片,所以要复位 即index=0 index = 0; } var left = index * li.offsetWidth; // console.log(index, box.offsetWidth, left); imgs.style.left = `-${left}px`; //点击右面增加联动小圆点的效果 for (var n = 0; n < yuan.length; n++) { //清除全部样式(小圆点) yuan[n].classList.remove("current"); } //给当前的小圆点增加样式 yuan[index].classList.add("current"); }; //------------------------------------以上是结束右面轮播,控制图片的切换 //------------------------------------下面是开始左面轮播,控制图片的切换 left.onclick = function() { index--; //这里同右点击一样,需要做一下判断, console.log(index); if (index == -1) { index = ul.children.length - 1; } var left = index * li.offsetWidth; // console.log(index, box.offsetWidth, left); // console.log(left); imgs.style.left = `-${left}px`; //这个位置做的是 左面点击联动小圆点 for (var m = 0; m < yuan.length; m++) { //清除全部样式(小圆点) yuan[m].classList.remove("current"); } //给当前的小圆点增加样式 yuan[index].classList.add("current"); }; //------------------------------------上面是结束左面轮播,控制图片的切换 //------------------------------------开始设置自动轮播 var timer = setInterval(function() { right.onclick(); }, 1000); //------------------------------------以上是自动轮播结束 //------------------------------------设置鼠标进来就停止开始 box.onmouseover = function() { clearInterval(timer); }; //------------------------------------设置鼠标进来就停止结束 //------------------------------------设置鼠标出去就停止开始 box.onmouseout = function() { timer = setInterval(function() { right.onclick(); }, 1000); }; //------------------------------------设置鼠标出去就停止结束 }未完待续,本篇文章做的PC端的处理,目前从6页-1页,1页到6页还有点小瑕疵,会及时更新上的,其他功能一切正常,欢迎大家评论
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年11月24日
2024年11月24日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]