non so che dirti, qui funziona
imageMenu.js
codice:
/**************************************************************
Script : Image Menu
Version : 2.2
Authors : Samuel Birch
Desc :
Licence : Open Source MIT Licence
**************************************************************/
var ImageMenu = new Class({
getOptions: function(){
return {
onOpen: false,
onClose: Class.empty,
openheight: 200,
transition: Fx.Transitions.quadOut,
duration: 400,
open: null,
border: 0
};
},
initialize: function(elements, options){
this.setOptions(this.getOptions(), options);
this.elements = $$(elements);
this.heights = {};
this.heights.closed = this.elements[0].getStyle('height').toInt();
this.heights.openSelected = this.options.openheight;
this.heights.openOthers = Math.round(((this.heights.closed*this.elements.length) - (this.heights.openSelected+this.options.border)) / (this.elements.length-1))
this.fx = new Fx.Elements(this.elements, {wait: false, duration: this.options.duration, transition: this.options.transition});
this.elements.each(function(el,i){
el.addEvent('mouseenter', function(e){
new Event(e).stop();
this.reset(i);
}.bind(this));
el.addEvent('mouseleave', function(e){
new Event(e).stop();
this.reset(this.options.open);
}.bind(this));
var obj = this;
el.addEvent('click', function(e){
if(obj.options.onOpen){
new Event(e).stop();
if(obj.options.open == i){
obj.options.open = null;
obj.options.onClose(this.href, i);
}else{
obj.options.open = i;
obj.options.onOpen(this.href, i);
}
}
})
}.bind(this));
if(this.options.open){
if($type(this.options.open) == 'number'){
this.reset(this.options.open);
}else{
this.elements.each(function(el,i){
if(el.id == this.options.open){
this.reset(i);
}
},this);
}
}
},
reset: function(num){
if($type(num) == 'number'){
var height = this.heights.openOthers;
if(num+1 == this.elements.length){
height += this.options.border;
}
}else{
var height = this.heights.closed;
}
var obj = {};
this.elements.each(function(el,i){
var w = height;
if(i == this.elements.length-1){
w = height+5
}
obj[i] = {'height': w};
}.bind(this));
if($type(num) == 'number'){
obj[num] = {'height': this.heights.openSelected};
}
this.fx.start(obj);
}
});
ImageMenu.implement(new Options);
ImageMenu.implement(new Events);
/*************************************************************/
imageMenu.css
codice:
/**************************************************************
Image Menu
v 2.2
**************************************************************/
#imageMenu {
position: relative;
width: 100px;
/* height: 200px; */
overflow: hidden;
}
#imageMenu ul {
list-style: none;
margin: 0px;
display: block;
/* height: 200px; */
width: 100px;
}
#imageMenu ul li {
/* float: left; */
}
#imageMenu ul li a {
text-indent: -1000px;
background:#FFFFFF none repeat scroll 0%;
border-top: 2px solid #fff;
cursor:pointer;
display:block;
overflow:hidden;
width:100px;
height: 50px;
}
#imageMenu ul li.landscapes a {
background: url(images/landscapes.jpg) repeat scroll;
}
#imageMenu ul li.people a {
background: url(images/people.jpg) repeat scroll;
}
#imageMenu ul li.nature a {
background: url(images/nature.jpg) repeat scroll;
}
#imageMenu ul li.urban a {
background: url(images/urban.jpg) repeat scroll;
}
#imageMenu ul li.abstract a {
background: url(images/abstract.jpg) repeat scroll;
}
.clear {
clear: both;
}
/*************************************************************/
richiamo in index.htm
codice:
window.addEvent('domready', function(){
var myMenu = new ImageMenu($$('#imageMenu a'),{openheight:200, border:2, onOpen:function(e,i){alert(e);}});
});
ciao