zoukankan      html  css  js  c++  java
  • 实现划桨板块的自动轮播

    这个效果主要应用了3D旋转的效果。通过背景图的切割来改变图片。

    <style> *{ margin: 0; padding: 0; } body{ perspective:880px;/*视镜*/ } .box{ /*overflow:hidden;*/ 1000px; height:500px; margin:100px auto; } .box div{ float:left; 500px; height:500px; } .box div p{ 500px; height: 100px; position: relative; transform-style:preserve-3d; } .box div p span{ 500px; height: 100px; position: absolute; left: 0; top: 0; -webkit-background-size:1000px 500px; background-size:1000px 500px; background:#333; } .box div p .contrary{ transform:rotateY(180deg); } </style>

    body部分

    <div class="box">
        <div class="left">
            <p>
                <span class="front"></span>
                <span class="contrary"></span>
            </p>
            <p>
                <span class="front"></span>
                <span class="contrary"></span>
            </p>
            <p>
                <span class="front"></span>
                <span class="contrary"></span>
            </p>
            <p>
                <span class="front"></span>
                <span class="contrary"></span>
            </p>
            <p>
                <span class="front"></span>
                <span class="contrary"></span>
            </p>
        </div>
        <div class="right">
            <p>
                <span class="front"></span>
                <span class="contrary"></span>
            </p>
            <p>
                <span class="front"></span>
                <span class="contrary"></span>
            </p>
            <p>
                <span class="front"></span>
                <span class="contrary"></span>
            </p>
            <p>
                <span class="front"></span>
                <span class="contrary"></span>
            </p>
            <p>
                <span class="front"></span>
                <span class="contrary"></span>
            </p>
        </div>
    </div>

    js部分

    <script type="text/javascript">
        var box=document.querySelector(".box");
        var box_leftp=document.querySelectorAll(".left p");
        var box_rightp=document.querySelectorAll(".right p");
        var n=0;
        var reg=[0,0,0,0,0];
        //添加图片的数组,这里写入图片的路径。
        //开始和最后一个是同一张图片。
        var arrImg=["images/1.jpg","images/2.jpg","images/3.jpg","images/4.jpg","images/5.jpg","images/1.jpg"]
        //设置初始的值
        for(var i=0;i<box_leftp.length;i++){
                //添加图片在正反两面的图,利用背景切割图片。
                //这里是左边的一部分切割的图。利用变量来实现背景位置的变化这是正面的部分
                box_leftp[i].querySelector(".front").style.cssText="background-image:url("+arrImg[n]+");background-position:0px "+i*-100+"px;background-size:1000px 500px;";
                //这里是左边的反面图片
                box_leftp[i].querySelector(".contrary").style.cssText="background-image:url("+arrImg[n+1]+");background-position:0px "+i*-100+"px;background-size:1000px 500px;";
                //这里是右边的正面图片
                box_rightp[i].querySelector(".front").style.cssText="background-image:url("+arrImg[n]+");background-position:-500px "+i*-100+"px;background-size:1000px 500px;";
                //这里是右边的反面图片
                box_rightp[i].querySelector(".contrary").style.cssText="background-image:url("+arrImg[n+1]+");background-position:-500px "+i*-100+"px;background-size:1000px 500px;";
            }
        setInterval(autoplay,4000);
        function autoplay(){
            for(var j=0;j<reg.length;j++){
                reg[j]=0;
            }
            //每一次调用都还原原来的样子。并且图片通过数组来改变下一个版面的两张图
            for(var i=0;i<box_leftp.length;i++){
                box_leftp[i].querySelector(".front").style.cssText="background-image:url("+arrImg[n]+");background-position:0px "+i*-100+"px;background-size:1000px 500px;";
                box_leftp[i].querySelector(".contrary").style.cssText="background-image:url("+arrImg[n+1]+");background-position:0px "+i*-100+"px;background-size:1000px 500px;";
                box_rightp[i].querySelector(".front").style.cssText="background-image:url("+arrImg[n]+");background-position:-500px "+i*-100+"px;background-size:1000px 500px;";
                box_rightp[i].querySelector(".contrary").style.cssText="background-image:url("+arrImg[n+1]+");background-position:-500px "+i*-100+"px;background-size:1000px 500px;";
            }
            //还原初始的角度
            for(var j=0;j<=4;j++){
                box_leftp[j].style.cssText="transform:rotateY("+reg[j]+"deg)";
                box_rightp[j].style.cssText="transform:rotateY("+-reg[j]+"deg)";
            }
            //图片的坐标加一
            n++;
            //当图片到最一张后就返回原来的位置
            if(n>=arrImg.length-1){
                n=0;
            }
    
            //设置过度的动画使其动画轮播改变图片
            var t=setInterval(function(){
                //这里设置每个板块开始旋转时间不同步。
                //以实现图片板块的不同的样子转过来。
                reg[0]-=18;
                if(reg[0]<=-180){
                    reg[0]=-180
                }
                if(reg[0]<=-36){
                    reg[1]-=18;
                    if(reg[1]<=-180){
                        reg[1]=-180
                    }
                }
                if(reg[1]<=-36){
                    reg[2]-=18;
                    if(reg[2]<=-180){
                        reg[2]=-180
                    }
                }
                if(reg[2]<=-36){
                    reg[3]-=18;
                    if(reg[3]<=-180){
                        reg[3]=-180
                    }
                }
                if(reg[3]<=-36){
                    reg[4]-=18;
                    if(reg[4]<=-180){
                        reg[4]=-180;
                        clearInterval(t)
                    }
                }
                //角度旋转的动画。
                for(var l=0;l<=4;l++){
                box_leftp[l].style.cssText="transform:rotateY("+reg[l]+"deg)";
                box_rightp[l].style.cssText="transform:rotateY("+-reg[l]+"deg)";
                }
            },100)
        }
    </script>
  • 相关阅读:
    nyoj 311 完全背包
    nyoj 737 石子合并(一)
    nyoj 232 How to eat more Banana
    nyoj 456 邮票分你一半
    nyoj 236 心急的C小加
    nyoj 195 飞翔
    nyoj 201 作业题
    SOS 调试扩展 (SOS.dll)
    使用Windbg和SoS扩展调试分析.NET程序
    windbg命令分类与概述
  • 原文地址:https://www.cnblogs.com/zouxianlu/p/6597146.html
Copyright © 2011-2022 走看看