js实现li公告栏式上升

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="gb2312" />
        <title></title>       
        <style>
           #scroll {
    margin-left: 10px;
    margin-top: 10px;
    width: 270px;
    height: 120px;
    overflow: hidden;
}

#scroll li {
    width: 270px;
    height: 30px;
    line-height: 30px;
    margin-left: 26px;
}

#scroll li a {
    font-size: 14px;
    color: #333;
    text-decoration: none;
}

#scroll li a:hover {
    color: #66CCFF;
}
        </style>       
    </head>
    <body>
        <div id="scroll">
                    <ul class="list">
                        <li><a href="#">《荒野大镖客》重磅来袭</a></li>
                        <li><a href="#">《星球大战外传》科幻迷不容错过</a></li>
                        <li><a href="#">《野鹅敢死队》重现战场</a></li>
                        <li><a href="#">《九死一生》原始丛林探险</a></li>
                        <li><a href="#">《荒野猎人》莱昂纳多复仇与熊搏斗</a></li>
                    </ul>
                </div>
        <script>
            //document.getElementById()的最简化应用
            function $(element){
                if(arguments.length>1){
                    for(var i=0,length=arguments.length,elements=[];i<length;i++){
                        elements.push($(arguments[i]));
                    }
                    return elements;
                }
                if(typeof element=="string"){
                    return document.getElementById(element);
                }else{
                    return element;
                }
            }
            //类创建函数
            var Class={
                create:function(){
                    return function(){
                        this.initialize.apply(this,arguments);
                    }
                }
            }
            //对象属性方法扩展
            Function.prototype.bind=function(object){
                var method=this;
                return function(){
                    method.apply(object,arguments);
                }
            }
            var Scroll=Class.create();
            Scroll.prototype={
                //第一个参数定义要滚动的区域,第二个参数定义每次滚动的高度
                initialize:function(element,height,delay){
                    this.element=$(element);
                    this.element.innerHTML+=this.element.innerHTML;
                    this.height=height;
                    this.delay=delay*1000;
                    this.maxHeight=this.element.scrollHeight/2;
                    this.counter=0;
                    this.scroll();
                    this.timer="";
                    this.element.onmouseover=this.stop.bind(this);
                    this.element.onmouseout=function(){this.timer=setTimeout(this.scroll.bind(this),1000);}.bind(this);
                },
                scroll:function(){
                    if(this.element.scrollTop<this.maxHeight){
                        this.element.scrollTop++;
                        this.counter++;
                    }else{
                        this.element.scrollTop=0;
                        this.counter=0;
                    }
                     
                    if(this.counter<this.height){
                        this.timer=setTimeout(this.scroll.bind(this),5);
                    }else{
                        this.counter=0;
                        this.timer=setTimeout(this.scroll.bind(this),this.delay);
                    }
                },
                stop:function(){
                    clearTimeout(this.timer);
                }
            }
            new Scroll('a', 22, 2)
        </script>
    </body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值