📄 photobox.js
字号:
/** Copyright (c) 2006, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.net/yui/license.txt * @class * Panel is an implementation of Overlay that behaves like an OS window, with a draggable header and an optional close icon at the top right. * @param {string} el The element ID representing the Panel <em>OR</em> * @param {Element} el The element representing the Panel * @param {object} userConfig The configuration object literal containing the configuration that should be set for this Panel. See configuration documentation for more details. * @constructor */YAHOO.widget.PhotoBox=function(el,userConfig){if(arguments.length>0){YAHOO.widget.PhotoBox.superclass.constructor.call(this,el,userConfig);}}YAHOO.widget.PhotoBox.prototype=new YAHOO.widget.Panel();YAHOO.widget.PhotoBox.prototype.constructor=YAHOO.widget.PhotoBox;YAHOO.widget.PhotoBox.superclass=YAHOO.widget.Panel.prototype;YAHOO.widget.PhotoBox.CSS_PHOTOBOX="photobox";YAHOO.widget.PhotoBox.NAV_FOOTER_HTML="<a id=\"$back.id\" href=\"javascript:void(null)\" class=\"back\"><img src=\"img/ybox-back.gif\" /></a><a id=\"$next.id\" href=\"javascript:void(null)\" class=\"next\"><img src=\"img/ybox-next.gif\" /></a>";YAHOO.widget.PhotoBox.prototype.init=function(el,userConfig){YAHOO.widget.PhotoBox.superclass.init.call(this,el);this.beforeInitEvent.fire(YAHOO.widget.PhotoBox);YAHOO.util.Dom.addClass(this.innerElement,YAHOO.widget.PhotoBox.CSS_PHOTOBOX);if(userConfig){this.cfg.applyConfig(userConfig,true);}this.setFooter(YAHOO.widget.PhotoBox.NAV_FOOTER_HTML.replace("$back.id",this.id+"_back").replace("$next.id",this.id+"_next"));this.renderEvent.subscribe(function(){var back=document.getElementById(this.id+"_back");var next=document.getElementById(this.id+"_next");YAHOO.util.Event.addListener(back,"click",this.back,this,true);YAHOO.util.Event.addListener(next,"click",this.next,this,true);},this,true);this.initEvent.fire(YAHOO.widget.PhotoBox);}YAHOO.widget.PhotoBox.prototype.initEvents=function(){YAHOO.widget.PhotoBox.superclass.initEvents.call(this);this.showMaskEvent=new YAHOO.util.CustomEvent("showMask");this.hideMaskEvent=new YAHOO.util.CustomEvent("hideMask");}YAHOO.widget.PhotoBox.prototype.initDefaultConfig=function(){YAHOO.widget.PhotoBox.superclass.initDefaultConfig.call(this);this.cfg.addProperty("photos",{handler:this.configPhotos,suppressEvent:true});}YAHOO.widget.PhotoBox.prototype.images=new Array();YAHOO.widget.PhotoBox.prototype.configPhotos=function(type,args,obj){var photos=args[0];if(photos){this.images=new Array();if(!(photos instanceof Array)){photos=[photos];}this.currentImage=0;if(photos.length==1){this.footer.style.display="none";}for(var p=0;p<photos.length;p++){var photo=photos[p];var img=new Image();img.src=photo.src;img.title=photo.caption;img.id=this.id+"_img";img.width=500this.images[this.images.length]=img;}this.setImage(0);}}YAHOO.widget.PhotoBox.prototype.setImage=function(index){var photos=this.cfg.getProperty("photos");if(photos){if(!(photos instanceof Array)){photos=[photos];}var back=document.getElementById(this.id+"_back");var next=document.getElementById(this.id+"_next");var img=document.getElementById(this.id+"_img");var title=document.getElementById(this.id+"_title");this.currentImage=index;var current=this.images[index];var imgNode=document.createElement("IMG");imgNode.setAttribute("src",current.src);imgNode.setAttribute("title",current.title);imgNode.setAttribute("width",500);imgNode.setAttribute("id",current.id);img.parentNode.replaceChild((this.browser=="safari"?imgNode:current),img);this.body.style.height="auto";title.innerHTML=current.title;if(this.currentImage==0){back.style.display="none";}else{back.style.display="block";}if(this.currentImage==(photos.length-1)){next.style.display="none";}else{next.style.display="block";}}}YAHOO.widget.PhotoBox.prototype.next=function(){if(typeof this.currentImage=='undefined'){this.currentImage=0;}this.setImage(this.currentImage+1);}YAHOO.widget.PhotoBox.prototype.back=function(){if(typeof this.currentImage=='undefined'){this.currentImage=0;}this.setImage(this.currentImage-1);}YAHOO.widget.PhotoBox.prototype.configModal=function(type,args,obj){var modal=args[0];if(modal){this.buildMask();if(typeof this.maskOpacity=='undefined'){this.mask.style.visibility="hidden";this.mask.style.display="block";this.maskOpacity=YAHOO.util.Dom.getStyle(this.mask,"opacity");this.mask.style.display="none";this.mask.style.visibility="visible";}if(!YAHOO.util.Config.alreadySubscribed(this.beforeShowEvent,this.showMask,this)){this.beforeShowEvent.subscribe(this.showMask,this,true);}if(!YAHOO.util.Config.alreadySubscribed(this.beforeHideEvent,this.hideMask,this)){this.beforeHideEvent.subscribe(this.hideMask,this,true);}if(!YAHOO.util.Config.alreadySubscribed(YAHOO.widget.Overlay.windowResizeEvent,this.sizeMask,this)){YAHOO.widget.Overlay.windowResizeEvent.subscribe(this.sizeMask,this,true);}}else{this.beforeShowEvent.unsubscribe(this.showMask,this);this.beforeHideEvent.unsubscribe(this.hideMask,this);YAHOO.widget.Overlay.windowResizeEvent.unsubscribe(this.sizeMask);}}YAHOO.widget.PhotoBox.prototype.showMask=function(){if(this.cfg.getProperty("modal")&&this.mask){YAHOO.util.Dom.addClass(document.body,"masked");this.sizeMask();var o=this.maskOpacity;if(!this.maskAnimIn){this.maskAnimIn=new YAHOO.util.Anim(this.mask,{opacity:{to:o}},0.25)YAHOO.util.Dom.setStyle(this.mask,"opacity",0);}if(!this.maskAnimOut){this.maskAnimOut=new YAHOO.util.Anim(this.mask,{opacity:{to:0}},0.25)this.maskAnimOut.onComplete.subscribe(function(){this.mask.tabIndex=-1;this.mask.style.display="none";this.hideMaskEvent.fire();YAHOO.util.Dom.removeClass(document.body,"masked");},this,true);}this.mask.style.display="block";this.maskAnimIn.animate();this.mask.tabIndex=0;this.showMaskEvent.fire();}}YAHOO.widget.PhotoBox.prototype.hideMask=function(){if(this.cfg.getProperty("modal")&&this.mask){this.maskAnimOut.animate();}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -