prototype alapú, képes toolbox, képelőtöltővel
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)várok minden építő jellegű kritikát, had okuljak :)
üdv t
■ 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/'
});
})
üdv t
hoppá
<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
pozicionalas
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.