Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    209

    PopUp menu con Prototype

    Ciao, qualcuno conosce una classe per creare un popupmenu con prototype?
    Mi sono cimentato nello scriverne una (statica) con solo la possibilità di un sottomenu, ma so che in giro sicuramente qualcun'altro avrà fatto di meglio (molto di meglio), anche perchè non riesco ad evitare che l'evento di chiusra non sia associato ANCHE al contenuto anziché al contenitore. Cioè io associo al mouseout dell'UL si chiuda il sottomenu, ma per qualche motivo in tutti i browser anche i LI hanno lo stesso evento, mandando all'aria la temporaneità.

    Comunque allego il codice:

    Codice PHP:
    Submenu={     trigger:function(e){         el=e.element();         el.submenu=el.submenu||el.next();         Event.stopObserving(el,'mouseover',Submenu.trigger);         new Effect.BlindDown(el.submenu,{duration:.3,afterFinish:function(){             el.submenu.observe('mouseout',Submenu.hide);             el.submenu.observe('mouseover',Submenu.cancel_hide);         }});     },     hide:function(e){         Submenu.reset(e.element());     },     cancel_hide:function(e){         el=e.element();         if(el.timeout){             clearInterval(el.timeout);         }     },     reset:function(el){                  if(/^<ul/.test(el.inspect())) {             $('status').update(el.inspect());             el.timeout=setTimeout(function(){                 Event.stopObserving(this,'mouseover',Submenu.hide);                 new Effect.BlindUp(this,{duration:.3,afterFinish:function(){                     this.previous().observe('mouseover',Submenu.trigger);                 }.bind(this)});             }.bind(el),500);         }else{             if(Prototype.Browser.IE){                 Submenu.reset(el.up());             }         }     } }; Event.observe(window,'load',function(){     $$('.submenu a').each(function(el){             $$('.submenutrigger').invoke('observe','mouseover',Submenu.trigger); }); 

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    209
    Se può essere utile a qualcuno ecco il codice di prima corretto

    Codice PHP:
    Submenu={
        
    trigger:function(e){
            
    el=e.element();
            
    el.submenu=el.submenu||el.next();
            
    Event.stopObserving(el,'mouseover',Submenu.trigger);
            new 
    Effect.BlindDown(el.submenu,{duration:.3,afterFinish:function(){
                
    el.submenu.observe('mouseout',Submenu.hide);
                
    el.submenu.observe('mouseover',Submenu.cancel_hide);
                
    Submenu.reset(el.submenu,2000);
            }});
        },
        
    hide:function(e){
            
    Submenu.reset(Submenu.find_el(e));
        },
        
    cancel_hide:function(e){
            
    Submenu.cancel_reset(Submenu.find_el(e));
        },
        
    reset:function(el,time){
            
    time=time||600;
            
    Submenu.cancel_reset(el);
            
    el.timeout=setTimeout(function(){
                
    Event.stopObserving(this,'mouseover',Submenu.hide);
                new 
    Effect.BlindUp(this,{duration:.3,afterFinish:function(){
                    
    this.previous().observe('mouseover',Submenu.trigger);
                }.
    bind(this)});
            }.
    bind(el),time);
        },
        
    cancel_reset:function(el){
            if(
    el.timeoutclearInterval(el.timeout);
        },
        
    find_el:function(e){
            
    el=e.element();
            if(!/^<
    ul/.test(el.inspect())) el=el.up();
            return 
    el;
        }
    };
    Event.observe(window,'load',function(){
        $$(
    '.submenutrigger').invoke('observe','mouseover',Submenu.trigger);
    }); 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.