ugrás a tartalomhoz

prototype alapú, képes toolbox, képelőtöltővel

toxin · 2007. Jan. 8. (H), 07.17
tegnap kérésre ( http://www.tutorial.hu/forum/index.php?s=&showtopic=312&view=findpost&p=88792 ) összedobtam egy képes, tooltip szerűséget, keresztségben a justAnAnotherProToolTip névvel


http://toxin.hu/tooltip/tooltip.html
http://toxin.hu/tooltip/tooltip.zip

hogy ne vesszen kárba, ill. akinek ilyen kéne ebből kiindulhat, a trimpath sablonmoci munkahelyi ártalom, szvsz teljesen felesleges gyakorlás végett van csak benne. Licensz, aki használja köteles nekem segíteni ha kérdezek ebben a fórumban :)) (na jó csak vicc)

		var jAAPTT = Class.create();
			
				jAAPTT.prototype = {
					
					initialize : function(options){	
										
						this.images = [];						
						this.imgPreLoader = {
							// start loading
							startLoad :	function(img_src){
								this.img = new Image();
								this.img.src = img_src;
								this.img.onload = this.imgPreLoader.onFinished.bind(this,img_src);
							},
							// if finished
							onFinished : function(img_src){
								this.images.push(img_src);
								// show updated toolbox
								var tooltip = t_tooltip.process( { tooltip_img_src : img_src } );
								// update toolbox								
								Element.update('tooltip_wrapper',tooltip);
								// refresh dimension datas
								setTimeout (function(){ this.refreshToolBox()}.bind(this),100);															
							}
						}
						
						// default values, or inic params
						this.options = Object.extend({
							bigImgPath 		: 'img/big/',
							thumbImgPath 	: 'img/thumb/',
							loaderImg		: 'img/loading.gif',
							offsetX			: 15,
							offsetY			: 15						
						}, options || {}); 	
						
						var preloader = new Image();
						preloader.src = this.options.loaderImg;
							
						// add tooltip wrapper to body
						new Insertion.Bottom(document.body,'<div id="tooltip_wrapper" style="display:none;position:absolute;"></div>');					
						
						// parse template of the tooltip
						t_tooltip = TrimPath.parseDOMTemplate("t_tooltip");					
						
						// put the event handlers to class="tooltip_link" links 
						document.getElementsByClassName('tooltip_link').each(function(tooltip_link){							
							// and show the tooltip
							Event.observe(tooltip_link,'mousemove',this.onShowToolTip.bindAsEventListener(this));
							Event.observe(tooltip_link,'mouseout',this.onHideToolTip.bindAsEventListener(this));							
						}.bind(this));
						
					},
					
					onShowToolTip : function(e){
						this.event = e;	
						
						// calculate the init, and modified positions
						this.initX = Event.pointerX(this.event) + this.options.offsetX;
						this.initY = Event.pointerY(this.event) + this.options.offsetY;	
						
						// get the dimensions of the viewport
						this.viewport = {
							width  : document.documentElement.clientWidth || document.body.clientWidth,
							height : document.documentElement.clientHeight || document.body.clientHeight
						}
						var scrollOffset = Position.realOffset(document.body);
						this.viewport.height = this.viewport.height + scrollOffset[1];
						this.viewport.width  = this.viewport.width  + scrollOffset[0];						
						
						// put image to toolbox, first the preloader img
						var act_link = Event.element(e);						
												
						// if need call the preload method
						if (this.images.indexOf( this.options.thumbImgPath+act_link.rel)!=-1)
						{
							var tooltip = t_tooltip.process( 
								{ tooltip_img_src : this.options.thumbImgPath + act_link.rel 
							} );	
						}
						else			
						{	
							this.imgPreLoader.startLoad.bind(this)(this.options.thumbImgPath + act_link.rel);
							var tooltip = t_tooltip.process( { tooltip_img_src : this.options.loaderImg } );
						}
						// show toolbox
						Element.update('tooltip_wrapper',tooltip);	
						
						this.refreshToolBox();					
				},
				
				refreshToolBox : function(){						
																	
						// get toolbox_dimensions 
						var t_dim = $('tooltip_wrapper').getDimensions();
						// bigger than the vieport, modified them						
						var finalX = this.initX + t_dim.width > this.viewport.width ? this.initX - ( t_dim.width + this.options.offsetX) : this.initX;
						var finalY = this.initY + t_dim.height > this.viewport.height ?  this.initY - ( t_dim.height + this.options.offsetY) : this.initY;
						// set final positions
						Element.setStyle('tooltip_wrapper',{
								top  : finalY+'px',
								left : finalX+'px'
						});
						
						Element.show('tooltip_wrapper');						
													
					},
					// hide toolbox if we dont need it
					onHideToolTip : function(e){
						Element.hide('tooltip_wrapper');
					}				
										
			}	
			
			var t_tooltip = {};
			Event.observe(window,'load',function(){
									
			// just create test links, for testing purpose
				for(var i=1;i<100;i++)
				{
					var tempLink = '<span class="tooltip_link_wrapper"><a class="tooltip_link" href="#" rel="'+i%10+'.jpg">'+i+'. teszt link</a></span>';					
					
					new Insertion.Bottom ('left',tempLink); 
					new Insertion.Bottom ('center',tempLink);						
					new Insertion.Bottom ('right',tempLink);						
				}
				// inic our new beauty tool ^^)
				new jAAPTT({
					thumbImgPath : 	'img/big/'				
				});		
				
			})
várok minden építő jellegű kritikát, had okuljak :)

üdv t
 
1

hoppá

toxin · 2007. Jan. 8. (H), 07.23
trimpath sablon lemaradt

<!-- inner template of the tooltip -->
<div id="templates">
<textarea id="t_tooltip" style="display:none">
<div id="tooltip_box">
<img src="${tooltip_img_src}" />
</div>
</textarea>
</div>
<!-- /templates -->


ebben cserélődik a ${tooltip_img_src} kliens oldali sablonváltozó tartalma, futás során, ill. akinek szöveg vagy egyéb kéne a kép mellé ezt lehet bővíteni, egyéb változókkal és cserélni, stb :)

üdv t
2

pozicionalas

city99 · 2007. Jan. 8. (H), 09.35
Szia

Kicsit kalapalhatnal meg a pozicionalason, mert ahogy latom attol fugg hogy lefele vagy felfe teszi ki a "toolbox"-ot hogy merrol kozelitettted meg a linket.