Bonjour,
Voila j'ai fais un menu déroulant verticale avec Mootools mais il
n'est pas fluide il saccade ?

voici les deux code <script>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);
</script>


deuxième :



<script>
window.addEvent('domready', function(){
                                var myMenu = new ImageMenu($$('#imageMenu 
a'),{openWidth:310,
border:2, onOpen:function(e,i){location=(e);}});
                        });

</script>
merci d'avance

-- 
Vous recevez ce message, car vous êtes abonné au groupe Google 
Groupes Symfony-fr.
Pour envoyer un message à ce groupe, adressez un e-mail 
à [email protected].
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse 
[email protected].
Pour plus d'options, consultez la page de ce groupe : 
http://groups.google.com/group/symfony-fr?hl=fr

Répondre à