Unobtrusive Tabstrip

Sabato 28 Aprile, 2007

Utilizzando Prototype.js e Scriptaculous ecco come realizzare delle simple-tabstrip per un sito Web. In questa versione il soggetto non è il Tabstrip ma il suo funzionamento. La caratteristica essenziale di questo script risiede nella semplicità d'uso e nella possibilità di mantenere accessibile una pagina anche quando Javascript è disabilitato. In pratica è possibile addirittura aggiungere questa tecnica a pagine già realizzate a patto che rispettino quel minimo di sintassi HTML esposta sotto.

Per mantenere l'accessibilità anche in caso di Javascript disabilitato partiamo quindi dal caso standard HTML, quando, cioè, si inseriscono degli anchor all'interno di una pagina, nel formato:

HTML:
  1. <li><a href="#tbs1">Link 1</a></li>
  2. <li><a href="#tbs2">Link 2</a></li>
  3. <li><a href="#tbs3">Link 3</a></li>
  4. </ul>
  5.  
  6. <a name="tbs1"></a>
  7. <p>Content #1</p>
  8. </div>
  9.  
  10. <a name="tbs2"></a>
  11. <p>Content #2</p>
  12. </div>
  13.  
  14. <a name="tbs3"></a>
  15. <p>Content #3</p>
  16. </div>

Il codice HTML sopra esposto funziona in quanto non fa assolutamente uso di Javascript! Passiamo ora al nostro codice Unobtrusive:

JavaScript:
  1. Event.observe(window, 'load', function() {
  2. $$('a[href^=#]:not([href=#])').each(    function(element) {
  3.     element.observe('click', function(event) {
  4.     $$('a[name])').each( function(element){element.next().style.display="none"})
  5.     var c = 'a[name="'+this.hash.substr(1)+'"]';
  6.         $$(c).each(function(element) { new Effect.Appear(element.next()) });
  7.         Event.stop(event); }.bindAsEventListener(element))
  8.  }) 
  9.     var i = 0;
  10.     $$('a[name])').each(function(element) { if(i>0) element.next().style.display="none"; else i++; }
  11.     );
  12. }
  13. );

Questo codice - posto nella nostra pagina - non solo trasforma la nostra lista puntata in un Tabstrip ma, grazie a Scriptaculous, aggiunge anche un simpatico effetto fade quando si passa da un link-tab all'altro.

Post correlati

2 commenti a: “Unobtrusive Tabstrip”

  1. getAvatar 1.0 Martedì 08 Maggio, 2007 alle 09:23
    Napolux ha detto:

    Sono pigrissimo, un esempio? :P

  2. getAvatar 1.0 Giovedì 14 Agosto, 2008 alle 15:22
    Unobtrusive Simple TabStrip | Undolog.com ha detto:

    [...] all’interno di una pagina HTML. Questo sorgente è un miglioramento della funzione presentata in Unobtrusive Tabstrip. In questa versione oltre ad allineare il codice alle release 1.6 di prototype.js è stata creata [...]

Lascia un commento

TAG XHTML permessi: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Usa <pre> per racchiudere codice