zoukankan      html  css  js  c++  java
  • 兼容各种浏览器的上下滚动代码

    直接切入正题

    红色的表示为要注意统一的。

    蓝色是表示要更改的。

    内容高度一定要大于box1的高度否则不会滚动,本框架用的是phpcms,大家可根据自己的框架更改循环。

    演示地址http://www.er-china.com/index.php?m=content&c=index&a=lists&catid=789

    <script type="text/javascript">
    var $1 = function (id) {
        return "string" == typeof id ? document.getElementById(id) : id;
    };

    var Class = {
      create: function() {
        return function() {
          this.initialize.apply(this, arguments);
        }
      }
    }

    Object.extend = function(destination, source) {
        for (var property in source) {
            destination[property] = source[property];
        }
        return destination;
    }

    function addEventHandler(oTarget, sEventType, fnHandler) {
        if (oTarget.addEventListener) {
            oTarget.addEventListener(sEventType, fnHandler, false);
        } else if (oTarget.attachEvent) {
            oTarget.attachEvent("on" + sEventType, fnHandler);
        } else {
            oTarget["on" + sEventType] = fnHandler;
        }
    };


    var Scroller = Class.create();
    Scroller.prototype = {
      initialize: function(idScroller, idScrollMid, options) {
        var oThis = this, oScroller = $1(idScroller), oScrollMid = $1(idScrollMid);
       
        this.SetOptions(options);
        this.Side = this.options.Side || ["up"];//方向
        this.scroller = oScroller;            //对象
        this.speed = this.options.Speed;    //速度
        this.timer = null;                    //时间
        this.pauseHeight = 0;                //定高
        this.pauseWidth = 0;                //定宽
        this.pause = 0;                        //定高(宽)
        this.side = 0;                        //参数
       
        //用于上下滚动
        this.heightScroller = parseInt(oScroller.style.height) || oScroller.offsetHeight;
        this.heightList = oScrollMid.offsetHeight;
       
     
     
        //js取不到css设置的height和width
       
        oScroller.style.overflow = "hidden";
        oScrollMid.appendChild(oScrollMid.cloneNode(true));
        oScrollMid.appendChild(oScrollMid.cloneNode(true));
       
        addEventHandler(oScroller, "mouseover", function() { oThis.Stop(); });
        addEventHandler(oScroller, "mouseout", function() { oThis.Start(); });
       
        this.Start();
      },
      //设置默认属性
      SetOptions: function(options) {
        this.options = {//默认值
          Step:            1,//每次变化的px量
          Speed:        20,//速度(越大越慢)
          Side:            ["up"],//滚动方向:"up"是上,"down"是下,"left"是左,"right"是右
          PauseHeight:    0,//隔多高停一次
          PauseWidth:    0,//隔多宽停一次
          //当上下和左右一起使用时必须设置PauseHeight和PauseWidth来设置转向位置
          PauseStep:    0//停顿时间(PauseHeight或PauseWidth大于0该参数才有效)
        };
        Object.extend(this.options, options || {});
      },
      //转向
      Turn: function() {
        //通过设置方向数组的排列来转向
        this.Side.push(this.Side.shift().toLowerCase());
      },
      //上下滚动
      ScrollUpDown: function() {
        this.pause = this.pauseHeight;
        this.scroller.scrollTop = this.GetScroll(this.scroller.scrollTop, this.heightScroller, this.heightList, this.options.PauseHeight);
        this.pauseHeight = this.pause;
       
        var oThis = this;
        this.timer = window.setTimeout(function(){ oThis.Start(); }, this.speed);
      },

     
      //获取设置滚动数据
      GetScroll: function(iScroll, iScroller, iList, iPause) {
        var iStep = this.options.Step * this.side;
       
        if(this.side > 0){
            if(iScroll >= (iList * 2 - iScroller)){ iScroll -= iList; }
        } else {
            if(iScroll <= 0){ iScroll += iList; }
        }
       
        this.speed = this.options.Speed;
        if(iPause > 0){
            if(Math.abs(this.pause) >= iPause){
                this.speed = this.options.PauseStep; this.pause = iStep = 0; this.Turn();
            } else {
                this.pause += iStep;
            }
        }
       
        return (iScroll + iStep);
      },
      //开始
      Start: function() {   
        //方向设置
        switch (this.Side[0].toLowerCase()) {


            case "down" :
                if(this.heightList < this.heightScroller) return;
                this.side = -1;
                this.ScrollUpDown();
                break;
            case "up" :
            default :
                if(this.heightList < this.heightScroller) return;
                this.side = 1;
                this.ScrollUpDown();
        }
      },
      //停止
      Stop: function() {
        clearTimeout(this.timer);
      }
    };

    window.onload = function(){
        new Scroller("zsbox", "box1",{ Side:["up","left"], PauseHeight:50, PauseWidth:400 });
    }
    </script>

    <div id="zsbox"  style="700px; height:288px; overflow:hidden;">
         <div id="box1" >
       <table width="100%" border="0" cellspacing="0" cellpadding="0">
       <tr>
       <?php $i=0;?>
       {pc:content action="lists" catid="819" start="0" thumb="1" num="40" order="id asc,listorder asc,updatetime desc"}
       {loop $data $v}
       <td width="19%" align="center">
            <dl class="qyzs">
           <dt style="border-bottom:#319482 1px solid; border-right:#319482 1px dashed; text-align:center;"><a href="{$v[url]}" title={$v[title]} target="_blank"><img src="{thumb($v[thumb],140,65)}" style="140px;height:65px" /></a></dt>
           </dl>
       </td>
       {if $n%4==0}</tr><tr>{/if}
       <?php $i++?>
       {/loop}
       {/pc}   
       <?php
        //虚位以待
        $ii=(4-$i%4) ;
        for($y=0;$y<$ii;$y++){ ?>
        <td width="19%" align="center">
            <dl class="qyzs">
           <dt style="border-bottom:#319482 1px solid; border-right:#319482 1px dashed; text-align:center;"><a href="#" title="虚位以待" target="_blank"><img src="http://www.er-china.com/uploadfile/2013/0730/20130730100812717.jpg" style="140px;height:65px" /></a></dt>
           </dl>
        </td>
        
       <?php 
        }
       
       ?>
       </tr>
       
       </table>   
          </div>
      
          <div id="box2"></div>
      <!-- <img src="/tpl/03wrcd/zhanlan/img/zhanlan0.gif">-->
        </div>

  • 相关阅读:
    力扣(LeetCode)922. 按奇偶排序数组 II
    力扣(LeetCode)1002. 查找常用字符
    力扣(LeetCode)15. 三数之和
    Java == 和 equals 区别
    力扣(LeetCode)125. 验证回文串
    力扣(LeetCode) 905. 按奇偶排序数组
    力扣(LeetCode)832. 翻转图像
    力扣(LeetCode) 771. 宝石与石头
    Sticks
    荷马史诗
  • 原文地址:https://www.cnblogs.com/hshanghai/p/3412423.html
Copyright © 2011-2022 走看看