zoukankan      html  css  js  c++  java
  • 图片切换效果展示

    完成后如上图所示

    <link href="../Styles/Web/PhotoCss.css" rel="stylesheet" type="text/css" />  
    <script src="/Scripts/Web/Photo.js" type="text/javascript"></script>
    <script type="text/javascript" src="/Scripts/Web/PhotoRun.js"></script>

    在head下引入上面三个文件,这三部分文件代码如下,相应目录自已修改

    PhotoCss.css

    .container{290px; height:224px; border:0px;}
     .container img{290px; height:197px;}
    
    .container img{border:0;}
    .num{ position:absolute; right:5px; bottom:4px;}
    .num li{
            float: left;
            list-style:none;
            color: #fff;
            text-align: center;
            line-height: 17px;
             17px;
            height: 17px;
            font-family: Arial;
            font-size: 12px;
            cursor: pointer;
            margin: 1px;
            font-weight:bold;
            background-color:#AF291D;
    
    }
    .num li.on{
            line-height: 17px;
             17px;
            font-weight:bold;
            height: 17px;
            font-size: 12px;
            border: 0;
            background-color:  #AF941D ;
            font-weight: bold;
    }
    Photo.js 这个JS代码完全不用动,也不用去完全理解,稍微读懂就行

    var photo= function (id) {
        return "string" == typeof id ? document.getElementById(id) : id;
    };
    var Extend = function (destination, source) {
        for (var property in source) {
            destination[property] = source[property];
        }
        return destination;
    }
    var CurrentStyle = function (element) {
        return element.currentStyle || document.defaultView.getComputedStyle(element, null);
    }
    var Bind = function (object, fun) {
        var args = Array.prototype.slice.call(arguments).slice(2);
        return function () {
            return fun.apply(object, args.concat(Array.prototype.slice.call(arguments)));
        }
    }
    var Tween = {
        Quart: {
            easeOut: function (t, b, c, d) {
                return -c * ((t = t / d - 1) * t * t * t - 1) + b;
            }
        },
        Back: {
            easeOut: function (t, b, c, d, s) {
                if (s == undefined) s = 1.70158;
                return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
            }
        },
        Bounce: {
            easeOut: function (t, b, c, d) {
                if ((t /= d) < (1 / 2.75)) {
                    return c * (7.5625 * t * t) + b;
                } else if (t < (2 / 2.75)) {
                    return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
                } else if (t < (2.5 / 2.75)) {
                    return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
                } else {
                    return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
                }
            }
        }
    }
    //容器对象,滑动对象,切换数量
    var SlideTrans = function (container, slider, count, options) {
        this._slider = photo(slider);
        this._container = photo(container); //容器对象
        this._timer = null; //定时器
        this._count = Math.abs(count); //切换数量
        this._target = 0; //目标值
        this._t = this._b = this._c = 0; //tween参数
    
        this.Index = 0; //当前索引
    
        this.SetOptions(options);
    
        this.Auto = !!this.options.Auto;
        this.Duration = Math.abs(this.options.Duration);
        this.Time = Math.abs(this.options.Time);
        this.Pause = Math.abs(this.options.Pause);
        this.Tween = this.options.Tween;
        this.onStart = this.options.onStart;
        this.onFinish = this.options.onFinish;
    
        var bVertical = !!this.options.Vertical;
        this._css = bVertical ? "top" : "left"; //方向
    
        //样式设置
        var p = CurrentStyle(this._container).position;
        p == "relative" || p == "absolute" || (this._container.style.position = "relative");
        this._container.style.overflow = "hidden";
        this._slider.style.position = "absolute";
    
        this.Change = this.options.Change ? this.options.Change :
                    this._slider[bVertical ? "offsetHeight" : "offsetWidth"] / this._count;
    };
    SlideTrans.prototype = {
        //设置默认属性
        SetOptions: function (options) {
            this.options = {//默认值
                Vertical: true, //是否垂直方向(方向不能改)
                Auto: true, //是否自动
                Change: 0, //改变量
                Duration: 50, //滑动持续时间
                Time: 10, //滑动延时
                Pause: 2000, //停顿时间(Auto为true时有效)
                onStart: function () { }, //开始转换时执行
                onFinish: function () { }, //完成转换时执行
                Tween: Tween.Quart.easeOut//tween算子
            };
            Extend(this.options, options || {});
        },
        //开始切换
        Run: function (index) {
            //修正index
            index == undefined && (index = this.Index);
            index < 0 && (index = this._count - 1) || index >= this._count && (index = 0);
            //设置参数
            this._target = -Math.abs(this.Change) * (this.Index = index);
            this._t = 0;
            this._b = parseInt(CurrentStyle(this._slider)[this.options.Vertical ? "top" : "left"]);
            this._c = this._target - this._b;
    
            this.onStart();
            this.Move();
        },
        //移动
        Move: function () {
            clearTimeout(this._timer);
            //未到达目标继续移动否则进行下一次滑动
            if (this._c && this._t < this.Duration) {
                this.MoveTo(Math.round(this.Tween(this._t++, this._b, this._c, this.Duration)));
                this._timer = setTimeout(Bind(this, this.Move), this.Time);
            } else {
                this.MoveTo(this._target);
                this.Auto && (this._timer = setTimeout(Bind(this, this.Next), this.Pause));
            }
        },
        //移动到
        MoveTo: function (i) {
            this._slider.style[this._css] = i + "px";
        },
        //下一个
        Next: function () {
            this.Run(++this.Index);
        },
        //上一个
        Previous: function () {
            this.Run(--this.Index);
        },
        //停止
        Stop: function () {
            clearTimeout(this._timer); this.MoveTo(this._target);
        }
    };
    PhotoRun.js 这是需要我们来设置的一个JS我们唯一要修改的只有一个要显示几个图片的参数
    //alert(document.getElementById('PictureNum').value);
    function RunPic(i) {
        //var i = 4
        var forEach = function (array, callback, thisObject) {
            if (array.forEach) {
                array.forEach(callback, thisObject);
            } else {
                for (var i = 0, len = array.length; i < len; i++) { callback.call(thisObject, array[i], i, array); }
            }
        }
        var st = new SlideTrans("idContainer2", "idSlider2", i, { Vertical: false });
        var nums = [];
        //插入数字
        for (var i = 0, n = st._count - 1; i <= n; ) {
            (nums[i] = photo("idNum").appendChild(document.createElement("li"))).innerHTML = ++i;
        }
        forEach(nums, function (o, i) {
            o.onmouseover = function () { o.className = "on"; st.Auto = false; st.Run(i); }
            o.onmouseout = function () { o.className = ""; st.Auto = true; st.Run(); }
        })
        //设置按钮样式
        st.onStart = function () {
            forEach(nums, function (o, i) { o.className = st.Index == i ? "on" : ""; })
        }
        st.Run();
    }

    html的页面代码如下其中DIV的ID UL修改则上述参数也要修改

     <div class="container" id="idContainer2">
                    <table id="idSlider2" border="0" cellpadding="0" cellspacing="0">
                        <tr>
                            <asp:Label ID="ImagesPart" runat="server" Text="Label"></asp:Label>
                        </tr>
                    </table>
                    <ul class="num" id="idNum">
                    </ul>
                </div>
     <script type="text/javascript">
            RunPic(<%=PhotoCount()%>);
     </script> 

    上述RunPic方法参数通过JS调用后台来获得

    后台方法如下

            public int PhotoCount()
            {
                    return 一个值
            }

    按上面步骤一个个来,你将会得到一个图片切换效果的一块DIV区域

  • 相关阅读:
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & ManacherK
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher J
    [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher I
    pat 1065 A+B and C (64bit)(20 分)(大数, Java)
    pat 1069 The Black Hole of Numbers(20 分)
    pat 1077 Kuchiguse(20 分) (字典树)
    pat 1084 Broken Keyboard(20 分)
    pat 1092 To Buy or Not to Buy(20 分)
    pat 1046 Shortest Distance(20 分) (线段树)
    pat 1042 Shuffling Machine(20 分)
  • 原文地址:https://www.cnblogs.com/akingyao/p/2683056.html
Copyright © 2011-2022 走看看