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 相关文章推荐
asp 的 分词实现代码
May 24 Javascript
几个有趣的Javascript Hack
Jul 24 Javascript
js判断字符是否是汉字的两种方法小结
Jan 03 Javascript
JavaScript中对象property的读取和写入方法介绍
Dec 30 Javascript
JavaScript自定义数组排序方法
Feb 12 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
Mar 02 Javascript
javascript实现一个数值加法函数
Jun 26 Javascript
jquery实用技巧之输入框提示语句
Jul 28 Javascript
浅谈Node.js:理解stream
Dec 08 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
Jul 17 jQuery
JavaScript fetch接口案例解析
Aug 30 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
Sep 11 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 分页原理分析,大家可以看看
2009/12/21 PHP
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
仿jQuery的siblings效果的js代码
2011/08/09 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
详解vue-cli脚手架build目录中的dev-server.js配置文件
2017/11/24 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
JS定义函数的几种常用方法小结
2019/05/23 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
[36:33]完美世界DOTA2联赛循环赛 Matador vs Forest 第一场 11.06
2020/11/06 DOTA
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
python解析多层json操作示例
2019/12/30 Python
Python 实现微信自动回复的方法
2020/09/11 Python
最新PyCharm从安装到PyCharm永久激活再到PyCharm官方中文汉化详细教程
2020/11/17 Python
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
商务英语大学生职业生涯规划书范文
2014/01/01 职场文书
公司演讲稿开场白
2014/08/25 职场文书
2015年五四青年节演讲稿
2015/03/18 职场文书
趣味运动会简讯
2015/07/20 职场文书
2016年企业先进员工事迹材料
2016/02/25 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers