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 相关文章推荐
如何实现iframe(嵌入式帧)的自适应高度
Jul 26 Javascript
可在线编辑网页文字效果代码(单击)
Mar 02 Javascript
JS完成代码前最好对其做5件事
Apr 07 Javascript
使用AngularJS 应用访问 Android 手机的图片库
Mar 24 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
Jun 23 Javascript
Javascript OOP之面向对象
Jul 31 Javascript
基于vue-ssr服务端渲染入门详解
Jan 08 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
Mar 06 jQuery
微信小程序中使用wxss加载图片并实现动画效果
Aug 13 Javascript
IDEA安装vue插件图文详解
Sep 26 Javascript
js实现轮播图特效
May 28 Javascript
jQuery实现视频展示效果
May 30 jQuery
标准的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版
2006/10/09 PHP
一个用php实现的获取URL信息的类
2007/01/02 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
laravel请求参数校验方法
2019/10/10 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
分享20款好玩的jQuery游戏
2011/04/17 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
对angular4子路由&amp;辅助路由详解
2018/10/09 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
jQuery实现轮播图效果demo
2020/01/11 jQuery
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
Django日志模块logging的配置详解
2017/02/14 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
Django中提示消息messages的设置方式
2019/11/15 Python
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
给学校的建议书范文
2014/05/15 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
初中语文教学随笔
2015/08/15 职场文书