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 相关文章推荐
Prototype1.5 rc2版指南最后一篇之Position
Jan 10 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
Feb 11 Javascript
SeaJS入门教程系列之完整示例(三)
Mar 03 Javascript
jQuery中outerHeight()方法用法实例
Jan 19 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
Mar 10 Javascript
学习vue.js计算属性
Dec 03 Javascript
Angular实现购物车计算示例代码
Feb 21 Javascript
详解AngularJs ui-router 路由的简单介绍
Apr 26 Javascript
es6在react中的应用代码解析
Nov 08 Javascript
vue-infinite-loading2.0 中文文档详解
Apr 08 Javascript
layUI实现列表查询功能
Jul 27 Javascript
Vue formData实现图片上传
Aug 20 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
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
javaScript Array(数组)相关方法简述
2009/07/25 Javascript
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
JavaScript_object基础入门(必看篇)
2016/06/13 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
AngularJS中scope的绑定策略实例分析
2017/10/30 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
小程序实现分类页
2019/07/12 Javascript
利用python操作SQLite数据库及文件操作详解
2017/09/22 Python
python3 读取Excel表格中的数据
2018/10/16 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
PyCharm更改字体和界面样式的方法步骤
2019/09/27 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
用CSS3实现无限循环的无缝滚动的示例代码
2017/11/01 HTML / CSS
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
写好自荐信的几个要点
2013/12/26 职场文书
护理专业毕业生自荐信范文
2014/01/05 职场文书
教师档案管理制度
2014/01/23 职场文书
质量整改通知单
2015/04/21 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
大学自主招生自荐信(2016精选篇)
2016/01/28 职场文书
检讨书怎么写?
2019/06/21 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang