Calendario senza tabella? Da oggi è possibile!

Ultimi ritocchi

Provando ad caricare la pagina del calendario avendo avuto l’attenzione di scrivere tutte le regole sopra menzionate, e tutti i giorni del calendario, così come sono stati presentati nell’esempio, il risultato sarà già dei migliori, ma mancano alcuni particolari: mancano le intestazioni del calendario e manca la sezione di navigazione: quella sezione che ci consentirà di saltare alle varie settimane, ed al primo evento.

Modifichiamo i giorni della prima settimana definendo come classe “intestazione” anzichè “hidden” solo per lo span in cui è integrata l’abbreviazione del giorno. Poi definiamo altre due regole di stile nel nostro foglio di stile.

Quinta regola. L’intestazione sarà visibile:

         #box-calendario .intestazione{
                display: block;
                top: 0px;
                width: 100%;
                height: 1.90em;
                text-align: center;
                float: left;
                border-bottom : 1px solid #808080;
                background-color:#f0f0e0;
                font-weight: bold;
        }

Sesta regola. Le caselle della prima settimana saranno alte il doppio:

 #box-calendario #settimana-1 .giorno{
                height: 3.80em;         
} 

Compatibilità cross browser

Riprovando a guardare il calendario ci renderemo conto che il risultato è eccezionale: tutti i giorni sono incolonnati, tutte le settimane occupano una sola riga, sono presenti le intestazioni e…

Perchè qualcuno alza il dito chiedendo di parlare?… Non ti funziona?… Hai degli spazi incontrollati?… Hai un risultato che non ti soddisfa? Scusate ma che browser state utilizzando? Ah ecco! :P

Ok visto che la compatibilità cross-browser è un requisito fondamentale per la Legge Stanca (ma soprattutto per obbligo morale), siamo obbligati a rendere uguale qualsiasi sia il browser utilizzato. Almeno proviamoci.

Io dico solitamente: per problemi non standard, servono soluzioni non standard.

Quindi consideriamo l’uso dei commenti condizionali per Internet Explorer così da ridefinire alcune regole di stile che altrimenti non funzionerebbero. Eccovi il foglio di stile condizionale:

 <!--[if IE]>
        <style type="text/css">
                #box-calendario{
                        padding-left: 0px;
                        padding-top: 0px;
                        margin-top: 0px;
                        width: 14.1em;
                }

                #box-calendario .intestazione{
                        height: 2em;
                        display: block;
                }

                #box-calendario .giorno{
                        border: 1px solid;
                        width: 2em;
                        height: 2em;
                        display: block;
                }                       

                #box-calendario li ul li{
                        padding-top: 0px;
                        padding-bottom: 0px;
                        margin-bottom: 0px;
                        margin-top: 0px;
                }

        </style>
<![endif]-->

 Aehm… a quanto pare abbiamo ridefinito un bel po’ di proprietà… ma se a questo punto guardiamo il risultato è perfettamente compatibile con: Firefox, Opera, Internet Explorer 7, Internet Explorer 6, Safari su MAC (almeno sono i browser che sono riuscito a controllare). Inoltre è consultabile correttamente anche con uno screen reader.


Pubblicato

in

, ,

da

Tag:

Commenti

6 risposte a “Calendario senza tabella? Da oggi è possibile!”

  1. Avatar Hydra
    Hydra

    A quanto pare, prescindendo dal fatto che un calendario di per sè non è accessibile, un calendario senza tabelle è semanticamente scorretto: http://dougal.gunters.org/blog/2003/02/21/tables-vs-css

    1. Avatar Diego La Monica
      Diego La Monica

      Sicuramente quello che dichiara Dougal non è affatto sbagliato, però quello che ho voluto indicare con questo articolo è che se una qualsiasi persona volesse proporre un calendario che semanticamente resta valido (come lo è la struttura di una tabella) può implementare degli elenchi puntati nidificati.
      Fornire tutte le informazioni presentate nell’esempio con solo una tabella avrebbe comportato una deformazione dei contenuti così da renderla illeggibile senza CSS.
      Ti propongo di fare una prova e riportare esattamente quello che ho fatto in tabella: con un CSS sicuramente resterà gradevole a leggersi, credo lo sia molto meno senza. :)

    2. Avatar Carlo Filippo Follis

      Perché semanticamente scorretto?
      Visivamente non cambia nulla, per di più è Usabile da parte di tutti …

  2. Avatar Mavimo

    Un layout table-less non vuol dire che non si possano usare tabelle (dove ha un senso) ma semplicemente che non sono state usate le tabelle per realizzare il layout. IMHO per un calendario è un controsenso, se non che si più modificare il modo di visualizzarlo ricorrendo ad interpretazione diversa del CSS per i diversi dispositivi (per esempio per i palmari/smartphone), ma se si vuole visualizzare come tabella è un uso sbagliato (nonche ci si complica la vita :P )
    Altra cosina da aggiungere, manca il mese, e il modo di cambiare mese, ma non dovrebbe essere un problema aggiungere quelle 5 righe di codice :P
    ciao
    PS: buona pasqua

    1. Avatar Diego La Monica
      Diego La Monica

      Questo tutorial è stato pensato per mostrare che con i CSS è possibile ottenere risultati realmente soddisfacenti: riuscendo ad elaborare un calendario altamente accessibile e gradevole d’aspetto. Disattivando i CSS il risultato non è dei peggiori. Anzi paragonato al possibile risultato ottenuto con una tabella che vuole mostrare le stesse informazioni, io credo che forse quanto ottenuto è anche superiore.
      Tableless vuol dire layout senza tabelle, ma se volessimo diventare così pignoli da richiedere un sito tableless nel senso stretto della parola?
      Credo di aver dato la soluzione per uno degli elementi che di fatto sono più adatti ad essere presentati con una tabella.

      1. Avatar Mavimo

        IMHO richiedere un layout tableless nel senso stretto della parola non ha senso, il tag <table> esiste nella definizione dello standard XHTML1.1 e anche nella bozza del 2.0 semplicemente perchè ha un senso se usato con coscienza, non vedo perche lo si voglia evitare (quando è utile e gusto usarlo).
        E’ come volere un sito con le immagini fatte di <div> di vari colori da un pixel posizionati con l’absolute perchè il sito non deve assolutamente avere immagini, si può fare, ma ha un senso?
        Ciao
        PS: non voglio sicuramente sminuire il tuo lavoro, ma ritengo che non sia giusto creare calendari senza tabelle, per lo meno se li si vuole visionare in quel modo…

%d blogger hanno fatto clic su Mi Piace per questo: