Advertisement
  1. Web Design
  2. UX/UI
  3. Responsive Design

Element Queries: il futuro della progettazione web responsive

Scroll to top
Read Time: 6 min

() translation by (you can also view the original English article)

Le media queries sono una parte fondamentale della moderna progettazione web, ma non sempre sono perfette. In questo articolo daremo uno sguardo al concetto di "element queries"; ciò che in molti ritengono possa essere il futuro della progettazione web responsiva.

All'inizio

L'articolo di Ethan sulla progettazione del web responsivo ha ridefinito per sempre i modi con cui costruiamo i siti internet. Il suo articolo ha ispirato, ed è stato rapidamente adottato dai designers e dagli sviluppatori web. Sono emersi approcci quali "mobile first", "desktop first" e "device agnostic", sono stati sviluppati modelli di progettazione, sono stati introdotti nuovi standard come l'elemento <picture> e ora negli ambienti di sviluppo abbiamo a disposizione innumerevoli opzioni che rendono semplice lo sviluppo di siti web responsivi.

Non sviluppiamo più siti web per una particolare dimensione dello schermo, browser o dispositivo. Invece, li progettiamo affinché siano equalmente apprezzabili su ciascun dispositivo, a qualsiasi dimensione dello schermo. Ciò avvalendoci delle "media queries" –senza dimenticare il meta tag viewport.

Media queries

Le media queries sono progettate per permetterci di plasmare specifiche regole di stile per un ambiente specifico. Uno degli usi più comuni delle media queries è quello di applicare gli stili all'interno di determinate gamme di larghezza del viewport. Il seguente codice, ad esempio, nasconde la barra laterale quando il sito internet è visualizzato attraverso un viewport con un ampiezza maggiore di 720px.

1
.site-sidebar {
2
  display: flex;
3
	flex: 1 1 320px;
4
}
5
@media ( max-width: 720px ) {
6
	.site-sidebar {
7
    	display: none;
8
    }
9
}

Le media queries si sono evolute con l'evolversi dei dispositivi, arricchendosi di nuove caratteristiche come orientation e resolution. L'esempio che segue mostra come potremmo usare queste caratteristiche per fornire un immagine più grande su uno schermo ad alta risoluzione.

1
.site-logo a {
2
	display: inline-block;
3
	background: url( images/logo.png ) no-repeat;
4
}
5
@media screen and ( min-resolution: 2dppx ) {
6
	background: url( images/logo@2x.png );
7
}

Le media queries sono diventate un componente indispensabile dell'esperienza responsiva. Affrettatevi a leggere questi articoli, dispense e consigli su come sfruttare le media queries nelle pubblicazioni precedenti di Tuts+ e nel resto di Internet.

Ad ogni modo

Le media queries non sono la soluzione ad ogni problema del web design responsivo e non hanno mai aspirato ad esserlo.

Oggi, c'è un'ampia gamma di dispositivi sul mercato con varie grandezze e caratteristiche, che confondono i confini tra i dispositivi "mobile" e "desktop" (mi riferisco ai laptops ibridi). Per questa ragione, mantenere l'estetica di un sito web, una buona esperienza per l'utente, e le performance non è mai stato così arduo.

Durante il Google IO 2015, Google ha permesso agli sviluppatori di verificare i propri siti web attraverso più di 100 dispositivi differenti.

E una volta che aggiungete nel mucchio fattori quali pubblicità, tabelle, e contenuti ereditati, la situazione non può che peggiorare. Presto vi imbatterete negli aspetti "non così belli" delle media queries.

Media Queries: l'aspetto "non così bello"

Considerate l'esempio seguente. Abbiamo un componente UI per mostrare il profilo del nostro collega. Vogliamo usare lo stesso componente in varie parti del sito. Questo esempio mostra come si comporta la UI in un viewport largo 780px.

Nella pagina del "profilo utente", inseriamo sulla sinistra l'avatar dell'utente e sulla destra il suo nome utente così come la sua biografia.

La disposizione del profilo utente, nella pagina "User".

Nella pagina "team" del sito, comunque, la disposizione scorre; l'avatar dell'utente è ora posizionato in cima, e il nome così come la biografia sottostanno.  La dimensione del carattere potrebbe anche essere leggermente minore.

Il profilo utente nella pagina "team".

La situazione può essere corretta con le media queries. Possiamo, ed esempio, scrivere il CSS come segue:

1
/**

2
 * Profile

3
 */
4
.team-profile {
5
	text-align: center;
6
}
7
.team-profile .bio {
8
	margin-top: 20px;
9
	font-size: 14px;
10
}
11
@media ( min-width: 480px ) {
12
	.team-profile {
13
		text-align: left;
14
		display: flex;
15
	}
16
	.team-profile .avatar {
17
		flex: 0 0 120px;
18
	}
19
	.team-profile .bio {
20
		font-size: 16px;
21
		flex: 0 1 580x;
22
	}
23
}
24
25
/**

26
 * Profile card.

27
 */
28
.team-profile-card {
29
	text-align: center;
30
}
31
.team-profile-card .bio {
32
	margin-top: 20px;
33
	font-size: 14px;
34
}
35
36
/**

37
 * Probably, some overrides

38
 */
39
.page .team-profile-card { ... }

Esso è fissabile, fintanto che usiamo alcune classi di indentificazione addizionale: .user-profile.user-profile-card.

In ogni caso, ciò impedisce alla nostra UI di essere un componente riutilizzabile; una UI che può essere posizionata in ogni punto del sito internet, in grado di adattarsi a ciò che ha attorno.

In questo esempio vogliamo che la disposizione del nostro componente si adatti in caso venga inclusa in un piccolo contenitore, invece di essere schiacciata dal viewport del browser. Al posto di basarsi sulla grandezza del viewport per cambiare la disposizione, perché non farlo al livello dell'elemento?

Queries dell'emento (contenitore)

Il concetto di element queries emerse intorno all'inizio del 2012; un paio di anni dopo che la progettazione di siti responsivi diventò la metodologia più utlizzata. Purtroppo, a quel tempo probabilmente non si sentiva ancora la necessità pressante di promuoverle a standard web, ed il mondo continuò ad adottare i sistemi precedenti.

Le comunità del web avviarono iniziative indipendenti. L'RICG (Responsive Issue Community Group), lo stesso gruppo che fece nascere l'elemento <picture>, aggiunse le element queries nella lista delle questioni mentre altri sviluppatori crearono una libreria JavaScript EQCSS, per emulare questa funzionalità.

Le element queries si comportano in maniera simile alle media queries; la differenza è che le prime utilizzano come riferimento le dimensioni dell'elemento anziché quelle del viewport. Questo ci da' l'opportunità di strutturare sistemi ad UI modulari, mantenendo un codice conciso alla base. Dato lo stesso esempio, possiamo riscrivere gli stili della nostra UI con EQCSS, come segue:

1
.team-profile {
2
    text-align: center;
3
}
4
.team-profile .bio {
5
	margin-top: 20px;
6
	font-size: 14px;
7
}
8
@element ".team-profile" and ( min-width: 480px ) {
9
	.team-profile {
10
		display: flex;
11
	}
12
	.team-profile .avatar {
13
		flex: 1 1 120px;
14
	}
15
	.team-profile .bio {
16
		text-align: left;
17
		font-size: 16px;
18
		flex: 1 1 580x;
19
	}
20
}

In questo caso, non badiamo alla larghezza del viewport. Come potete vedere qua sopra, fin quando l'UI è larga 480px o più, mostriamo .avatar e .bio fianco a fianco. Quando l'UI si riduce al di sotto dei 480px, facciamo in modo che .avatar e .bio si impilino e si allineino al centro.

Concludendo

Giusto per chiarire, non sto dicendo che l'utilizzo delle media queries sia il male assoluto. Le media queries sono fantastiche e ciò è testimoniato da tutti i siti internet che le utilizzano oggigiorno. Le media queries e le element queries possono certamente coesistere. Comunque ci sono una serie di ipotetici layout dove l'utilizzo delle element queries avrebbe più senso rispetto alle media queries. 

Sfortunatamente, le element queries sono ancora lontane dall'essere uno standard web; la nostra speranza a questo proposito giace assieme a quella di tutta la brava gente dell'RICG.

Nell'attesa, possiamo prendere confidenza con le potenzialità delle element queries attraverso la libreria javascript EQCSS. E ciò è proprio quel che faremo nel prossimo tutorial. Continuate a seguirci!

Altre letture

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.