Semplicemente

Introduzione ai CSS - La proprietà display

Thursday 24 January 2008 Marco Bertoni, ultimo aggiornamento: Tuesday 19 August 2008.

Come controllare il comportamento dei box generati dagli elementi?

Con la proprietà display, ovviamente. I quattro valori più comuni per questa proprietà sono i seguenti (se desideri approfondire consulta la specifica CSS):

block
L'elemento inizia e finisce su una nuova riga, per esempio un paragrafo p.
inline
L'elemento è visualizzato in un box posizionato sulla stessa riga del contenuto precedente, per esempio gli elementi span, em strong ecc.
list-item
L'elemento è visualizzato come un box con un etichetta (glifo) che può essere o meno visibile in funzione dei valori associati alla proprietà list-style. Si applica tipicamente all'elemento li di HTML.
none
L'elemento non genera nessun box nella struttura di formattazione. E' rimosso dal flusso del documento. Questo vale anche per gli eventuali discendenti.

La proprietà display con valore none è a volte utilizzata per nascondere ai browser visuali porzioni di codice destinate ai lettori di schermo (per esempio aiuti alla navigazione che si desidera veicolare solo agli utenti non vedenti) utilizzando regole CSS come la seguente:

  1. .nascosto { display: none; }

Alcuni screen reader non leggono il contenuto degli elementi nascosti con questo metodo, vanificando il senso della tecnica.

Bob Easton ha sviluppato una soluzione, chiamata off-left, per ottenere lo stesso risultato senza utilizzare la proprietà display:

  1. .nascosto {
  2. position: absolute;
  3. left: -999px;
  4. width: 990px;
  5. }

Esistono molte varianti, per esempio io utilizzo la seguente regola quando desidero nascondere qualcosa:

  1. .invisibile {
  2. position: absolute;
  3. visibility: hidden;
  4. overflow: hidden;
  5. left: -10000px;
  6. }

Il principio è lo stesso: con il posizionamento assoluto (che studieremo in dettaglio in un prossimo articolo) si può posizionare un elemento con precisione senza modificare la sua posizione nel codice e senza influenzare gli elementi circostanti. In questo caso noi collochiamo gli elementi con classe invisibile fuori dall'area di visualizzazione (left: -10000px;1). Il contenuto non potrà essere visto, ma rimarrà disponibile per il lettore di schermo.

Per approfondire leggi la pagina dedicata all'argomento del Wiki della lista CSS-discuss.

Contribuisci alla serie di articoli Introduzione ai CSS

Note

  1. Ovviamente è necessario fare attenzione al lato: a sinistra per i nostri browser. Ma se la direzione del testo fosse da destra a sinistra allora la regola dovrebbe diventare right: -10000px;. Possiamo anche spostare l'elemento verso l'alto, ma questa opzione mi ha creato a volte qualche problema per cui la sconsiglio. [indietro]

9 Commenti a “Introduzione ai CSS - La proprietà display”

  1. Gabriele Romanato dice:

    La soluzione proposta non dovrebbe mai essere usata in IE7 se:

    1) l’elemento contenitore dell’elemento da nascondere ha una larghezza dichiarata.
    2) la larghezza è pari al 100%.

    in questo caso si verifica un bug, segnalato a Gerard Talbot su gtalbot.org.

    Ossia barra di scorrimento orizzontale, un bug che aveva già Netscape 7.0.

  2. Marco Bertoni dice:

    Grazie per la segnalazione Gabriele ;). Non ho mai avuto questo problema, ma ora farò qualche test!.

  3. Gioacchino Poletto dice:

    Confermo quanto scritto da Gabriele, anche se, il comportamento è anomalo: IE7 a volte lo manifesta e a volte no.
    Misteri dell’ eXplorazione !
    A tal proposito posso segnalare un’altra tecnica segnalata da Tom Gilder che da una proprietà ai selettori :focus ed :active per nascondere degli elementi che non saranno graficamente visibili, ma sono riconosciuti dal focus tramite tastiera.

  4. Marco Bertoni dice:

    Ottimo ragazzi :). Aggiornamento (27/01): ho fatto qualche test ma non riesco a riprodurre il bug indicato da Gabriele :(. Con il metodo che uso:

    .invisibile {
    position: absolute;
    visibility: hidden;
    overflow: hidden;
    left: -10000px;
    }

    Non mi compaiono barre di scorrimento in IE7, sia con larghezza esplicita del contenitore, sia con larghezza 100%. Ritengo che sia la dichiarazione overflow: hidden; a evitare il tutto. Ecco il codice HTML che ho usato:

    <div id="contenitore">
    <div class="invisibile">Testo da non visualizzare.</div>
    <p>Normale paragrafo</p>
    </div>

  5. antonella romagnoli dice:

    Vi ringrazio, ho finalmente capito perché un giorno mi è comparsa questa barra di scorrimento orizzontale.
    Devo dire che a me succede con IE 6, anche usando il codice di Marco. Con IE 7 non ho ancora provato

  6. Marco Bertoni dice:

    E’ davvero strano questo fatto.

    Una domanda: tu usi Windows con i temi oppure, come me, selezioni la visualizzazione classica? A volte ho notato che il tema di Win XP modifica la viewport provocando proprio problemi di overflow.

  7. Gioacchino Poletto dice:

    In effetti il tema usato influisce, così come la versione del S.O. utilizzato.
    Personalmente rilevo comportamenti differenti tra XP sp. 2 e Vista.

  8. antonella romagnoli dice:

    Se la domanda ‘tu usi Windows con i temi ‘ era rivolta a me, uso il tema che usa lo stile di windows XP e IE6, sulla mia postazione in ufficio.
    In effetti la barra di scorrimento compare anche con IE 7, mi ricordo di averlo verificato sul computer che ho a casa, che appunto ha IE7.

  9. Marco Bertoni dice:

    Si era rivolta a te ;). A questo punto proverò a fare un test più approfondito, perché a me questo bug proprio non compare.

Scrivi un commento

XHTML: Puoi utilizzare questi marcatori: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Non ho commentato ma desidero ugualmente essere avvisato quando è pubbicato un commento: