DDR爱好者之家 Design By 杰米
本文实例为大家分享了JavaScript实现京东轮播图效果展示的具体代码,供大家参考,具体内容如下
做了一个仿京东的轮播图,当然没有人家官网的精美啦。
主要技术点:
- 每隔3秒自动切换图片;
- 鼠标移入图片自动暂停切换,鼠标移出则继续;
- 点击左右方向按钮手动切换图片;
- 鼠标移到灰色圆点,显示对应的图片,并加亮显示。
HTML代码:
<body> <h1>轮播图展示</h1> <div id="did"> <!-- 图片 --> <div id="img-div" onmouseover="doStop()" onmouseout="doStart()"> <img src="/UploadFiles/2021-04-02/1.jpg">CSS代码:
<style> * { margin: 0px; padding: 0px; } body { background-color: rgb(255, 249, 249); } h1 { text-align: center; padding-top: 40px; color: rgba(250, 54, 129, 0.562); } #did { position: relative; width: 590px; height: 470px; margin: 30px auto; } #img-div { position: absolute; } #img-div img { width: 590px; display: none; cursor: pointer; z-index: -1; } /* 这两段可不加 */ /* 显示第一张图片 */ #img-div img:first-child { display: block; } /* 点亮第一个圆点 */ #cir-div div:first-child { background: #fff; } #cir-div { position: absolute; /* 相对于图片的位置 */ left: 40px; bottom: 25px; } /* 下方圆点 */ #cir-div div { width: 8px; height: 8px; float: left; /* 50%时为圆形 */ border-radius: 50%; margin-right: 6px; border: 1px solid rgba(0, 0, 0, .05); background: rgba(255, 255, 255, .4); } #left-btn { position: absolute; /* 相对于图片的位置 */ top: 45%; /* 左半圆按钮 */ width: 27px; height: 38px; background: rgba(119, 119, 119, 0.5); border-radius: 0 20px 20px 0; /* 动画效果,放在变化前,当鼠标移动上面时,会缓慢变色 */ transition: background-color 0.3s ease-out; } #right-btn { position: absolute; /* 相对于图片的位置 */ top: 45%; right: 0px; /* 右半圆按钮 */ width: 27px; height: 38px; background-color: rgba(119, 119, 119, 0.5); border-radius: 20px 0 0 20px; /* 动画效果,放在变化前,当鼠标移动上面时,会缓慢变色 */ transition: background-color 0.3s ease-out; } #left-btn:hover { background-color: rgba(32, 32, 32, 0.5); cursor: pointer; } #right-btn:hover { background-color: rgba(32, 32, 32, 0.5); cursor: pointer; } #left-btn h3 { color: #fff; margin-top: 4px; margin-left: 2px; } #right-btn h3 { color: #fff; margin-top: 4px; margin-left: 8px; } </style>JavaScript代码:
<script> //显示第几张图片 var count = 1; //时间 var time = null; //图片列表 var imglist = document.getElementById("img-div").getElementsByTagName("img"); //圆点列表 var cirlist = document.getElementById("cir-div").getElementsByTagName("div"); //展示对应的图片和点亮对应的圆点 function show(x) { for (var i = 0; i < imglist.length; i++) { if (x == i + 1) { //显示图片 imglist[i].style.display = "block"; //圆点点亮 cirlist[i].style.backgroundColor = "#fff"; } else { imglist[i].style.display = "none"; cirlist[i].style.background = "rgba(255, 255, 255, .4)"; } } } //定时轮播图片(每3秒切换一张图片) function doStart() { if (time == null) { time = setInterval(function () { count++; show(count); if (count >= 8) { count = 0; } }, 3000); } } //停止轮播图片 function doStop() { if (time != null) { clearInterval(time); time = null; } } //鼠标移到圆点上图片会相应切换,并且之后会点亮下一个圆点 而不是未移到圆点前的下一个圆点 function doMove(x) { show(x); //将位置赋给count,图片就会从该图片的下一张开始切换 count = x; //当鼠标移到最后一个圆点时,需要将count变为0,不然执行doStart()里的count++,count就会变为9,越界了 if (count == 8) { count = 0; } } /* 对于i 、count和show(x)里x的关系: i = [0,7]; x = [1,8]; count = [1,8]; */ //点击左边按钮向左切换图片 function doLeftClick() { for (var i = 0; i < imglist.length; i++) { //判断当前在展示的是哪张图片 if (imglist[i].style.display == "block") { if (i == 0) { show(8); // 忘掉这句后,break会直接退出,当左按钮按到最右的圆点,会直接忽略圆点1,直接跳到圆点2 count = 0; //保证切换是3秒钟 doStop(); doStart(); break; } show(i); count = i; //保证切换是3秒钟 doStop(); doStart(); break; } } } //点击右边按钮向右切换图片 function doRightClick() { for (var i = 0; i < imglist.length; i++) { //判断当前在展示的是哪张图片 if (imglist[i].style.display == "block") { if (i == 7) { show(1); count = 1; doStop(); doStart(); break; } show(i + 2); count = i + 2; //就不会出现切换到没有图片的情况 if (count >= 8) { count = 0; } doStop(); doStart(); break; } } } doStart(); //默认打开页面显示的是第一张图片 //(不加,会出现第1个圆点亮也就是刚打开页面时,左按钮没反应) doMove(1); </script>遇到的难点:
虽说轮播图看起来还蛮简单的,但实现起来还挺多问题的。不过我发现的都解决掉了。
- 圆点与按钮放置在图片上
- 自动切换图片了但对应的圆点没有点亮
- 鼠标移到圆点上图片切换了,但下一个自动点亮的圆点却是未移到圆点前的下一个
- 第1个圆点亮也就是刚打开页面时,左按钮没反应
- 当左按钮按到最右的圆点,会直接忽略圆点1,直接跳到圆点2
- 在最后一个圆点时点击右按钮时,会出现切换到没有图片的情况
- 点左按钮切换时间大概2秒,点右按钮切换时间大概5秒,时间并没有达到标准的3秒
不过我都解决啦!
最大的感触就是刚解决掉一个bug正沾沾自喜时,又来一个bug。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年12月24日
2024年12月24日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]