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 相关文章推荐
Javascript 更新 JavaScript 数组的 uniq 方法
Jan 23 Javascript
基于Jquery实现表格动态分页实现代码
Jun 21 Javascript
jQuery Mobile页面跳转后未加载外部JS原因分析及解决
Mar 18 Javascript
基于编写jQuery的无缝滚动插件
Aug 02 Javascript
简单分析javascript面向对象与原型
May 21 Javascript
AngularJS实现网站换肤实例
Feb 19 Javascript
js实现随机抽选效果、随机抽选红色球效果
Jan 13 Javascript
深入理解javascript的getTime()方法
Feb 16 Javascript
JS脚本实现网页自动秒杀点击
Jan 11 Javascript
js实现随机div颜色位置 类似满天星效果
Oct 24 Javascript
JavaScript运行机制实例分析
Apr 11 Javascript
Ajax实现页面无刷新留言效果
Mar 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中使用Oracle数据库(1)
2006/10/09 PHP
攻克CakePHP系列二 表单数据显示
2008/10/22 PHP
PHP的异常处理类Exception的使用及说明
2012/06/13 PHP
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
探寻PHP脚本不报错的原因
2014/06/12 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
PHP反射实际应用示例
2019/04/03 PHP
IE和Firefox下event事件杂谈
2009/12/18 Javascript
JavaScript的parseInt 取整使用
2011/05/09 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
JavaScript全排列的六种算法 具体实现
2013/06/29 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
2013/12/25 Javascript
微信小程序 页面之间传参实例详解
2017/01/13 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
使用Vant完成Dialog弹框案例
2020/11/11 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
python解析xml文件实例分享
2013/12/04 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
pyqt 实现为长内容添加滑轮 scrollArea
2019/06/19 Python
详解通过focusout事件解决IOS键盘收起时界面不归位的问题
2019/07/18 HTML / CSS
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
大学生简短的自我评价分享
2014/02/20 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
在校学生证明格式
2015/06/24 职场文书
学习弘扬焦裕禄精神心得体会
2016/01/23 职场文书
教你使用一行Python代码玩遍童年的小游戏
2021/08/23 Python
Go微服务项目配置文件的定义和读取示例详解
2022/06/21 Golang