Citat:
Ursprungligen inskrivet av save
Vad som är mest professionellt i ett sånt här sammanhang kan diskuteras, vill du nå ditt resultat med en omväg som är svårare att begripa eller vill du lösa det enkelt och övergripande? Inget ont menat, men jag tror du gör dig en björntjänst med att strippa ner avancerade funktioner för att åstadkomma något som egentligen är lättare att skapa från grunden.
jag vill att det ska ha lite colla funtioner lixom, jojo förstår dig helt men detta är ju dem kraven jag är ute efter serru :P, här kommer mitt arbete hittils.
CSS:
/**************************************************************
Image Menu
v 2.2
**************************************************************/
#imageMenu {
position: relative;
width: 10000px;
height: 320px;
overflow: hidden;
}
#imageMenu ul {
list-style: none;
margin: 0px;
display: block;
height: 200px;
width: 1000px;
}
#imageMenu ul li {
float: left;
}
#imageMenu ul li a {
text-indent: -1000px;
background:#FFFFFF none repeat scroll 0%;
border-right: 2px solid #fff;
cursor:pointer;
display:block;
overflow:hidden;
width:300px;
height: 200px;
}
#imageMenu ul li.people a {
background: url(images/peaolpe.gif) repeat scroll 0%;
width:200px;
height:313px;
}
#imageMenu ul li.nature a {
background: url(images/nature.jpg) repeat scroll 0%;
width:400px;
height:313px;
}
#imageMenu ul li.abstract a {
background: url(images/abstract.jpg) repeat scroll 0%;
width:400px;
height:313px;
}
.clear {
clear: both;
}
/*************************************************************/
HTML:
/**************************************************************
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,
openWidth: 200,
transition: Fx.Transitions.quadOut,
duration: 400,
open: null,
border: 0
};
},
initialize: function(elements, options){
this.setOptions(this.getOptions(), options);
this.elements = $$(elements);
this.widths = {};
this.widths.closed = this.elements[0].getStyle('width').toInt();
this.widths.openSelected = this.options.openWidth;
this.widths.openOthers = Math.round(((this.widths.closed*this.elements.length) - (this.widths.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 width = this.widths.openOthers;
if(num+1 == this.elements.length){
width += this.options.border;
}
}else{
var width = this.widths.closed;
}
var obj = {};
this.elements.each(function(el,i){
var w = width;
if(i == this.elements.length-1){
w = width+5
}
obj[i] = {'width': w};
}.bind(this));
if($type(num) == 'number'){
obj[num] = {'width': this.widths.openSelected};
}
this.fx.start(obj);
}
});
ImageMenu.implement(new Options);
ImageMenu.implement(new Events);
/*************************************************************/
jag vet, jag har lite justeringar kvar med bilderna, dem expanderar för lite at the moment men det ska fixas
vad tycker du ?