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 模拟JQuery的Ready方法实现并出现的问题
Dec 06 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
Feb 26 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
May 09 Javascript
AngularJS中的API(接口)简单实现
Jul 28 Javascript
jquery实现(textarea)placeholder自动换行
Dec 22 Javascript
ajax与json 获取数据并在前台使用简单实例
Jan 19 Javascript
jQuery表单设置值的方法
Jun 30 jQuery
深入理解React中何时使用箭头函数
Aug 23 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
May 02 Javascript
微信小程序引入Vant组件库过程解析
Aug 06 Javascript
2分钟实现一个Vue实时直播系统的示例代码
Jun 05 Javascript
详解webpack的clean-webpack-plugin插件报错
Oct 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跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
php中的动态调用实例分析
2015/01/07 PHP
PHP学习记录之数组函数
2018/06/01 PHP
如何让PHP编码更加好看利于阅读
2019/05/12 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
js+JQuery返回顶部功能如何实现
2012/12/03 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
js切换光标示例代码
2013/10/10 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
javascript中函数作为参数调用的方法
2015/02/09 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
Python实时获取cmd的输出
2015/12/13 Python
Python队列的定义与使用方法示例
2017/06/24 Python
python实现外卖信息管理系统
2018/01/11 Python
Python中XlsxWriter模块简介与用法分析
2018/04/24 Python
pandas 如何分割字符的实现方法
2019/07/29 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
2014年庆元旦活动方案
2014/02/15 职场文书
优秀团干部个人事迹
2014/05/29 职场文书
自荐信格式模板
2015/03/27 职场文书
2016中考冲刺决心书
2015/09/22 职场文书
2016年中秋祝酒词
2015/11/26 职场文书
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS
python如何读取和存储dict()与.json格式文件
2022/06/25 Python