HTML5. Approfondimento su layout Responsive



Documenti analoghi
UTILIZZO DEI CSS. categoria e lente possiamo aggregare le istruzioni inserite ed avere infondo alla colonna stessa un anteprima.

ICARO Terminal Server per Aprile

Guida Joomla. di: Alessandro Rossi, Flavio Copes

APPROCCIO "WEB DESIGN REATTIVO": Prima di tutto costruiamo una BASE

Fabrizio Caccavello APP NO GRAZIE, LUNGA VITA A RESPONSIVE DESIGN cfabry cfabry Fabrizio Caccavello

Accessibilità e Guida all'uso del Sito

Settaggio impostazioni tema. Cliccando nuovamente su aspetto e poi su personalizza si avrà modo di configurare la struttura dinamica della template.

HTML HTML. HyperText Markup Language. Struttura di un documento. Gli elementi essenziali di un documento HTML sono i seguenti TAG: <HTML>...

PROGRAMMA DEL CORSO WEB GRAPHIC DESIGNER

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

- La formattazione con foglio di stile esterno: Come realizzare e collegare un file con codice di stile ad una pagina web.

I link e l'ipertestualità

Tutorial di HTML basato su HTML 4.0 e CSS 2

APPUNTI DI HTML (TERZA LEZIONE)

LE CARATTERISTICHE DEI PRODOTTI MULTIVARIANTE

2.3 Cenni sui fogli di stile CSS per XML

Principio. di base per una buona riuscita

Corso html 5. Di Roberto Abutzu. *********** Terza parte: Prime nozioni: Tag e prima pagina, continuazione. **********

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Realizzare il layout di un sito web senza utilizzare frame e tabelle

REPORT DI VALUTAZIONE DELL ACCESSIBILITÀ

NAVIGAORA HOTSPOT. Manuale utente per la configurazione

Collegamento remoto vending machines by do-dots

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

WORD 97 SCRIVERE UNA TESI DI LAUREA

Coder Dojo Tutorial 3

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

XSL: extensible Stylesheet Language

INDICE. IL CENTRO ATTIVITÀ... 3 I MODULI... 6 IL MY CLOUD ANASTASIS... 8 Il menu IMPORTA... 8 I COMANDI DEL DOCUMENTO...

01. Conoscere l area di lavoro

La manutenzione come elemento di garanzia della sicurezza di macchine e impianti

Android. Implementare una interfaccia utente

Consorzio Triveneto S.p.A. Payment Gateway

Comandi principali del linguaggio HTML (Hyper Text Markup Language)

Proteggiamo il PC con il Firewall di Windows Vista

Software per Helpdesk

1 2 Fase di autenticazione utente

WEB. Piccolo dizionarietto tecnologico

Novità di Access 2010

Guida all uso di Java Diagrammi ER

ColorSplitter. La separazione automatica dei colori di Colibri.. Perché ColorSplitter? Come opera ColorSplitter?

bmooble INFOMOBILITY demo environment

INTERNET EXPLORER Guida introduttiva CAPITOLO 1 Fig. 1

Esercizi di JavaScript

Creare un sito Multilingua con Joomla 1.6

Il calendario di Windows Vista

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia

<a href= page2.html > Questo é il link all altra pagina </a> <a href= page2.html > <img src= "lamiaimmagine.jpg"/> </a>

User Manual OWA for Teachers LaSIS & Service description - italiano

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Javascript: il browser

GESTIONE LISTE R VIRTUALI

LA COOKIE POLICY DI QUESTO SITO

file:///c:/formazione/photoshop-webmaster-uffici/doc/guida-winzip.htm Guida a Winzip

Che cosa è un VIRUS?

CMS MUSEO&WEB. Mappe grafiche. Andrea Tempera (OTEBAC) 12 aprile 2010

L ergonomia dei sistemi informativi

Corso html 5. Di Roberto Abutzu. *********** Quarta parte: Body ed elementi strutturali. ********** Cos'è il Body e gli elementi strutturali?

[Dimensionare la pagina-creare le tabelle-formattare le tabelle-formattare la pagina

APPLICAZIONE DI UN COMPORTAMENTO A UN'IMMAGINE E TESTO CREAZIONE GALLERIA IMMAGINI


Corso di HTML. Prerequisiti. Modulo L3. 1-Concetti generali. Browser Rete Internet Client e server. M. Malatesta 1-Concetti generali-12 28/07/2013

Capitolo 2. Operazione di limite

Primo contatto. Come rispondere alle richieste di contatto e preventivo su Internet e avere successo: linee guida per il professionista

4 3 4 = 4 x x x 10 0 aaa

Web Programming Specifiche dei progetti

Università Politecnica delle Marche. Progetto Didattico

Argo Software Srl tutti i diritti sono riservati qualsiasi riproduzione è vietata 1

NUOVA PROCEDURA DI RESET PASSWORD AUTOMATICA

Risposte e consigli ruotanti attorno a Docsafe

Soluzione dell esercizio del 12 Febbraio 2004

Uso dei modelli/template

RIFERIMENTI ATTORI GLOSSARIO. ERRORI COMUNI REV. REQUISITI INGEGNERIA DEL SOFTWARE Università degli Studi di Padova

STAMPA DI UNA PAGINA SEMPLICE

CONTENT MANAGEMENT SY STEM

Entrare nel sistema. Clicca su Entra per entrare nel sistema. PAGINA 1

Il settore moto e il credito al consumo

Lezioni di Matematica 1 - I modulo

Google AdWords. Corrispondenze Parole Chiave

Mac Application Manager 1.3 (SOLO PER TIGER)

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

APPUNTI DI HTML (SECONDA LEZIONE)

CATALOGO E-COMMERCE E NEGOZIO A GRIGLIA

Calcolo Focale. Ing. Vincenzo Falanga

HTML HyperText Markup Language:

Pagine Facebook Uno strumento prezioso per la tua azienda su Facebook

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Leggere un messaggio. Copyright 2009 Apogeo

Titolare del trattamento dei dati innanzi descritto è tsnpalombara.it

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

IL MIO PRIMO SITO NEWS USANDO GLI SCHEDARI

Formattazione. ü Introduzione

Lezione 3. Joomla 2.5

Manuale scritto da Fuso Federico 4 A Anno scolastico 2011/2012 Parte 1

Osservazioni sulla continuità per le funzioni reali di variabile reale

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Transcript:

Approfondimento su layout Responsive

In pasato la risoluzione di riferimento è stata 1024px mentre per il web design la larghezza di riferimento delle pagine è stata di 960px. Attualmente questo non è più vero: con l'avvento del mobile c'è l'esigenza di avere un layout che si adatta facilmente a tutte le risoluzioni possibili dei vari dispositivi, smartphone o tablet che siano, a prescindere dal sistema operativo. Layout liquido Una delle soluzioni fondamentali per svincolare il layout della pagina dalle ipotesi sui possibili dispositivi utilizzati dall'utente è quella di ricorrere a layout con griglie liquide, le quali non richiedono assunzioni sulla view-port, perché sono appunto, ideati per adattarsi a qualsiasi risoluzione. Nell'impostazione di questa tipologia di layout nelle nostre definizioni CSS, in riferimento alle dimensioni, dobbiamo ragionare per percentuali, e non per dimensione fissa, dovremmo gestire il posizionamento delle nostre sezioni di pagina anche via javascript, faremo ricorso alle mediaquery per meglio applicare le classi CSS in base alle dimensioni di visualizzazione.

Layout liquido Consideriamo il seguente codice HTML <section id="wrapper"> <main> <section class="intro"></section> <section class="elencobox"> <section class="singlebox"></section> <section class="singlebox"></section> <section class="singlebox"></section> <section class="singlebox"></section> <section class="singlebox"></section> <section class="singlebox"></section> <section class="singlebox"></section> <section class="singlebox"></section> <section class="singlebox"></section> </section> </main> <aside></aside> <footer></footer> </section> </body> html { margin: 0; padding: 0; } #wrapper { margin: 3% auto; width: 90%; background: #ffffff; background: rgba(255, 255, 255, 0.8); } aside { float: left; width: 34%; margin-bottom: 1%; } main { float: right; width: 65%; margin-bottom: 1%; }.elencobox { width: 100%; }.elencobox.singlebox { margin-left: 1.538462%; margin-top: 1.538462%; width: 32.307692%; float: left; }

Layout liquido Come si può notare tutte le dimensioni sono state espresse in percentuali, quindi si adatteranno alle dimensioni della finestra di visualizzazione. Uno dei principali problemi delle griglie liquide consiste nel fatto che, al diminuire della larghezza della viewport, lo spazio a disposizione dei contenuti diventa più stretto e testi e immagini non solo possono sforare gli spazi in cui sono contenuti ma, anche quando gli spazi fossero rispettati, testi e immagini possono comunque disporsi in modo da essere scarsamente leggibili. Smartphone e tablet ingrandiscono o riducono differenti elementi della pagina al fine di mostrare una pagina il più possibile coincidente con quella che si vedrebbe su un PC, con risultati a volte fedeli ma scarsamente fruibile. Discorso analogo sulle immagini, in quanto avendo per loro natura dimensione fissa in pixel, dobbiamo essere in grado di ridimensionarle in base al contesto di visualizzazione.

Definizione di viewport Si tratta di un meta tag che viene inserito nell'<head> delle pagine ottimizzate per smartphones per indicare al browser del telefono che la sta mostrando il livello di zoom da utilizzare nella visualizzazione. Vediamo un esempio pratico. Nella seguente immagine vediamo come una pagina senza meta tag viewport viene visualizzata da un iphone. I caratteri sono molto piccoli e quasi illeggibili. Il motivo è che il telefono, per rendere il più possibile del sito visibile, setta una larghezza dello schermo di 800 o 900 pixel (a seconda del browser), rendendo dunque pressochè inutilizzabile qualunque sito (l'idea è che si farà poi uno zoom nella parte che ci interessa).

Definizione di viewport Se invece noi vogliamo rendere il nostro sito già ben visibile dagli smartphones ci basterà aggiungere questa riga nell'<head> della pagina: <meta name="viewport" content="width=device-width, user-scalable=no"> e questo è quello che vedremo:

Definizione di viewport Attraverso il meta tag viewport abbiamo detto al browser di usare come larghezza dello schermo quella del telefono (nel caso dell'iphone 320px), senza fare dunque nessuno zoom-out. Ecco perchè i caratteri sono molto più leggibili e grandi. Abbiamo poi anche detto (attraverso il comando user-scalable=no) di non consentire all'utente di cambiare il livello di zoom - questo per evitare che inavvertitamente il nostro visitatore faccia uno zoom-in o zoom-out scombinando il nostro sito ottimizzato.

Definizione di viewport Ecco di seguito tutti i valori che possono essere usati nell'attributo "content" di questo meta tag: Valore width height initial-scale user-scalable minimum-scale maximum-scale Descrizione la larghezza del viewport. Si può specificare un valore in pixel (es: "320px") oppure "device-width".quest'ultima maniera è quella consigliata dal momento che così facendo prende la larghezza del device specifico, iphone, ipad, Android o qualsiasi cosa questo sia. stesso discorso della width ma per l'altezza. Oltre ai pixel si può usare "device-height". In genere questo valore non viene indicato. in una scala da 0 a 10, indica il livello di zoom iniziale (con 1 = nessuno zoom). Il consiglio è lasciare questo valore vuoto o settarlo a "1". yes/no. Se no l'utente non può cambiare il livello di zoom della pagina. da 0 a 10, se user-scalable è "yes" indica il livello minimo di zoom che l'utente può impostare. da 0 a 10, se user-scalable è "yes" indica il livello massimo di zoom che l'utente può impostare.

Media Query La specifica CSS3 ha introdotto meccanismi per l'analisi del dispositivo usato dall'utente che si basano su prorietà quali la risoluzione o l'orientamento dello schermo. Questi meccanismi, detti media query, sono particolarmente utili per la realizzazione di siti responsive. Fino alla specifica CSS2 l'unico strumento a disposizione dei web designer per differenziare l'esperienza utente fra PC e smartphone o altri dispositivi era l'utilizzo di una fra le seguenti tecniche: <style type="text/css"> @import "screen.css" screen; @import "handheld.css" handheld; </style> <style type="text/css"> @media screen { /* Recole CSS per il media screen */ } @media handheld { /* Recole CSS per il media handheld */ } </style> <style type="text/css" media="screen"></style> <style type="text/css" media="handheld"></style> <link rel="styleshhet" type="text/css" media="screen" href="screen.css" /> <link rel="styleshhet" type="text/css" media="handheld" href="handheld" />

Media Query Nonstante i numerosi tipi di media previsti, questo tipo di soluzione non ha mai sfondato tra i produttori di browser mobile, tanto meno tra i web designer. La specifica CSS3 ha però introdotto nuovi meccanisi per l'analisi del tipo di dispositivi usato dall'utente, meccanismi che si basano su proprietà del device quali la risoluzione o l'orientamento dello schermo; questi meccanismi sono definiti media query e sono particolarmente utili per i dispositivi mobile e come base per i layout responsive. Una media query è costituita dalla regola @media seguita da una parola chiave che rappresenta il tipo di medium (ad esempio screen ) eventualmente seguita da una o più espressioni precedute dalla parola chiave and, le quali verificano condizioni poste su alcune caratteristiche del medium indicato (dette media feature ): quando le condizioni sono vere per quel medium allora verranno applicate quelle regole CSS di formattazione. Una media query può anche iniziare con la parola chiave only che ha il solo scopo di nascondere il foglio di stile ai browser che non supportano le media query (ad esempio IE8 e precedenti); possiamo anche avere la parola chiave not che nega il risultato delle media query.

Media Query Esempi di dichiarazioni CSS con media query: <style type=text/css"> @media screen { /* Recole CSS per il media screen */ } @media all and (color) { /* regole */ } @media only screen and (min-device-width: 800px) { /* regole */ } @media only screen and (device-width: 320px) and (orientation: portrait) { /* regole */ } </style> Le espressioni sono racchiuse tra parentesi tonde e possono contenere una media feature (ad esempio color ) oppure una media feature e un valore con cui fare il confronto ( ad esempio min-device-width ). Le media query sono utili per associare il giusto foglio di stile non ad uno specifico medium (screen o handheld) ma ad un medium che abbia determinate caratteristiche. A questo punto dovrebbe essere chiara la grande utilità del tag meta viewport : senza l'uso di tale tag gli smartphone e tablet non risponderebbero correttamente alle media query.

Internet Explorer 8 e Media Query Internet Explorer 8 (e precedenti) non supporta le media query, per cui è necessario trovare delle soluzioni per ovviare al problema. La prima soluzione consiste nell'utilizzare librerie Javascript che forniscono supporto per le media query anche per IE; le librerie più interessanti sono Respond.js ( https://github.com/scottjehl/respond ) e css3-mediaquery.js ( https://code.google.com/p/css3-mediaqueries-js ). Respond.js è più rapida ma supporta solamente le media feature min-width e maxwidth che sono quelle più utili ai fini del responsive web design. Un ultimo approccio consiste nel caricare file CSS supplementari, contenente le regole aggiuntive, solo a Internet Explorer 8 e precedenti per mezzo dei commenti condizionali: <!--[if lte IE8]> <link rel="styleshhet" href="ie8-specific.css" > <![endif]-->

Immagini Responsive Nel processo di realizzazione di un sito di adattarsi a qualsiasi dispositivo non può essere ignorato il problema delle gestione delle immagini. Molto del peso di una pagina è concentrato nelle immagini in essa contenute, pertanto utilizzare immagini sufficientemente grandi (grandi almeno quanto la massima dimensione alla quale saranno visualizzate), cosi da poterle riproporre a diverse risoluzioni e diversi dispositivi comporta un inutile aumento del peso della pagina, con conseguente (e a volte grave) riduzione delle performance. Nel processo di realizzazione di una pagina in grado di adattarsi con efficacia alle varie modalità attraverso le quali questa può essere fruita non è possibile ignorare le performance, sia dal punto di vista del caricamento delle immagini stesse, sia dal punto di vista del traffico generato, ma anche dell'occupazione di memoria del browser; dispositivi come smarphone e tablet possono collegarsi al Web mediante connessioni Wi- Fi veloci o connessioni via rete cellulare, a volte lente e instabili. Fornire mediante una connessione lenta e a consumo un'immagine 748x470 pixel quando magari è sufficiente una a 310x195 pixel, fornita con il solo scopo di dare una resa grafica migliore, non può essere considerata una buona pratica di responsive web design.

Immagini Responsive Il problema è più complesso e occorre considerare: Servire immagini delle giuste dimensioni è importante quando si ha a che fare con connessioni lente e a consumo, mentre con connessioni ad alta velocità il problema non si pone; La giusta dimensione non dipende solo dalla viewport messa a disposizione dai dispositivi utilizzati, ma dal browser e dalla connessione disponibile; La velocità di connessione non è facilmente valutabile e implica la sua misurazione prima di utilizzarla come variabile per la determinazione del tipo di immagine da visualizzare I display retina (o comunque con elevata densità di punti per pollice) introdotti ad Apple con iphone e ipad e successivamente implementati in altri dispositivi, sono caratterizzati da una elevata densità di pixel che però non riflette le dimensioni della viewport: iphone5 ha una viewport di 320x568 pixel ma il display è costituito da 640x1136 pixel; pertanto per visualizzare un'immagine a tutto schermo, senza che appaia sgranata, ne occorre una da 640x1136 pixel.

Immagini Responsive La resa di un'immagine non predisposta per i display retina su è visibilmente peggiore di una predisposta per essi; pertanto può essere necessario discriminare le immagini da servire all'utente non solo in base alla viewport e alla velocità di connessione ma anche in base alla tipologia del display (retina o meno). Immagini Responsive: Possibili soluzioni Una delle soluzioni classiche per fornire specifiche informazioni a specifici browser consiste nell'inserirle nell'html e tramite CSS selezionare quali mostrare e quali nascondere. In questo modo però la classica soluzione CSS non solo non è utile, ma risulta dannosa in quanto i browser precaricano nella cache tutte le immagini inserite nell'html, prima ancora che i CSS siano applicati; è ancor più dannosa in quanto, inserire tutte le possibili varianti di un'immagine comporta l'aumento del numero di immagini da scaricare. Una soluzione Javascript che si occupasse di riscrivere gli attributi src delle immagini presenti nella pagina non sarebbe molto efficiente, poiché i browser avviano il precaricamento delle immagini presenti sull'html prima ancora che le istruzioni JS possano modificare il DOM: in questo modo verrebbero caricate sia le immagini presenti inizialmente, sia quelle da sostituire. Il problema non è affatto banale e non c'è ancora una soluzione definitiva e stabile.

Immagini Responsive: Standard W3c in via di definizione Presso il W3C sono in corso di definizione alcune proposte, tra cui l'attributo srcset ideato da Apple per supportare le immagini per display Retina: <img alt="alt title" src="banner-jpg" srcset="banner-hd.jpg 2x, banner-iphone.jpg 100w, banner-iphone-hd 100 2x" /> In pratica l'attributo srcset consente di indicare una lista di possibili immagini da utilizzare in base alla dimensione della viewport e alla densità dei pixel del display: un valore del tipo 100w indica che la larghezza minima della viewport è di 100pixel.

Immagini Responsive: Standard W3c in via di definizione Un'altra proposta del W3C in via di definizione è l'elemento <picture>: <picture width="500" height="500"> <source media="(min-width:45em)" src="lg.jpg" /> <source media="(min-width:18em)" src="md.jpg" /> <source src="sm.jpg" /> <img src="sm.jpg" alt="" /> <p>accesible text</p> </picture> Il file da usare come fonte di dati per l'elemento <picture> è quello indicato nell'attributo src dell'elemento <source> il cui attributo media viene selezionato dalle media query correnti di visualizzazione della pagina.

Immagini Responsive: Soluzioni Javascript Qui un'elenco delle maggiori librerie Javascript utilizzate al momento: - Picturefill: https://github.com/scottjehl/picturefill - Filament Group Responsive Images: https://github.com/filamentgroup/responsive-images - jquery Pictures: http://jquerypicture.com/ - HiRSC: https://github.com/1marc/hisrc