zoukankan      html  css  js  c++  java
  • 转载:上下左右滚动新闻

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title></title>
        <style>
            .Scroller {
                line-height: 50px;
                border: 1px solid #000000;
                padding: 0px 10px;
                height: 50px;
                width: 400px;
            }
    
                .Scroller * {
                    margin: 0px;
                    padding: 0px;
                }
    
            .ScrollMid {
                float: left;
            }
    
                .ScrollMid ul {
                    width: 800px;
                    float: left;
                }
    
                .ScrollMid li {
                    list-style: none;
                    float: left;
                    width: 390px;
                    padding-left: 10px;
                }
        </style>
    </head>
    <body>
        <script type="text/javascript">
            var $ = function (id) {
                return typeof id == "string" ? 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) {
                    //非IE false:冒泡阶段  true:
                    oTarget.addEventListener(sEventType, fnHandler, false);
                } else if (oTarget.attachEvent) {
                    //IE 冒泡阶段
                    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 = $(idScroller), oScrollMid = $(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.side = 0;//参数
                    this.pause = 0;                        //定高(宽)
                    //用于上下滚动
                    this.heightScroller = parseInt(oScroller.style.height) || oScroller.offsetHeight;
                    this.heightList = oScrollMid.offsetHeight;
    
                    //用于左右滚动
                    this.widthScroller = parseInt(oScroller.style.width) || oScroller.offsetWidth;
                    this.widthList = oScrollMid.offsetWidth;
    
                    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"],//方向
                        PauseHeight: 0,//隔多高停一次
                        PauseWidth: 0,//隔多宽停一次
                        PauseStep: 1000//停顿时间
                    };
                    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);
                },
                //左右滚动
                ScrollLeftRight: function () {
                    this.pause = this.pauseWidth;
                    this.scroller.scrollLeft = this.GetScroll(this.scroller.scrollLeft, this.widthScroller, this.widthList, this.options.PauseWidth);
                    this.pauseWidth = 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 "right":
                            if (this.widthList < this.widthScroller) return;
                            this.side = -1;
                            this.ScrollLeftRight();
                            break;
                        case "left":
                            if (this.widthList < this.widthScroller) return;
                            this.side = 1;
                            this.ScrollLeftRight();
                            break;
                        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("idScroller", "idScrollMid", { Side: ["up", "left"], PauseHeight: 50, PauseWidth: 400 });
            }
        </script>
        <div id="idScroller" class="Scroller" style=" 400px; height: 50px">
            <div style=" 1600px">
                <div id="idScrollMid" class="ScrollMid">
                    <ul>
                        <li>滚动新闻1</li>
                        <li>滚动新闻2</li>
                        <li>滚动新闻3</li>
                        <li>滚动新闻4</li>
                        <li>滚动新闻5</li>
                        <li>滚动新闻6</li>
                    </ul>
                </div>
            </div>
        </div>
    </body>
    </html>

    转载:原文参考:http://www.cnblogs.com/cloudgamer/

  • 相关阅读:
    Go:获取命令行参数
    Go:文件操作
    Go:类型断言
    GO:interface
    Go:面向"对象"
    Go:工厂模式
    layui中流加载layui.flow
    js显示当前时间
    layui中的分页laypage
    layui中的多图上传
  • 原文地址:https://www.cnblogs.com/wzq806341010/p/3142728.html
Copyright © 2011-2022 走看看