CSS  »  Articoli  »  Responsive Design 

Sviluppare layout con le Media Queries

di: Filippo Buratti     13 Settembre 2011

Il futuro del web sarà molto probabilmente mobile. Secondo stime attendibili degli analisti di mercato già nel 2015 il numero di utenti che accederanno ad internet, attraverso dispositivi mobile, supererà quello degli utenti che vi accedono attraverso pc desktop. Già oggi il successo di dispositivi ad alta tecnologia come smartphone e tablet, unito alla diffusione della banda larga, non possono lasciare indifferenti web designer e sviluppatori.

Allo scopo di rendere fruibili i contenuti web al più alto numero di device, una scelta ovvia ma sicuramente dispendiosa è quella di realizzare due versioni del sito, una "standard" per i normali computer, e una progettata appositamente per i dispositivi mobili, magari utilizzando dei framework Javascript creati appositamente: è il caso di jQuery Mobile e di Sencha Touch.

Grazie al nuovo modulo sulle media queries introdotto con i CSS3, è possibile approcciare allo progettazione in modo non convenzionale: tramite questa tecnica molto elegante, partendo da una medesima struttura HTML, vengono applicati determinati fogli di stile in base al tipo di device, alla sua risoluzione, orientamento, dimensioni del display e varie altre variabili, permettendo di adattare l'interfaccia e il layout delle pagina web. Anche in questo caso sono disponibili diversi framework che rappresentano una buona base di partenza per velocizzare lo sviluppo di una applicazione web basata sulle media queries. I più conosciuti sono :

Proprio su Less Framework è basato il codice dell'esempio di questo articolo. In realtà ognuna di queste librerie non rappresenta la soluzione perfetta, probabilmente perché alcune funzione potrebbero essere superflue o non adattarsi alle esigenze. Il consiglio è quello di analizzare tutte queste soluzioni, prendendo solo il necessario e adattandolo al vostro modo di lavorare.

Less Framework 4

A differenza degli altri, questo framework è molto leggero e ridotto all'essenziale, come si può intendere dal nome stesso. Fondamentalmente è costituito da un foglio di stile comune contenente delle regole di reset e da un layout di default, della larghezza di 992px, ideale per la visualizzazione nei monitor dei computer standard. Tramite la dichiarazione di 3 diverse media queries sono poi disponibili tre layout aggiuntivi: uno della larghezza di 768px per netbook e tablet, un layout da 480px per smartphone in posizione landscape e uno largo 320px sempre per gli smartphone ma in modalità portrait. I browser meno recenti che non supportano le media queries interpreteranno solo gli stili del layout di default.

/* Default Layout: 992. */
.wrapper {
	width: 896px;
}

/* Tablet Layout: 768px */
@media only screen and (min-width: 768px) and (max-width: 991px) {	
.wrapper  {
		width: 712px;	
	}
}

/*	Mobile Layout: 320px   */
@media only screen and (max-width: 767px) {	
.wrapper {
		width: 252px;
	}	
}

/*	Wide Mobile Layout: 480px  */
@media only screen and (min-width: 480px) and (max-width: 767px) {	
.wrapper {
		width: 436px;
	}	
}

In realtà Less Framework 4 lascia allo sviluppatore la massima libertà: per ogni layout infatti viene suggerito nei commenti CSS la dimensione e il numero delle colonne di una ipotetica griglia. Nella pagina di download del framework è possibile anche scegliere tra tre diversi presets tipografici, oltre all'inclusione opzionale di HTML5 Shim per abilitare il supporto ai nuovi tag HTML5 nelle vecchie versioni di Internet Explorer.

La struttura HTML

Il template presentato in questo articolo è indicato per realizzare un piccolo sito, o portfolio personale, in una unica pagina. Il layout è basato su una struttura semplice che fa utilizzo del doctype HTML5 e dei nuovi tag semantici:

  • un <header> contente l'intestazione e il menu di navigazione con le ancore.
  • alcune <section> che contengono i contenuti (un'immagine panoramica che può lasciare spazio a uno slideshow, del testo descrittivo, una galleria fotografica, un form per l'invio dei messaggi)
  • un <footer> con i collegamenti al profilo personale sui diversi social network.

Di seguito uno "scheletro" molto semplificato della struttura HTML utilizzata nell'esempio:

<header>
    <h1>Intestazione</h1>
 	 <nav>
      	<ul>
        	<li><a href="#about">About</a></li>
        	<li><a href="#portfolio">Portfolio</a></li>
        	<li><a href="#contact">Contact</a></li>
        </ul>
    </nav>
</header>
<section id="intro">
	<!-- contenuti -->	
</section> 
<section id="about">
	<!-- contenuti -->	
</section>
<section id="portfolio">
	<!-- contenuti -->	
</section>

<section id="contact">
	<!-- contenuti -->	
</section>
<footer>
	<!-- contenuti -->
</footer>

Figura 1 - struttura HTML, 4 layout per diverse risoluzioni

Layout con CSS3 Media Queries

Approfodimenti sul codice e download

Il codice presentato è ottimizzato per i browser moderni, con il supporto più avanzato alle nuove proprietà CSS3 utilizzate: quindi Safari, Chrome, Firefox 3.6+, Internet Explorer 9, Opera 10.5+, oltre naturalmente ai browser mobile di iPhone, iPad, iPod Touch o smartphone e tablet con sistema operativo Android.

Analizzando in dettaglio il foglio di stile dell'esempio, potrete notare l'utilizzo in numerose regole dei selettori CSS3 (soprattutto pseudo-classi strutturali) in modo da ridurre al minimo il markup aggiuntivo. Per estenderne il supporto ai browser meno recenti (Internet Explorer 6-7-8) è possibile includere un utilissimo script, Selectivzr (richiede un framework javascript o un selector engine), posizionato nel tag <head> nell'apposito commento condizionale. Allo stesso modo, sempre per i vecchi browser Microsoft e per l'ultimo IE Mobile, possiamo abilitare il funzionamento delle media queries utilizzando Respond.js o in alternativa CSS3-Mediaqueries.js.

Visualizzando la demo con una delle ultime versioni di Mozilla Firefox o con un browser Webkit (Safari o Chrome anche in versione mobile) è possibile notare un accattivante effetto rollover sul menu di navigazione, ottenuto impiegando le trasformazioni e transizioni CSS, incluse nei nuovi moduli CSS3 transitions e 2D transform.

Guide CSS

Responsive Desing, la guida

Progettare siti da fruire su dispositivi diversi è imprescindibile...

Guida CSS3

Scoprire e usare al meglio tutte le novità dell'ultima versione dei...

Guida CSS Tecniche essenziali

Testo, immagini, layout, form, liste, tabelle: soluzioni pronte per...

Altre guide

Newsletter @CSS

Ogni mercoledì, direttamente nella tua e-mail: guide, articoli, tutorial, FAQ e approfondimenti tecnici su CSS e Web Design.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Webmaster base

18 Giugno 2012 a Milano
Disponibilità: 6 Posti

Corso Google AdWords Base

25 Giugno 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

05 Giugno 2012 a Roma
Disponibilità: 7 Posti

Corso Webmaster base

11 Giugno 2012 a Roma
Disponibilità: 7 Posti