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 相关文章推荐
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
Jan 12 Javascript
javascript中sort排序实例详解
Jul 24 Javascript
jQuery多级联动下拉插件chained用法示例
Aug 20 Javascript
javascript this详细介绍
Sep 19 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
Dec 07 Javascript
javascript使用递归算法求两个数字组合功能示例
Jan 03 Javascript
bootstrap table动态加载数据示例代码
Mar 25 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
Jul 19 Javascript
极简主义法编写JavaScript类
Nov 02 Javascript
vue组件编写之todolist组件实例详解
Jan 22 Javascript
vue.js 微信支付前端代码分享
Feb 10 Javascript
es6中比较有用的7个技巧小结
Jul 12 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
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
图片完美缩放
2006/09/07 Javascript
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
JS target与currentTarget区别说明
2011/08/28 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
Bootstrap在线电子商务网站实战项目5
2016/10/14 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
vue实现搜索功能
2019/05/28 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
解决vue-router 嵌套路由没反应的问题
2020/09/22 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
利用aardio给python编写图形界面
2017/08/21 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
python构建深度神经网络(续)
2018/03/10 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
python关闭占用端口方式
2019/12/17 Python
利用python画出AUC曲线的实例
2020/02/28 Python
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
国际领先的学术出版商:Springer
2017/01/11 全球购物
销售人员中英文自荐信
2013/09/22 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
教师网络培训心得体会
2016/01/09 职场文书
创业计划书之寿司
2019/07/19 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python
SpringBoot 集成Redis 过程
2021/06/02 Redis