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 相关文章推荐
JQuery优缺点分析说明
Jun 09 Javascript
javascript 文本框水印/占位符(watermark/placeholder)实现方法
Jan 15 Javascript
jquery实现textarea 高度自适应
Mar 11 Javascript
Javascript随机标签云代码实例
Jun 21 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
Aug 25 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
Dec 21 Javascript
微信小程序 自定义对话框实例详解
Jan 20 Javascript
Javascript循环删除数组中元素的几种方法示例
May 18 Javascript
详解vue2父组件传递props异步数据到子组件的问题
Jun 29 Javascript
使用JavaScript实现表格编辑器(实例讲解)
Aug 02 Javascript
react结合bootstrap实现评论功能
May 30 Javascript
node.js使用express-fileupload中间件实现文件上传
Jul 16 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的性能
2013/10/30 PHP
详解WordPress中添加和执行动作的函数使用方法
2015/12/29 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
js验证整数加保留小数点的简单实例
2013/12/02 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
jQuery通用的全局遍历方法$.each()用法实例
2016/07/04 Javascript
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
vue+vant实现商品列表批量倒计时功能
2020/01/13 Javascript
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
2021/01/13 Vue.js
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
Python实现全局变量的两个解决方法
2014/07/03 Python
分析在Python中何种情况下需要使用断言
2015/04/01 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
pytorch使用horovod多gpu训练的实现
2020/09/09 Python
网页设计个人找工作求职信
2013/11/28 职场文书
家长给孩子的表扬信
2014/01/17 职场文书
班级文化标语
2014/06/23 职场文书
感情真挚的毕业生求职信
2014/07/19 职场文书
个人授权委托书范本格式
2014/10/12 职场文书
教师个人师德总结
2015/02/06 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
运动会闭幕式通讯稿
2015/07/18 职场文书
教师培训简讯
2015/07/20 职场文书
剖析后OpLog订阅MongoDB的数据变更就没那么难了
2022/02/24 MongoDB
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python