一个javascript的左右滚动切换效果!

好久没写博客了,今天无聊做了个滚动的效果,

再加了一个进度显示。

document.getElementById("Progress").getElementsByTagName("li")[i].style.background = "orange";
document.getElementById("Progress").getElementsByTagName("li")[i-1].style.background = "#fff";

这个效果主要是对“前进”和“后退”进行判断.

if(i == arr.length-1){
return;
}

这里是当“前进”到最后一个背景色就停止并返回了.

speed -= 100/5;
con.style.left = parseInt(speed) + "px";

这里对con的左定位进行计算,

if(speed <= arr[i+1]){
i++;
}
else{
clearTimeout(timer);
timer = setTimeout("move()",20);
}

这里如果speed 小于或等于arr[i+1]  就i++;

否则setTimeout("move()",20);会一直执行move();

speed -= 100/5;  //这里您还可以用自己的方式去计算。
代码里面的注释是为了方便测试!
整体代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
 <head>
  <title> New Document </title>
<script type="text/javascript" src="js/jquery-1.6.js">
</script>
<style>
*{margin:0;padding:0;}
ul{list-style:none outside none}
.fl{float:left;display:inline}
.fr{float:left;display:inline}
    #wrap{width:800px;height:130px;margin:20px auto;position:relative;overflow:hidden}
#con{width:3200px;position:absolute;top:0;left:0;}
#con li{width:800px;height:130px;float:left}
.red{background:red;}
.blue{background:blue;}
.yellow{background:yellow;}
.pink{background:pink;}
#text li{width:150px;float:left;}
#Progress{position:absolute;left:50%;top:2px;width:50px}
#Progress li{float:left;width:6px;height:6px;border:1px solid #ccc;margin-right:3px}
</style>

 </head>

 <body>
    <div id="Progress">
    <ul>
            <li style="background:orange">
            </li>
            <li>
            </li>
            <li>
            </li>
            <li>
            </li>
        </ul>
    </div>
    <div id="before">前进</div>
    <div id="wrap">
        <div id="con">
            <ul>
                <li class="red"></li>
                <li class="blue"></li>
                <li class="yellow"></li>
                <li class="pink"></li>
            </ul>
        </div>
    </div>
    <div id="after">后退</div>
           
    <div id="text">
        <ul>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>


    <script type="text/javascript">

        var dir;
        var i=0;
        var speed = 0;
        var timer = null;
        var num =0;
        var before = document.getElementById("before");
        var after = document.getElementById("after");
        var text = document.getElementById("text");
        function clicks(){
            before.onclick = be;
            after.onclick = ft;
        }
        clicks()
        function be(){
            dir = true;
            move();
        }
        function ft(){
            dir = false;
            move();
        }
        function move(){
            var con = document.getElementById("con");
            var arr = [0,-800,-1600,-2400];
            if(dir == true){
                if(i == arr.length-1){
                    return;
                }
                speed -= 100/5;
                con.style.left = parseInt(speed) + "px";
                   
                if(speed <= arr[i+1]){
                    i++;
                    document.getElementById("Progress").getElementsByTagName("li")[i].style.background = "orange";
                    document.getElementById("Progress").getElementsByTagName("li")[i-1].style.background = "#fff";
                }
                else{
                    clearTimeout(timer);
                    timer = setTimeout("move()",20);
                }
                //document.getElementById("text").getElementsByTagName("li")[0].innerHTML += parseInt(speed) + ":"+con.offsetLeft+arr[i+1]+":"+i+"<br />";
            }

            if(dir == false){
                if(i<1){
                    return;
                }
                //document.getElementById("text").getElementsByTagName("li")[2].innerHTML += parseInt(speed) +":"+con.offsetLeft+":"+arr[i-1]+":"+i +"<br />";
                speed += 100/5;
                con.style.left = parseInt(speed) + "px";
               
                if( parseInt(speed) == arr[i-1]){
                    i--;
                    document.getElementById("Progress").getElementsByTagName("li")[i].style.background = "orange";
                    document.getElementById("Progress").getElementsByTagName("li")[i+1].style.background = "#fff";
                }
                else{
                    clearTimeout(timer);
                    timer = setTimeout("move()",20);
                }
                //document.getElementById("text").getElementsByTagName("li")[1].innerHTML += parseInt(speed) +":"+con.offsetLeft+":"+arr[i-1]+":"+i+ "<br />";
            }
        }
    </script>

 </body>
</html>

posted @ 2011-06-10 10:47  深蓝色梦想  阅读(2861)  评论(4编辑  收藏  举报