zoukankan      html  css  js  c++  java
  • 文章滚动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <style type="text/css">
            .Scroller
            {
                width: 400px;
                height: 50px;
                border: solid 1px #000000;
                line-height: 50px;
                padding: 0px 10px;
            }
            .Scroller *
            {
                margin: 0px;
                padding: 0px;
            }
            .ScrollMid
            {
                float: left;
            }
            .ScrollMid ul
            {
                width: 800px;
                float: left;
            }
            .ScrollMid li
            {
                float: left;
                width: 390px;
                list-style: none;
                padding-left: 10px;
            }
        </style>
    </head>
    <body>
        <div id="idScrollerDiv" class="Scroller">
            <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>
        <div id="writeDiv" style="word-wrap: break-word;  1000px">
        </div>
    </body>
    </html>
    <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) {
                oTarget.addEventListener(sEventType, fnHandler, false);
            }
            else if (oTarget.attachEvent) {
                oTarget.attachEvent("on" + sEventType, fnHandler);
            }
            else {
                oTarget["on" + sEventType] = fnHandler;
            }
        }
    
        //通过调用类的方法创建类
        var Scroller = Class.create();
        //通过prototype属性为已有的类定义新方法
        Scroller.prototype = {
            //构造函数
            initialize: function (idScrollerDiv, idScrollList, options) {
                var oThis = this, oScrollerDiv = $(idScrollerDiv), oScrollList = $(idScrollList); //oScrollerDiv:滚动区域,oScrollList:滚动列表
                this.SetOptions(options); //滚动参数赋值
                this.Side = this.options.Side || ["up"]; //方向
                this.scrollerDiv = oScrollerDiv; //滚动区域对象
                this.speed = this.options.Speed; //速度
                this.timer = null; //时间
                this.pauseHeight = 0; //定高(隔多高滚动一次)
                this.pauseWidth = 0; //定宽(隔多宽滚动一次)
                this.pause = 0; //定高(宽)
                this.side = 0; //参数
    
                //滚动条距离
                //用于上下滚动
                this.heightScrollerDiv = parseInt(oScrollerDiv.style.height) || oScrollerDiv.offsetHeight; //滚动区域的高度
                this.heightList = oScrollList.offsetHeight; //滚动列表的高度
    
                //用于左右滚动
                this.widthScrollerDiv = parseInt(oScrollerDiv.style.width) || oScrollerDiv.offsetWidth; //滚动区域的宽度
                this.widthList = oScrollList.offsetWidth; //滚动列表的宽度
    
                //设置滚动区域滚动条样式
                oScrollerDiv.style.overflow = "hidden";
                oScrollList.appendChild(oScrollList.cloneNode(true));
                oScrollList.appendChild(oScrollList.cloneNode(true));
    
                //绑定事件
                addEventHandler(oScrollerDiv, "mouseover", function () { oThis.Stop(); });
                addEventHandler(oScrollerDiv, "mouseout", function () { oThis.Start(); });
    
                this.Start();
            },
            //参数赋值
            SetOptions: function (options) {
                this.options = {
                    Step: 1, //每次滚动Px值
                    Speed: 20, //滚动停留时间
                    Side: ["up"], //方向
                    PauseHeight: 0, //各多高滚动一次
                    PauseWidth: 0, //隔多宽滚动一次
                    PauseStep: 1000//停顿时间(PauseHeight或PauseWidth大于0该参数才有效)
                }
                Object.extend(this.options, options || {});
            },
            //上下滚动
            ScrollUpDown: function () {
                this.pause = this.pauseHeight;
                //通过修改滚动区域的滚动条高度实现滚动效果(参数:滚动区域的滚动条距离,滚动区域的高度,滚动列表,滚动参数(隔多高滚动一次))
                this.scrollerDiv.scrollTop = this.GetScroll(this.scrollerDiv.scrollTop, this.heightScrollerDiv, this.heightList, this.options.PauseHeight);
                this.pauseHeight = this.pause;
                oThis = this;
                this.timer = window.setTimeout(function () { oThis.Start(); }, this.speed);
            },
            //左右滚动
            ScrollLeftRight: function () {
                this.pause = this.pauseWidth;
                this.scrollerDiv.scrollLeft = this.GetScroll(this.scrollerDiv.scrollLeft, this.widthScrollerDiv, this.widthList, this.options.PauseWidth);
                this.pauseWidth = this.pause;
                oThis = this;
                this.timer = window.setTimeout(function () { oThis.Start(); }, this.speed);
            },
            //调转方向
            Turn: function () {
                this.Side.push(this.Side.shift().toLowerCase());
            },
            //获取滚动数据(scrollDistance:滚动条距离,scrollDivDistance:滚动区域高度、宽度,pauseDistance:隔多宽(高)滚动一次)
            GetScroll: function (scrollDistance, scrollDivDistance, listDistance, pauseDistance) {
                //滚动变化量*方向(1、-1)
                var iStep = this.options.Step * this.side;
                //正方向
                if (this.side > 0) {
                    //listDistance * 2(因为chonNode()方法将滚动列表复制了两遍)
                    if (scrollDistance >= (listDistance * 2 - scrollDivDistance)) {
                        scrollDistance -= listDistance;
                    }
                } else {
                    if (scrollDistance <= 0) { scrollDistance += listDistance; }
                }
    
                //重新赋值
                this.speed = this.options.Speed;
                if (pauseDistance > 0) {
                    if (Math.abs(this.pause) >= pauseDistance) {
                        this.speed = this.options.PauseStep; this.pause = iStep = 0; this.Turn();
                    } else {
                        this.pause += iStep;
                    }
                }
                return (scrollDistance + iStep); //滚动距离+1 递增
            },
            //开始滚动
            Start: function () {
                //方向设置
                switch (this.Side[0].toLowerCase()) {
                    case "right":
                        if (this.widthList < this.widthScrollerDiv) return;
                        this.side = -1;
                        this.ScrollLeftRight();
                        break;
                    case "left":
                        if (this.widthList < this.widthScrollerDiv) return;
                        this.side = 1;
                        this.ScrollLeftRight();
                        break;
                    case "down":
                        if (this.heightList < this.heightScrollerDiv) return;
                        this.side = -1;
                        this.ScrollUpDown();
                        break;
                    case "up":
                    default:
                        if (this.heightList < this.heightScrollerDiv) return;
                        this.side = 1;
                        this.ScrollUpDown();
                }
            },
            //停止滚动
            Stop: function () {
                clearTimeout(this.timer);
            }
        };
    
        window.onload = function () {
            new Scroller("idScrollerDiv", "idScrollMid", { Side: ["up", "left"], PauseHeight: 50, PauseWidth: 400 });
        }
    
        function wr(text, bo) {
            if (bo) {
                $("writeDiv").innerHTML += "_" + text;
            } else {
                $("writeDiv").innerHTML = "_" + text;
            }
        };
    </script>
    <script>
        var array = ['1', '2'];
        alert(array.forEach);
    </script>
  • 相关阅读:
    2.8
    2.7
    2.6
    2.5
    2.4第三篇读后感
    2.2第一篇读后感
    2.1
    字符统计
    6468: Snuke's Coloring
    6463: Tak and Hotels II
  • 原文地址:https://www.cnblogs.com/wzq806341010/p/3212647.html
Copyright © 2011-2022 走看看