zoukankan      html  css  js  c++  java
  • js基础(改变透明度实现轮播图的算法)

    前面有分享过改变层级的轮播图算法,今天继续利用透明度来实现无位移的轮播图算法。

    实现逻辑:将所有要轮播的图片全部定位到一起,即一层一层摞起来,并且利用层级的属性调整正确的图片顺序,将图片的透明度全部设置为0,然后在让初始的第一张图片的透明度为1即可,具体算法如下:

               

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>改变透明度算法(经典)</title>
    <style media="screen">
    * {
    margin: 0;
    padding: 0;
    }
    .wrap {
    60%;
    margin: auto;
    position: relative;
    }
    .wrap img {
    100%;
    position: absolute;
    left: 0;
    top: 0;
    transition: 2s;
    }
    .wrap img:nth-child(1) {
    position: relative;
    }
    .wrap .follow {
    150px;
    height: 30px;
    margin: auto;
    display: flex;
    justify-content: space-between;
    }
    .wrap .follow span {
    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>

  • 相关阅读:
    Razor使用方法
    Razor视图中的@:和<text>语法
    【洛谷p1031】均分纸牌
    Python读写文件
    对象传参数中引用是否被覆盖的情形
    Python中的random模块
    mysql数据库 安装 (原创)
    MYSQL常用命令
    MySQL查询数据表中数据记录(包括多表查询)
    127.0.0.1
  • 原文地址:https://www.cnblogs.com/jn1223/p/5819331.html
Copyright © 2011-2022 走看看