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 简单的进度条实现代码
Mar 11 Javascript
js自动闭合html标签(自动补全html标记)
Oct 04 Javascript
Jquery的Tabs内容轮换效果实现代码,几行搞定
Feb 12 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
Jun 06 Javascript
JavaScript中的parse()方法使用简介
Jun 12 Javascript
jquery UI Datepicker时间控件的使用及问题解决
Apr 28 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
Dec 02 Javascript
基于Angular.js实现的触摸滑动动画实例代码
Feb 19 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
Nov 09 Javascript
vue.js通过路由实现经典的三栏布局实例代码
Jul 08 Javascript
微信小程序实现左滑删除效果
Nov 18 Javascript
利用Vue实现简易播放器的完整代码
Dec 30 Vue.js
标准的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小技巧搜集,每个PHPer都来露一手
2007/01/02 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
你不知道的文件上传漏洞php代码分析
2016/09/29 PHP
PHP 实现缩略图
2021/03/09 PHP
jquery使用ajax实现微信自动回复插件
2014/04/28 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
jQuery中is()方法用法实例
2015/01/06 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
Angular实现跨域(搜索框的下拉列表)
2017/02/16 Javascript
mongoose中利用populate处理嵌套的方法
2017/05/26 Javascript
vue中的provide/inject的学习使用
2018/05/09 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
JS+Canvas实现五子棋游戏
2020/08/26 Javascript
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
python实现探测socket和web服务示例
2014/03/28 Python
跟老齐学Python之私有函数和专有方法
2014/10/24 Python
在Python中操作字典之clear()方法的使用
2015/05/21 Python
django session完成状态保持的方法
2018/11/27 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
Python Django中的STATIC_URL 设置和使用方式
2020/03/27 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
如何用python写个模板引擎
2021/01/14 Python
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
电大自我鉴定范文
2013/10/01 职场文书
车工岗位职责
2013/11/26 职场文书
小学三年级学生评语
2014/04/22 职场文书
项目经理任命书
2014/06/04 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
网络舆情信息简报
2015/07/21 职场文书
初一语文教学反思
2016/03/03 职场文书
工作一年自我鉴定
2019/06/20 职场文书