zoukankan      html  css  js  c++  java
  • JS_prettyBanner[说给自己听]

    DEMO

    1.准备工作(好的开始[布局]能把后面事情都给简单化)

    <!--
      我把一整块的Banner分成了6快,当然也可以分成更多。
    -->
    <
    div class="imgbox part1"> <div class="img1"></div> <div class="img2"></div> </div>

    2.开始干活

    $.ui.banner = $.Class.creat();
    $.ui.banner.prototype = {
        init:function(){
            this.opat = {
                id:document,
                nodeBe:null,
                nodeAf:null,
                url:[]
                };
            $.Object.extend(this.opat,arguments[0]||{});
            this.fire();
        },
        fire:function(){
            var _this = this,_opat = _this.opat;
            var _id = $(_opat.id);
            var _nodeBe = _this._nodeBe = _id.find(_opat.nodeBe);
            var _nodeAf = _this._nodeAf = _id.find(_opat.nodeAf);
            var _width = _this._width = _nodeBe.innerWidth();
            var _height = _this._height = _nodeBe.innerHeight();
            var _length = _opat.url.length;
            var guid = 0;
            _id.css({"background":"#666"});
            _nodeBe.css({'background-image':'url("'+_opat.url[0]+'")'});
            _nodeAf.css({'background-image':'url("'+_opat.url[1]+'")'});
            setTimeout(function(){
           /*
            主体就是从这里开始的;
            当一个动画切换开始的时候,我们就把整个布局都给重置掉;
            为什么不选择结束的时候重置?
            原因:
              1:我不能确定哪一个方块的动画最后完成;
              2:正常的思路是最后重置,结果写不出,所以只能在开头做手脚;
            动画用的方块重置以后就没难度了,只是动画方式的选择,无论多少种都没关系;
            */ _nodeBe.css({
    'background-image':'url("'+_opat.url[guid]+'")', "opacity":1, "top":0, "left":0, "width":_width+"px", "height":_height+"px" }); guid++; if(guid >= _length) guid = 0; _nodeAf.css({ 'background-image':'url("'+_opat.url[guid]+'")', "opacity":1, "top":0, "left":0, "width":_width+"px", "height":_height+"px" }); _this['changeStyle'+Math.floor(Math.random()*5)](); setTimeout(arguments.callee,3000); },3000); }, changeStyle0:function(){ var _this = this,_opat = _this.opat; var _nodeBe = _this._nodeBe; var _time = 0; _nodeBe.each(function(i,o){ setTimeout(function(){ $(o[i]).animate({opacity:0}) },_time); _time += 50; }) }, changeStyle1:function(){ var _this = this,_opat = _this.opat; var _nodeBe = _this._nodeBe; var _nodeAf = _this._nodeAf; var _width = _this._width; var _height = _this._height; function _animat(o1,o2,k){ _nodeBe.eq(k).animate(o1); _nodeAf.eq(k).animate(o2); } _nodeBe.each(function(i,o){ var style = i%4; switch(style){ case 0: _nodeAf.eq(i).css("left","-"+_width+"px"); _animat({left:_width,ease:"spring"},{left:0,ease:"spring"},i); break; case 1: _nodeAf.eq(i).css("top","-"+_height+"px"); _animat({top:_height,ease:"spring"},{top:0,ease:"spring"},i); break; case 2: _nodeAf.eq(i).css("left",_width+"px"); _animat({left:-_width,ease:"spring"},{left:0,ease:"spring"},i); break; case 3: _nodeAf.eq(i).css("top",_height+"px"); _animat({top:-_height,ease:"spring"},{top:0,ease:"spring"},i); break; } }); }, changeStyle2:function(){ var _this = this,_opat = _this.opat; var _nodeBe = _this._nodeBe; var _nodeAf = _this._nodeAf; _nodeBe.css({"opacity":0}); _nodeAf.css({"opacity":0}); var _time = _nodeBe.length * 50; _nodeAf.each(function(i,o){ setTimeout(function(){ $(o[i]).animate({opacity:1}) },_time); _time -= 50; }) }, changeStyle3:function(){ var _this = this,_opat = _this.opat; var _nodeBe = _this._nodeBe; var _nodeAf = _this._nodeAf; var _height = _this._height; _nodeAf.css({ top:-_height+"px" }) _nodeBe.each(function(i,o){ setTimeout(function(){ _nodeBe.eq(i).animate({ top:_height }); _nodeAf.eq(i).animate({ top:0 }); },parseInt(Math.random()*200)) }) }, changeStyle4:function(){ var _this = this,_opat = _this.opat; var _nodeBe = _this._nodeBe; var _nodeAf = _this._nodeAf; var _width = _this._width; var _height = _this._height; _nodeBe.animate({ 0, height:0, top:_width/2, left:_height/2, "opacity":0 }); } }
    /*
    图片加载函数,这个函数的意思是把所有需要加载的图片加载完成后在执行回调;
    */
    new $.Imageload({ url:['http://pic002.cnblogs.com/images/2012/319713/2012103021492628.jpg', 'http://pic002.cnblogs.com/images/2012/319713/2012103021500686.jpg', 'http://pic002.cnblogs.com/images/2012/319713/2012103021504340.jpg', 'http://pic002.cnblogs.com/images/2012/319713/2012103021511080.jpg'], callback:function(url){ new $.ui.banner({ id:"#banner", nodeBe:".img1", nodeAf:".img2", url:url }); } })

    DEMO

  • 相关阅读:
    CodeSmith 破解
    overflow 及其属性
    Override any CSS style (even inline styles) no matter where it is defined
    CSS驱动的下拉菜单
    对zindex的重新学习
    Eeic Meyer on CSS 之 文字排列成曲线
    Eeic Meyer on CSS 之 背景半透明效果
    background背景窍门
    CSS实现网页图片预加载
    meta 标签举例
  • 原文地址:https://www.cnblogs.com/somesayss/p/2916959.html
Copyright © 2011-2022 走看看