js改变透明度实现轮播图的算法


Posted in Javascript onAugust 24, 2020

前面有分享过改变层级的轮播图算法,今天继续利用透明度来实现无位移的轮播图算法。

实现逻辑:将所有要轮播的图片全部定位到一起,即一层一层摞起来,并且利用层级的属性调整正确的图片顺序,将图片的透明度全部设置为0,然后在让初始的第一张图片的透明度为1即可,具体算法如下:

<!DOCTYPE html>
<html>
 <head>
 <meta charset="utf-8">
 <title>改变透明度算法(经典)</title>
 <style media="screen">
 * {
 margin: 0;
 padding: 0;
 }
 .wrap {
 width: 60%;
 margin: auto;
 position: relative;
 }
 .wrap img {
 width: 100%;
 position: absolute;
 left: 0;
 top: 0;
 transition: 2s;
 }
 .wrap img:nth-child(1) {
 position: relative;
 }
 .wrap .follow {
 width: 150px;
 height: 30px;
 margin: auto;
 display: flex;
 justify-content: space-between;
 }
 .wrap .follow span {
 width: 10px;
 height: 10px;
 border-radius: 50%;
 border: 3px solid gray;
 }
 .wrap .follow span:hover {
 cursor: pointer;
 }
 </style>
 </head>
 <body>
 <div class="wrap">
 <img src="img/01.jpg" alt="" />
 <img src="img/02.jpg" alt="" />
 <img src="img/03.jpg" alt="" />
 <img src="img/04.jpg" alt="" />
 <input id="leftBut" type="button" name="name" value="◀︎">
 <input id="rightBut" type="button" name="name" value="▶︎">
 <div class="follow">
 <span></span>
 <span></span>
 <span></span>
 <span></span>
 </div>
 </div>
 </body>
 <script type="text/javascript">
 // 获取所需元素
var images = document.querySelectorAll('.wrap img');
 var spans = document.querySelectorAll('.follow span');
 var leftBut = document.getElementById('leftBut');
 var rightBut = document.getElementById('rightBut');
 // 定义有参函数
function showImage(index) {
 for (var i = 0; i < images.length; i++) {
 spans[i].index = i;//自定义属性,得到对应的下标
images[i].index = i;//自定义属性,得到对应的下标
images[i].style.zIndex = 100 - i;//为图片排列顺序
images[i].style.opacity = '0';//将图片透明度全部赋值为0
 spans[i].style.background = 'gray';//圆点北京色全部设置为黑色
}
 //将传入参数下标值的图片透明度赋值为 1
 images[index].style.opacity = '1';
 //将传入参数下标值的图片的背景色赋值为white
 spans[index].style.background = 'white';
 }
 showImage(0);//初始设置下标为0的图片和圆点的样式
 
var count = 1;//获取计数器
// 定义自动轮播函数
function imageMove() {
 // 判断count的值如果能被4整除,则将count重新赋值为0;
if (count % 4 == 0) {
 count = 0;
 }
 // 将count值当做参数传给函数showImage();
 showImage(count);
 count++;//执行一次 +1
 }
 // 设置两秒调用一次函数imageMove(),并且赋值给imageInitailMove
 var imageInitailMove = setInterval('imageMove()', 2000);
 // 向左点击事件
leftBut.onclick = function() {
 // 先清除定时器
clearInterval(imageInitailMove);
 // 由于和自动轮方向相反所以要判断count的值当值为0时,重新赋值为4,继续循环
if (count == 0) {
 count = 4;
 }
 count--;
showImage(count);//调用函数count先自-
imageInitailMove = setInterval('imageMove()', 2000);
 }
 // 向右的点击事件
rightBut.onclick = function() {
 clearInterval(imageInitailMove);
 imageMove();//由于和自动轮播的方向相同所以直接调用
// 重新为定时器赋值
imageInitailMove = setInterval('imageMove()', 2000);
 }
 // 圆点的点击事件
for (var i = 0; i < spans.length; i++) {
 spans[i].onclick = function() {
 clearInterval(imageInitailMove);
 // 将当前点击的圆点的下标值赋值给count
 count = event.target.index;
 // 调用函数
showImage(count);
 imageInitailMove = setInterval('imageMove()', 2000);
 }
 }
 </script>
</html>

精彩专题分享:jQuery图片轮播 JavaScript图片轮播 Bootstrap图片轮播

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
借助script进行Http跨域请求:JSONP实现原理及代码
Mar 19 Javascript
Jquery实现自定义弹窗示例
Mar 12 Javascript
使用jquery中height()方法获取各种高度大全
Apr 02 Javascript
第九章之路径分页标签与徽章组件
Apr 25 Javascript
JS模态窗口返回值兼容问题的完美解决方法
May 28 Javascript
JS实现title标题栏文字不间断滚动显示效果
Sep 07 Javascript
JavaScript reduce和reduceRight详解
Oct 24 Javascript
jQuery扇形定时器插件pietimer使用方法详解
Jul 18 jQuery
JavaScript实现简单的文本逐字打印效果示例
Apr 12 Javascript
如何用webpack4带你实现一个vue的打包的项目
Jun 20 Javascript
JS前端模块化原理与实现方法详解
Mar 17 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
May 24 Javascript
标准的js无缝滚动效果
Aug 30 #Javascript
js实现按钮控制带有停顿效果的图片滚动
Aug 30 #Javascript
js制作网站首页图片轮播特效代码
Aug 30 #Javascript
js实现简单的碰壁反弹效果
Aug 30 #Javascript
js控住DOM实现发布微博效果
Aug 30 #Javascript
AngularJS动态生成div的ID源码解析
Aug 29 #Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
Aug 29 #Javascript
You might like
php Undefined index的问题
2009/06/01 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
js文件Cookie存取值示例代码
2014/02/20 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
js 性能优化之算法和流程控制
2017/02/15 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
微信小程序 授权登录详解(附完整源码)
2019/08/23 Javascript
[01:13:59]LGD vs Mineski Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
python开发简易版在线音乐播放器
2017/03/03 Python
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
让Django支持Sql Server作后端数据库的方法
2018/05/29 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
使用pip安装python库的多种方式
2019/07/31 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
了解一下python内建模块collections
2020/09/07 Python
大型会议策划方案
2014/05/17 职场文书
乡镇爱国卫生月活动总结
2014/06/25 职场文书
邀请函格式范文
2015/02/02 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
2015年售票员工作总结
2015/04/29 职场文书
辛亥革命观后感
2015/06/02 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
python中24小时制转换为12小时制的方法
2021/06/18 Python
十大必看国产动漫排名,魁拔上线,第二曾在日本播出
2022/03/18 国漫
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL