javascript 原生 左右滚动

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>javascript 原生 左右滚动</title>
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<style type="text/css">

*{ padding:0; margin:0}
body{overflow: hidden;}
.wrap{position: relative;width: 300px;height: 200px;margin: 30px auto;overflow: hidden;}
.wrap  .btn {position: absolute;z-index: 10;right: 10px;bottom: 10px}
.wrap  .btn li{list-style: none;height: 10px;width: 10px;border-radius: 5px;background: #000;margin: 0 5px;float: left;}
.wrap  .btn li.on{background: #fff}
.wrap .con li{ float: left;width: 300px;height: 200px;position: relative; list-style: none;line-height: 200px;font-size: 50px;text-align:center;color: #fff}
.wrap ul{width: 1500px}
.next{position: absolute;font-size: 30px;right: 10px;top: 90px;cursor: pointer;}
.prev{position: absolute;font-size: 30px;left: 10px;top: 90px;cursor: pointer;}
</style>
</head>

<body>
<div class="wrap" id="box">
    <ul class="con" >
        <li style="background:red" class="en">1</li>
        <li  style="background:#ccc;">2</li>
        <li  style="background:blue;">3</li>
        <li  style="background:#ccc;">4</li>
        <li  style="background:blue;">5</li>        
    </ul>
    <div class="next">></div>
    <div class="prev"><</div>
</div>
<script type="text/javascript">
    /*
        times :  2013 - 7 - 12 ;
        form :   enen
    */ 
      var Slide = function(options){
        var _that = this;
        this.timer = "";
        this.curr= 0;
        this.boxID = this.getId(options.id);
        this.next= this.getClassName("next",this.boxID)[0] ;
        this.prev = this.getClassName("prev",this.boxID)[0] ;
        this.scrollBox = this.getClassName("con",this.boxID)[0];
        this.init(); 
    };
    Slide.prototype = {
        init : function(){
            this.btnNext();
            this.btnPrev();
        },
        btnNext : function(){
            var _that = this;
           this.next.onclick = function(){
                if(_that.curr < 4){
                    _that.curr++;
                    var w = -300*(_that.curr);
                   _that.move(_that.scrollBox,{marginLeft:w}) 
                } 
            }           
        },
        btnPrev : function(){
            var _that = this;
            this.prev.onclick = function(){
                 if(_that.curr > 0){
                    _that.curr--;
                    var w = -300*(_that.curr);
                   _that.move(_that.scrollBox,{marginLeft:w}) 
                };
            }           
        },
        move : function(ele,json,fn){ //json 参数是个对象
            var _that = this;
            clearInterval(this.timer);
            this.timer = setInterval(function(){
                        var bBtn = true;
                        for(var attr in json){
                            
                            var iCur = 0;
                            if( attr == 'opacity'){
                                iCur = Math.round(_that.getStyle(ele,attr)*100);//四舍五入
                            }
                            else{
                                iCur = parseInt(_that.getStyle(ele,attr));//字符串转化为整数
                            }
                            
                            var iSpeed = (json[attr] - iCur)/7;
                            iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);//Math.ceil()向上取舍 12.7 或 12。3 》13;/Math.floor()向下取舍
                            
                            if(iCur != json[attr]){
                                bBtn = false;
                            }
                            
                            if(attr == 'opacity'){
                                ele.style.filter = 'alpha(opacity='+ (iCur+iSpeed) +')';
                                ele.style.opacity = (iCur+iSpeed)/100;
                            }
                            else{
                                ele.style[attr] = iCur + iSpeed + 'px';
                            }
                            
                        }
                        if(bBtn){
                            clearInterval(ele.timer);
                            if(fn){
                                fn.call(ele);
                            }
                        }
                
            },20);           
        },
        getId :function(id){ //获取ID
            return document.getElementById(id);
        },
        getStyle:function(ele,value) 
        {
            return ele.currentStyle?ele.currentStyle[value]:getComputedStyle(ele,null)[value];  //currentStyle属性 判断浏览器是ie 的时候,返回第一个值,其它浏览器就用getComputedStyle属性返回元素的值
        },
        getClassName : function(className,oParent){ //获取class 元素
            var parent = oParent || document;
            var aEles = parent.getElementsByTagName('*');
            var arr = [];
            for(var i=0; i<aEles.length; i++){
                var aClass = aEles[i].className.split(' ');
                for(var j=0; j<aClass.length; j++){
                    if(aClass[j] == className){
                        arr.push(aEles[i]);
                    }   
                } 
            }
            return arr;    
        }
    }
    new Slide({id:"box"})
</script>
</body>
</html>

 

posted @ 2013-07-12 12:51  -恩恩-  阅读(508)  评论(0编辑  收藏  举报