zoukankan      html  css  js  c++  java
  • 旋转木马特效代码

    window.onload = function () {
        var flag = true;//表示节流阀是打开的
    
        var config = [
            {
                "width": 400,
                "top": 20,
                "left": 50,
                "opacity": 0.2,
                "zIndex": 2
            },//0
            {
                "width": 600,
                "top": 70,
                "left": 0,
                "opacity": 0.8,
                "zIndex": 3
            },//1
            {
                "width": 800,
                "top": 100,
                "left": 200,
                "opacity": 1,
                "zIndex": 4
            },//2
            {
                 600,
                top: 70,
                left: 600,
                opacity: 0.8,
                zIndex: 3
            },//3
            {
                "width": 400,
                "top": 20,
                "left": 750,
                "opacity": 0.2,
                "zIndex": 2
            }//4
        ];//其实就是一个配置单 规定了每张图片的大小位置层级透明度
        //找人
        var wrap = document.getElementById("wrap");
        var slide = document.getElementById("slide");
        var ul = slide.children[0];
        var lis = ul.children;
        var arrow = document.getElementById("arrow");
        var arrLeft = document.getElementById("arrLeft");
        var arrRight = document.getElementById("arrRight");
        //alert("加载成功");
        //鼠标经过盒子 让箭头 渐渐地 显示出来
        wrap.onmouseover = function () {
            animate(arrow, {"opacity": 1});
        };
        //离开盒子渐渐隐藏
        wrap.onmouseout = function () {
            animate(arrow, {"opacity": 0});
        };
    
        function assign() {
            //让所有的li 按照配置单 渐渐地 各就各位
            for (var i = 0; i < lis.length; i++) {
                //
                animate(lis[i], config[i], function () {
                    flag = true;//动画执行完成后 让falg为true 打开节流阀
                });
            }
        }
    
        assign();
    
        //3.点击箭头 实现旋转
        //点击右箭头 让配置单 把最前的放到最后
        arrRight.onclick = function () {
            if (flag) {//如果节流阀是打开的 才能执行动画
                flag = false;//只要执行了 就把节流阀先关闭
                //arr.push(arr.shift());
                config.push(config.shift());
                //然后还要让每一个li 根据新生成的配置单 重新从当前位置跑到新的位置
                assign();
            }
        };
        arrLeft.onclick = function () {
            //把最后的元素放到最前
            //arr.unshift(arr.pop());
            config.unshift(config.pop());
            assign();
        };
    
        //4.节流阀 点击箭头后就不能再点击了 当前动画执行完成后 才能再点击
    
    };
    
    //animate.js代码
    function animate(obj, json, fn) {
        clearInterval(obj.timer);
        obj.timer = setInterval(function () {
            var flag = true;
            for (var k in json) {
                if (k === "opacity") {
                    var leader = getStyle(obj, k) * 100;
                    var target = json[k] * 100;
                    var step = (target - leader) / 10;
                    step = step > 0 ? Math.ceil(step) : Math.floor(step);
                    leader = leader + step;
                    obj.style[k] = leader / 100;
                } else if (k === "zIndex") {
                    obj.style.zIndex = json[k];
                } else {
                    var leader = parseInt(getStyle(obj, k)) || 0;
                    var target = json[k];
                    var step = (target - leader) / 10;
                    step = step > 0 ? Math.ceil(step) : Math.floor(step);
                    leader = leader + step;
                    obj.style[k] = leader + "px";
                }
                if (leader != target) {
                    flag = false;
                }
            }
            if (flag) {
                clearInterval(obj.timer);
                if (fn) {
                    fn();
                }
            }
        }, 15);
    }
    function getStyle(obj, attr) {
        if (window.getComputedStyle) {
            return window.getComputedStyle(obj, null)[attr];
        } else {
            return obj.currentStyle[attr];
        }
    }
  • 相关阅读:
    Orac and Medians
    牛牛的揠苗助长
    Color Graph
    Spanning Tree Removal【构造】
    A Simple Problem On A Tree
    Spring源码学习笔记(六、Spring启动流程解析:BeanFactory后置处理)
    Spring源码学习笔记(五、Spring启动流程解析:准备BeanFactory)
    一、求最大公约数
    Spring源码学习笔记(四、Spring启动流程解析:概述与准备上下文、获取BeanFactory)
    Spring源码学习笔记(三、路径和占位符,Spring容器如何解析配置信息)
  • 原文地址:https://www.cnblogs.com/lsy0403/p/5892548.html
Copyright © 2011-2022 走看看