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中定义对象类别
Dec 22 Javascript
Javascript 学习笔记 错误处理
Jul 30 Javascript
读jQuery之四(优雅的迭代)
Jun 20 Javascript
使用js简单实现了tree树菜单
Nov 20 Javascript
jquery导航制件jquery鼠标经过变色效果示例
Dec 05 Javascript
Javascript核心读书有感之表达式和运算符
Feb 11 Javascript
巧用数组制作图片切换js代码
Nov 29 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
Aug 04 Javascript
jQuery条件分页 代替离线查询(附代码)
Aug 17 jQuery
Vue2.0 http请求以及loading展示实例
Mar 06 Javascript
vue axios基于常见业务场景的二次封装的实现
Sep 21 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
Jun 18 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的面向对象编程
2006/10/09 PHP
PHP 采集获取指定网址的内容
2010/01/05 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
php使用反射插入对象示例分享
2014/03/11 PHP
PHP四大安全策略
2014/03/12 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
java script编程起步(第三课)
2007/01/10 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
JS与Ajax Get和Post在使用上的区别实例详解
2016/06/08 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
jQuery实现的简单歌词滚动功能示例
2019/01/07 jQuery
js微信分享接口调用详解
2019/07/23 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
python监控nginx端口和进程状态
2019/09/06 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
python如何实现图片压缩
2020/09/11 Python
超市开学活动方案
2014/03/01 职场文书
2015年社区科普工作总结
2015/05/13 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
初二数学教学反思
2016/02/17 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
全新239军机修复记
2022/04/05 无线电