简易运动框架综合案例,仿FLASH运动

html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="index.css" />
        <script src="move.js"></script>
        <script>
            function getByClass(oParent,sClass){
                var aEle = document.getElementsByTagName('*');
                var aResult = [];
                for(var i = 0;i<aEle.length;i++){
                    if(aEle[i].className==sClass){
                        aResult.push(aEle[i]);
                    }
                }
                return aResult;
            }
            window.onload = function(){
                var oDiv = document.getElementById('playimages');
                var oBtnPrev = getByClass(oDiv,'prev')[0];
                var oBtnNext = getByClass(oDiv,'next')[0];
                var oMarkLeft = getByClass(oDiv,'mark_left')[0];
                var oMarkRight = getByClass(oDiv,'mark_right')[0];

                //左右按钮

                //当鼠标移入时,箭头显示出来,使用透明度
                //此时会出现一个问题,当鼠标移入到箭头上时,箭头也会消失
                //所以需要给箭头也加入一个onmouseover事件
                oBtnPrev.onmouseover=oMarkLeft.onmouseover=function(){
                    startMove(oBtnPrev,'opacity',100);
                }
                //当鼠标移出时,箭头隐藏起来出来
                oBtnPrev.onmouseout=oMarkLeft.onmouseout=function(){
                    startMove(oBtnPrev,'opacity',0);
                }
                oBtnNext.onmouseover=oMarkRight.onmouseover=function(){
                    startMove(oBtnNext,'opacity',100);
                }
                oBtnNext.onmouseout=oMarkRight.onmouseout=function(){
                    startMove(oBtnNext,'opacity',0);
                }


                //大图切换

                var oDivSmall = getByClass(oDiv,'small_pic')[0];
                var aLiSmall = oDivSmall.getElementsByTagName('li');
                var aUlSmall = oDivSmall.getElementsByTagName('ul')[0];
                var oUlBig = getByClass(oDiv,'big_pic')[0];
                var aLiBig = oUlBig.getElementsByTagName('li');
                //每点击一张小图,大图的层级就加一
                var nowZIndex = 2;
                //这个是针对下面大图从上往下拉实现的动态效果,当是第一张时,会再次刷新,
                //所以要用一个变量来记录当前的值
                var now=0;

                //给每一个小图的li加一个点击事件
                for(var i=0;i<aLiSmall.length;i++){
                    //根据点击第几张小图,就改变第几张大图,给小图加一个标记
                    aLiSmall[i].index = i;
                    aLiSmall[i].onclick=function(){

                        //如果当前图片的index与now想等,就不执行,如果不相等,就另now等于现在的index,
                        if(this.index==now)return;
                        now=this.index;
                        tab();

                    }
                    //给每一个小的li加上一个onmouseover,当放上去的时候,透明度发生改变
                    aLiSmall[i].onmouseover=function(){
                        startMove(this,'opacity',100);
                    }
                    aLiSmall[i].onmouseout=function(){
                        //如果不进行判断会出现一个bug,那就是当你最开始移入第一张时,再移出后,会变成不透明的
                        if(this.index!=now){
                            startMove(this,'opacity',60);
                        }                       
                    }
                }
                //有点仿照无缝滚动
                aUlSmall.style.width = aLiSmall.length*aLiSmall[0].offsetWidth+'px';
                function tab(){
                    //仿照选项卡的模式,
                        for(var i=0;i<aLiSmall.length;i++){
                            startMove(aLiSmall[i],'opacity',60);
                        }
                        startMove(aLiSmall[now],'opacity',100);
                        //根据小图的index来知道是哪一张大图,此时使对应的大图的层级增加1;
                        aLiBig[now].style.zIndex = nowZIndex++;
                        aLiBig[now].style.height = '0px';
                        startMove(aLiBig[now],'height',320);
                        //这里有一个规律,就是当下面小框里变一个时,这个ul向左移动为0,一两个时还是0
                        //移3个时,ul要向左移动一个li的宽度,这个是使大图对应的小图在中间位置
                        //以此类推规律即是-(n-1)*li的宽度
                        if(now==0){
                            startMove(aUlSmall,'left',0);
                        }else if(now==aLiSmall.length-1){
                            startMove(aUlSmall,'left',-(now-2)*aLiSmall[0].offsetWidth);
                        }else{
                            startMove(aUlSmall,'left',-(now-1)*aLiSmall[0].offsetWidth);
                        }

                }
                //给按钮添加上一张下一张
                oBtnPrev.onclick=function(){
                    now--;
                    if(now==-1){
                        now = aLiSmall.length-1;
                    }
                    tab();
                }
                oBtnNext.onclick=function(){
                    now++;
                    if(now==aLiSmall.length){
                        now=0;
                    }
                    tab();
                }
                //自动播放
                var timer = setInterval(oBtnNext.onclick,2000);
                oDiv.onmouseover = function(){
                    clearInterval(timer);
                }
                oDiv.onmouseout = function(){
                    timer = setInterval(oBtnNext.onclick,2000);
                }
            }
        </script>
    </head>
    <body>
        <div id="playimages" class="play">
        <ul class="big_pic">

            <div class="prev"></div>
            <div class="next"></div>

            <div class="text">加载图片说明……</div>
            <div class="length">计算图片数量……</div>

            <a class="mark_left" href="javascript:;"></a>
            <a class="mark_right" href="javascript:;"></a>
            <div class="bg"></div>

            <li style="z-index:1;"><img src="images/1.jpg" /></li>
            <li><img src="images/2.jpg" /></li>
            <li><img src="images/3.jpg" /></li>
            <li><img src="images/4.jpg" /></li>
            <li><img src="images/5.jpg" /></li>
            <li><img src="images/6.jpg" /></li>
        </ul>
        <div class="small_pic">
            <ul style="width:390px;">
                <li style="filter: 100; opacity: 1;"><img src="images/1.jpg" /></li>
                <li><img src="images/2.jpg" /></li>
                <li><img src="images/3.jpg" /></li>
                <li><img src="images/4.jpg" /></li>
                <li><img src="images/5.jpg" /></li>
                <li><img src="images/6.jpg" /></li>
            </ul>
        </div>
    </div>
    </body>
</html>

css

body { background: #666; } ul { padding: 0; margin: 0; } 
li { list-style: none; } img { border: 0; }
.play { width: 400px; height: 430px; margin: 50px auto 0; background: #999; font: 12px Arial; }

.big_pic { width: 400px; height: 320px; overflow: hidden; 
        border-bottom: 1px solid #ccc; background: #222; position: relative; }
.big_pic li { width: 400px; height: 320px; overflow: hidden; position: absolute; top: 0; left: 0; 
            z-index: 0; background: url(images/loading.gif) no-repeat center center; }
.mark_left { width: 200px; height: 320px; position: absolute; left: 0; top: 0; 
           background: red; filter: alpha(opacity:0); opacity: 0; z-index:3000; }
.mark_right { width: 200px; height: 320px; position: absolute; left: 200px; top: 0; 
            background: green; filter: alpha(opacity:0); opacity: 0; z-index:3000; }
.big_pic .prev { width: 60px; height: 60px; background: url(images/btn.gif) no-repeat; 
               position: absolute; top: 130px; left: 10px; z-index: 3001; 
               filter:alpha(opacity:0); opacity:0; cursor: pointer; }
.big_pic .next { width: 60px; height: 60px; background: url(images/btn.gif) no-repeat 0 -60px; 
               position: absolute; top: 130px; right: 10px; z-index: 3001; 
               filter:alpha(opacity:0); opacity:0; cursor: pointer; }

.big_pic .text { position: absolute; left: 10px; top: 302px; z-index: 3000; color: #ccc; }
.big_pic .length { position: absolute; right: 10px; bottom: 4px; z-index: 3000; color: #ccc; }
.big_pic .bg { width: 400px; height: 25px; background: #000; filter: alpha(opacity=60); opacity: 0.6; 
             position: absolute; z-index: 2999; bottom: 0; left: 0; }
.small_pic { width: 380px; height: 94px; position: relative; top: 7px; left: 10px; 
             overflow: hidden; }
.small_pic ul { height: 94px; position: absolute; top: 0; left: 0; }
.small_pic li { width: 120px; height: 94px; float: left; padding-right: 10px; 
               background: url(images/loading.gif) no-repeat center center; 
               cursor: pointer; filter: alpha(opacity=60); opacity: 0.6; }
.small_pic img { width: 120px; height: 94px; }

js

function getStyle(obj,name){
    if(obj.currentStyle){
        return obj.currentStyle[name];
    }else{
        return getComputedStyle(obj,false)[name];
    }
}

function startMove(obj,attr,target){
    clearInterval(obj.time);
    obj.time=setInterval(function(){
        //此时,可以使用之前封装好的函数,但是一定要记得使用parseInt,
        //因为得到的值带有px,使用parseInt把他转化为整数
        //对于透明度要换一种方式
        var curr=0;
        if(attr=='opacity'){
            //计算机存储小数时出现的bug,0.07*100得到的是7.000000001,所以四舍五入
            curr = Math.round(parseFloat(getStyle(obj,attr))*100);
        }else{
            curr = parseInt(getStyle(obj,attr));
        }

        var speed = (target-curr)/6;
        speed = speed>0?Math.ceil(speed):Math.floor(speed);
        //此时不需要使用>号,是因为对于缓冲运动而言,速度是变化的,到最后的时候,速度回变成1
        //因此不会存在高度大于目标值的情况
        if(curr==target){
            clearInterval(obj.time);
        }else{
            //此时可以利用[]获取属性的方法把属性作为参数传进来,
            //即把obj.style.height 转换为obj.style['height']

            if(attr=='opacity'){
                //记得加括号
                obj.style.filter = 'alpha(opacity:'+(curr+speed)+')';
                obj.style.opacity = (curr+speed)/100;
            }else{
                obj.style[attr] = curr+speed+'px';
            }                       
        }
    },30)
}

另外准备5张图片

Flash MV Take Me To Your Heart.swf 《两只小蜜蜂》正式版.swf 《流光飞舞》-MM翻唱版.swf 《爱》-三个漂亮MM翻唱版.swf 《爱远走》李娜翻唱版.swf 《童话》凄美版.swf 《茉莉香》中西合壁版.swf 下辈子如果我还记得你.swf 原创歌曲-雨霖铃.swf 情感MV-《手放开》.swf 情感小品-离开的瞬间.swf 搞笑MV!一周的七夜.swf 校园!高中生活片段.swf 浪漫旋律!第一次爱的人.swf 温馨甜蜜-这就是爱情.swf 献给失恋的人-嫁给了他.swf 重树信心-门里的生命.swf 钢琴独奏-世界安静了.swf Flash 宣传 miao8宣传动画Ⅱ.swf 亲恩难忘-感恩录.swf 公益广告 关注孩子.swf 冲破黑暗,迎接希望之光.swf 创意广告-天下无贼.swf 创意广告-孔子东游记.swf 年轻的方向,动感的魅力.swf 广告欣赏-年华若酒.swf 无限希望.swf 时尚广告-甜蜜蜜.swf 气势恢弘!电不死.swf 爸爸爱我吗.swf 精彩!希望Openning.swf 精彩!野狼村家族会议.swf 终级使命.swf 经典广告-年轻的梦.swf 经典广告-诗经鹿鸣.swf 超可爱绿豆蛙-成人止步.swf 超可爱绿豆蛙-拯救地球.swf 超可爱绿豆蛙-果汁大战.swf Flash 小品 007风格-手机的故事.swf 16岁青春-16岁梦.swf 《旅途》序章.swf 伤感!伦伦的为什么.swf 公益宣传-《无题》.swf 公益小品-扒手.swf 原始部落的卡米奥传说.swf 城市里的一只废物箱.swf 女孩,寻找那最爱的人.swf 小猫比雅的祝福.swf 幽默搞笑-TT鳄.swf 情感小品-上帝不知道.swf 搞笑!张飞转行记.swf 搞笑小品-红灯记.swf 星际女孩-star girl.swf 浪漫幻想曲-《花语》.swf 灾难中的希望-《黎明》.swf 猫.swf 蕴育生命-喜马拉雅之雪.swf 鼹鼠乐乐之修椅子.swf Flash广告 其他类 媒体类 房地产类 汽车类 生活用品类 电子类 电脑网络类 通信类 金融类 食品保健类 其他类\爱情.SWF 其他类\皮包.SWF 其他类\皮包2.SWF 其他类\音乐.SWF 其他类\音乐2.SWF 媒体类\CCTV 媒体类\其他 媒体类\广告 媒体类\CCTV\CCTV1.swf 媒体类\CCTV\CCTV2.SWF 媒体类\CCTV\中国电视体育奖.swf 媒体类\CCTV\中央电视台.swf 媒体类\CCTV\主持人1.SWF 媒体类\CCTV\主持人2.SWF 媒体类\CCTV\梦想成真.SWF 媒体类\CCTV\评选.SWF 媒体类\其他\人物.SWF 媒体类\其他\奥斯卡.SWF 媒体类\其他\异动.SWF 媒体类\其他\托福.SWF 媒体类\其他\阳光文化名车.swf 媒体类\其他\阳光文化百年婚恋.swf 媒体类\广告\中国人民保险公司.SWF 媒体类\广告\大学生歌手.SWF 媒体类\广告\海底总动员.SWF 媒体类\广告\美康移民.swf 媒体类\广告\节日大转盘.SWF 媒体类\广告\通信信息报.swf 房地产类\solo 房地产类\其他 房地产类\北京五月 房地产类\solo\solo1.SWF 房地产类\solo\solo2.SWF 房地产类\solo\solo3.SWF 房地产类\solo\solo4.SWF 房地产类\solo\solo5.SWF 房地产类\其他\Moma.SWF 房地产类\其他\东方城.SWF 房地产类\其他\华润置地.SWF 房地产类\其他\太阳国际公寓.SWF 房地产类\其他\实得型材.SWF 房地产类\其他\康桥.SWF 房地产类\其他\数码大厦.SWF 房地产类\其他\通用时代.SWF 房地产类\其他\陶然北岸.SWF 房地产类\北京五月\五月1.SWF 房地产类\北京五月\五月2.SWF 汽车类\Audi 汽车类\BORA 汽车类\一汽大众 汽车类\东风悦达 汽车类\东风雪铁龙 汽车类\丰田 汽车类\其他 汽车类\天津一汽 汽车类\奇瑞 汽车类\尼桑 汽车类\本田雅格 汽车类\江铃 汽车类\猎豹 汽车类\现代 汽车类\福特 汽车类\陆风 汽车类\风行 汽车类\马自达 汽车类\Audi\Audi1.SWF 汽车类\Audi\Audi2.SWF 汽车类\Audi\Audi3.swf 汽车类\Audi\Audi4.swf 汽车类\Audi\Audi5.SWF 汽车类\BORA\BORA1.swf 汽车类\BORA\BORA2.swf 汽车类\BORA\BORA3.swf 汽车类\一汽大众\polo.SWF 汽车类\一汽大众\一汽大众.SWF 汽车类\东风
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值