zoukankan      html  css  js  c++  java
  • 纯Js ——文字上下左右滚动

    ScrollBaseJs.js

    var $$ = function (id) {
        return typeof id == 'string' ? document.getElementById(id) : id;
    };
    
    Object.extend = function (destination, sourse) {
        for (var item in sourse) {
            destination[item] = sourse[item];
        }
        return destination;
    };
    
    var Class = {
        create: function () {
            return function () {
                this.initialize.apply(this, arguments);
            }
        }
    }
    
    
    var CurrentStyle = function (element) {
        return element.currentStyle || document.defaultView.getComputedStyle(element, null);
    }
    
    //容器对象,滑块对象,参数
    var ScrollCon = Class.create();
    
    ScrollCon.prototype = {
        //构造函数
        initialize: function (area, bar, itag, options, ibarTgNum) {
            this._area = $$(area);
            this._bar = $$(bar);
            this._time = null;
            this._barTgNum = $$(ibarTgNum);
            this.SetOption(options);
            this._step = this._options.step; //改变量
            this._pause = this._options.pause;
            this._speed = this._options.speed;
            this._mgSide = this._options.side == "up" ? "marginTop" : "marginLeft";
            this._index = 0; //滚动索引
            this._tagIndex = 1; //滚动子项索引
            this._bar.appendChild(this._bar.cloneNode(true));
            this._barTagNum = this._bar.getElementsByTagName(itag).length;
            this.barH = this._bar.style.height || this._bar.offsetHeight;
            this.areaH = this._area.style.height || this._area.offsetHeight;
            this.areaW = this._area.style.width || this._bar.offsetWidth;
            this.barW = this._bar.style.width || this._bar.offsetWidth;
            this._bar.style[this._mgSide] = "0px";
            this.BindNumHtml();
            //添加样式
    
    
            // this.Auto();
        },
        //参数初始化
        SetOption: function (options) {
            //默认参数
            this._options = {
                step: 1, //改变量,
                side: "up",
                pause: 50, //隔多高停一次
                speed: 20, //滚动速度
                pauseStep: 1500//滚动停留时间
            };
            Object.extend(this._options, options || {});
    
        },
        EditMargin: function () {  //改变滚动条属性
            oThis = this;
            var Step = this._step;
            this._speed = this._options.speed;
            if (this._index >= this._pause) {  //判断是否到了停顿的时候
                this._index = Step = 0;  //索引,滚动改变量设为0
                this._speed = this._options.pauseStep;   //滚动速度设为滚动停留时间
                this._tagIndex++;
            } else {
                this._index += Step;
            }
            var margin = Math.abs(parseInt(oThis._bar.style[this._mgSide]));
            this._bar.style[this._mgSide] = -(margin + Step) + "px";
            if (margin + Step >= (this._barTagNum - 1) * this._pause) {
                //  将滚动距离跳到滚动条复制前的最后一个标签
                this._bar.style[this._mgSide] = -(this._barTagNum / 2 - 1) * this._pause + "px";
                this._tagIndex = this._barTagNum / 2;   //直接赋值:即将要跳转的值为滚动条复制“值” 的第一个标签
            }
    
            oThis.Write(this.barW);
        },
        //获得偏移距离
        GetMargin: function () {
            return this._bar.style[this._mgSide];
        },
        Auto: function () {//自动滚动
            oThis = this; oThis.EditMargin();
            oThis.Re();
    
    
    
        },
        MoveTo: function (index) {
            oThis = this;
            this._index = 0;
            this._tagIndex = index;
            this._speed = 1000;
            oThis._bar.style[this._mgSide] = -index * this._pause + "px";
            oThis.Re();
            oThis.Write();
        },
        Move: function () {
            oThis = this;
            oThis.EditMargin();
            this._time = setTimeout(function () {
                oThis.Start();
            }, this._speed);
        },
        Start: function () {
            oThis = this;
            oThis.EditMargin();
        },
        Next: function () {
            oThis = this;
            this._index = 0;
            this._speed = 1000;
            this._tagIndex == 0 ? 1 : this._tagIndex;
            this._tagIndex++;
            var margin = this._tagIndex * this._pause;
            if (this._tagIndex >= this._barTagNum) {
                this._tagIndex = 0;
                margin = 0;
            }
            oThis._bar.style[this._mgSide] = -margin + "px";
            oThis.Re();
            oThis.Write(this._tagIndex);
        },
        Re: function () {
            oThis = this;
            clearTimeout(this._time);
            this._time = setTimeout(function () {
                oThis.Auto();
            }, this._speed);
            oThis.Write(this._tagIndex);
        },
        Pre: function () {
            oThis = this;
            var margin = Math.abs(parseInt(oThis._bar.style[this._mgSide])) - this._pause;
            if (margin == -this._pause) {
                margin = 0;
            }
            oThis._bar.style[this._mgSide] = -margin + "px";
            oThis.Re();
        },
        BindNumHtml: function () {
            oThis = this;
            for (var i = 1; i <= oThis._barTagNum / 2; SetHTML(i++)) { }
            function SetHTML(z) {
                var barNum = oThis._barTgNum.appendChild(document.createElement("li"));
                barNum.onclick = function () {
                    oThis._bar.style.marginTop = oThis.MoveTo(z);
                }
                barNum.innerHTML = z--;
                barNum.style.cursor = "pointer";
                barNum.style.listStyle = "none";
                barNum.style.float = "left";
                barNum.style.paddingLeft = "5px";
            }
        },
        Write: function (value) {
            oThis = this;
            var strHtml = '<div style="border:red solid 1px;200px;float:left;">';
            strHtml += '<br>滚动区域高度:' + oThis.areaH;
            strHtml += '<br>滚动对象高度:' + oThis.barH;
            strHtml += '<br>滚动条距离:' + oThis.GetMargin();
            strHtml += '<br>oThis._index:' + oThis._index;
            strHtml += '<br>this._step:' + this._step;
            strHtml += '<br>_tagIndex:' + oThis._tagIndex;
            strHtml += '<br>_barTagNum:' + oThis._barTagNum;
            strHtml += '<br>value:' + value;
            strHtml += "</div>";
            $$("divWrite").innerHTML = strHtml;
    
        }
    }

    Scroll_8_31.htm:

    <!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">
            .con
            {
                width: 400px;
                height: 50px;
                border: solid 1px #000000;
                line-height: 50px;
                padding: 0px 10px;
                overflow: hidden;
            }
            .con *
            {
                margin: 0px;
                padding: 0px;
            }
            .conList
            {
                padding: 0px;
                width: 5000px;
            }
            
            .conList li
            {
                float: left;
                width: 390px;
                list-style: none;
                padding-left: 10px;
            }
        </style>
    </head>
    <body>
        <div id="divCon" class="con">
            <ul id="divConList" class="conList" style="">
                <li>热点新闻1</li>
                <li>热点新闻2</li>
                <li>热点新闻3</li>
                <li>热点新闻4</li>
                <li>热点新闻5</li>
                <li>热点新闻6</li>
            </ul>
        </div>
        <span></span>
        <ul id="barNum" style="float: left; border: red solid 1px; text-align: left">
        </ul>
        <input type="button" value="上一个" onclick="a.Pre()" />
        <input type="button" value="下一个" onclick="a.Next()" />
        <input type="button" value="自动" onclick="a.Auto()" />
        <input type="button" value="重启" onclick="a.Re()" />
        <div id="divWrite">
        </div>
    </body>
    </html>
    <script src="ScrollBaseJs.js" type="text/javascript"></script>
    <script type="text/javascript">
        window.onload = function () {
            window.a = new ScrollCon("divCon", "divConList", "li"
            , { speed: 10, pause: 400, pauseStep: 500, side: "left" }, "barNum");
        }
    </script>
  • 相关阅读:
    css基础--Display(显示) and Visibility(可见性)and position (定位)
    css3基础--Margin(外边距)&&padding(外边距)
    前端求职-js
    前端求职-html&css
    css基础3--box module&Border
    css基础-font&link&list属性
    值得学习的PHP
    c++构造函数浅析
    变量定义原则
    函数
  • 原文地址:https://www.cnblogs.com/wzq806341010/p/3346434.html
Copyright © 2011-2022 走看看