-
Trucchi per un layout mobile?Ho notato che quel CMS che stavo mettendo insieme, quando lo vedo sull'iFon, ha bisogno di specificare un corpo carattere di almeno 2em nel body, se no viene fuori testo lillipuziano. In proporzione, le icone di dimensioni specificate in pixels, sono piu` piccole. La sensazione e` che l'iFon riduca un po' tutto.
Mi chiedevo: ma non e` che ci sono trucchetti particolari per un layout "handheld" che si veda bene su un handheld?
-
Re: Trucchi per un layout mobile?Scritto daNon Autenticatoil 2010-07-10 01:59:00.0 alle 2010-07-10 01:59:00.0> Ho notato che quel CMS che stavo mettendo
> insieme, quando lo vedo sull'iFon, ha bisogno di
> specificare un corpo carattere di almeno 2em nel
> body, se no viene fuori testo lillipuziano. In
> proporzione, le icone di dimensioni specificate
> in pixels, sono piu` piccole. La sensazione e`
> che l'iFon riduca un po'
> tutto.
>
> Mi chiedevo: ma non e` che ci sono trucchetti
> particolari per un layout "handheld" che si veda
> bene su un handheld?
>
Occorrerebbe che il server si accorga se il client è un handheld, cioè che il client gli passi questa informazione.-
Re: Trucchi per un layout mobile?> Occorrerebbe che il server si accorga se il
> client è un handheld, cioè che il client gli
> passi questa
> informazione.
Si`, questo l'ho fatto: guardo se l'user agent passa una ID string che contiene tracce riconducibili a un handheld. Per esempio gli iPhone e gli smartphones basati su Android li riconosce.function isMobile () { if (isset ($_COOKIE['mobileOff'])) return (false); // one-time disable if (isset ($_COOKIE['mobileDisable'])) return (false); // permanent disable $isMobileMatch = array ( 'Android' . chr (32), 'BlackBerry', 'Blazer', 'Fennec/', 'IEMobile', 'iPhone;', 'LGE' . chr (32), 'LG-', 'LGX', 'MIB/', 'Mini/', 'Mobi/', 'Mobile/', 'MobileExplorer', 'PalmOS', 'PalmSource', 'PPC;', 'Profile/', 'Smartphone;', 'Symbian OS;', 'SymbianOS/', 'Touch_Pro', 'touch_pro', 'UCWEB', 'UP.Browser/', 'UP.Link/', 'webOS/', 'Windows CE;', 'Windows Mobile', 'Windows Phone', 'XV6850' ); foreach ($isMobileMatch as $s) { $matched = strpos ($_SERVER['HTTP_USER_AGENT'], $s) === false ? false : true; if ($matched == true) { return (true); } } return (false); }
Se poi c'e` anche la possibilita` di interrogare, via javascript, il browser in merito alla grandezza della finestra, gli script vengono informati (caricandoli in XMLHttpRequest) anche dell'esatta risoluzione orizzontale in pixels (nel codice sottostante, hResolution): l'iPhone pero` sembra dichiarare una dimensione maggiore della risoluzione fisica del suo display. Per sapere esattamente come stanno le cose, dovrei farmi dare un alert col valore:hResolution = document.documentElement.clientWidth ? document.documentElement.clientWidth : hResolution; hResolution = document.body.clientWidth ? document.body.clientWidth : hResolution; hResolution = window.innerWidth ? window.innerWidth : hResolution; hResolution = top.innerWidth ? top.innerWidth : hResolution; args = new Array ('sectionName', 'documentName', 'hResolution'); values = new Array (sectionName, documentName, hResolution); clearTimeout (hPSRTimeout); dLoad ('cms/display.php', args, values, dLoadCompletion);
Al che ho messo insieme un CSS alternativo che... si vede abbastanza bene, per carita`, ma mi sembra strano dover usare 2em come dimensione di base per il testo.
-
Re: Trucchi per un layout mobile?Scritto daNon Autenticatoil 2010-07-10 02:14:00.0 alle 2010-07-10 02:14:00.0
- Scritto da: alex.tg
> > Occorrerebbe che il server si accorga se il
> > client è un handheld, cioè che il client gli
> > passi questa
> > informazione.
>
> Si`, questo l'ho fatto: guardo se l'user agent
> passa una ID string che contiene tracce
> riconducibili a un handheld. Per esempio gli
> iPhone e gli smartphones basati su Android li
> riconosce.
>
>function isMobile () { > > if (isset ($_COOKIE['mobileOff'])) return > (false); // one-time > disable > if (isset ($_COOKIE['mobileDisable'])) > return (false); // permanent > disable > > $isMobileMatch = array > > ( > > 'Android' . chr (32), > 'BlackBerry', > 'Blazer', > 'Fennec/', > 'IEMobile', > 'iPhone;', > 'LGE' . chr (32), > 'LG-', > 'LGX', > 'MIB/', > 'Mini/', > 'Mobi/', > 'Mobile/', > 'MobileExplorer', > 'PalmOS', > 'PalmSource', > 'PPC;', > 'Profile/', > 'Smartphone;', > 'Symbian OS;', > 'SymbianOS/', > 'Touch_Pro', > 'touch_pro', > 'UCWEB', > 'UP.Browser/', > 'UP.Link/', > 'webOS/', > 'Windows CE;', > 'Windows Mobile', > 'Windows Phone', > 'XV6850' > > ); > > foreach ($isMobileMatch as $s) { > > $matched = strpos > ($_SERVER['HTTP_USER_AGENT'], $s) === false ? > false : > true; > > if ($matched == true) { > > return (true); > > } > > } > > return (false); > > }
>
> Se poi c'e` anche la possibilita` di interrogare,
> via javascript, il browser in merito alla
> grandezza della finestra, gli script vengono
> informati (caricandoli in XMLHttpRequest) anche
> dell'esatta risoluzione orizzontale in pixels
> (nel codice sottostante, hResolution): l'iPhone
> pero` sembra dichiarare una dimensione maggiore
> della risoluzione fisica del suo display. Per
> sapere esattamente come stanno le cose, dovrei
> farmi dare un alert col
> valore:
>
>hResolution = > document.documentElement.clientWidth ? > document.documentElement.clientWidth : > hResolution; > hResolution = document.body.clientWidth ? > document.body.clientWidth : > hResolution; > hResolution = window.innerWidth ? > window.innerWidth : > hResolution; > hResolution = top.innerWidth ? top.innerWidth : > hResolution; > > args = new Array ('sectionName', 'documentName', > 'hResolution'); > values = new Array (sectionName, documentName, > hResolution); > > clearTimeout (hPSRTimeout); > dLoad ('cms/display.php', args, values, > dLoadCompletion);
>
> Al che ho messo insieme un CSS alternativo che...
> si vede abbastanza bene, per carita`, ma mi
> sembra strano dover usare 2em come dimensione di
> base per il testo.
>
Perché dai la dimensione in em e non pixel?-
Re: Trucchi per un layout mobile?> Perché dai la dimensione in em e non pixel?
Mi sembra piu` adattabile: nella mia idea, a seconda della risoluzione dello schermo, il dispositivo dovrebbe impostare 1em a una dimensione in pixels normalmente leggibile. Ad esempio sul mio desktop, tutti i browser traducono 1em in 16px. Ma l'iPhone sembra tradurlo in qualcosa come 6-7px, lillipuziano per leggerlo.
Sempre nella mia idea, se ad esempio l'iPhone 3GS che ho io la traducesse in 16px, l'iPhone 4, avendo risoluzione doppia rispetto al 3/3G/3GS, dovrebbe tradurre 1em in 32px.
Insomma, pensavo che 1em fosse un'astrazione per "un corpo carattere facilmente leggibile".
-
Re: Trucchi per un layout mobile?Scritto daNon Autenticatoil 2010-07-10 02:28:00.0 alle 2010-07-10 02:28:00.0> > Perché dai la dimensione in em e non pixel?
>
> Mi sembra piu` adattabile: nella mia idea, a
> seconda della risoluzione dello schermo, il
> dispositivo dovrebbe impostare 1em a una
> dimensione in pixels normalmente leggibile. Ad
> esempio sul mio desktop, tutti i browser
> traducono 1em in 16px. Ma l'iPhone sembra
> tradurlo in qualcosa come 6-7px, lillipuziano per
> leggerlo.
>
> Sempre nella mia idea, se ad esempio l'iPhone 3GS
> che ho io la traducesse in 16px, l'iPhone 4,
> avendo risoluzione doppia rispetto al 3/3G/3GS,
> dovrebbe tradurre 1em in
> 32px.
>
> Insomma, pensavo che 1em fosse un'astrazione per
> "un corpo carattere facilmente leggibile".
>
Non ho mai provato a usare gli em, però eoni fa avevo avuto un problema simile con i pt, per cui sono passato ai px.
Potresti provare con le percentuali, però dandolo in pixel non si hanno sorprese, tranne per il fatto che non tutti gli handheld hanno lo stesso numero di pixel.http://www.w3.org/TR/CSS21/fonts.html#font-size-pr...
-
-
-
Re: Trucchi per un layout mobile?È un lavoro inutile, vedi la mia risposta. I CSS già contengono appositi comandi per gli handheld che possono attivare intere sezioni di CSS solo su quelli.
-
Re: Trucchi per un layout mobile?> È un lavoro inutile, vedi la mia risposta. I CSS
> già contengono appositi comandi per gli handheld
> che possono attivare intere sezioni di CSS solo
> su
> quelli.
Non lo e` in questo caso. Non e` solo una questione di CSS. Preferisco attivare determinate ottimizzazioni, come il non caricare l'intero script di supporto alle funzioni di content management, che non sono comunque accessibili dal layout mobile. Mi serve piu` controllo.
-
-
-
-
Re: Trucchi per un layout mobile?- Scritto da: alex.tg
> Ho notato che quel CMS che stavo mettendo
> insieme, quando lo vedo sull'iFon, ha bisogno di
> specificare un corpo carattere di almeno 2em nel
> body, se no viene fuori testo lillipuziano. In
> proporzione, le icone di dimensioni specificate
> in pixels, sono piu` piccole. La sensazione e`
> che l'iFon riduca un po'
> tutto.
>
> Mi chiedevo: ma non e` che ci sono trucchetti
> particolari per un layout "handheld" che si veda
> bene su un handheld?
>
Ci sono due tipi di unità: relative e assolute.
Le dimensioni assolute non cambiano in base al monitor, alla risoluzione, ecc. Queste sono:
* Assolute
- in (inch)
- cm (centimetri)
- mm (millimetri)
- pt (points = 1/72 inch)
- pc (pica = 1/6 inch)
* Relative
- % (percentuale)
- em (altezza della lettera M maiuscola, corrisponde alla dimensione del font [1em == 100% font size del valore precedente])
- ex (altezza della lettera x minuscola)
Poi ci sono i pixel (px) che si possono inserire fra le misure relative poiché dipendono dalla dimensione del pixel sul monitor (quindi dalla risoluzione).
Quando si incomincia a scrivere il CSS di un sito web è bene partire con quelli che si chiamano "reset" stylesheet. Servono ad azzerare le differenze fra i vari browser e partire da una base comune. I vari browser infatti differiscono anche di molto circa i font, i margini, i padding, ecc... soprattutto per quanto riguarda le Form, è bene quindi inserire nel proprio CSS come prima cosa il comando:
@import "reset.css";
che caricherà il file "reset.css" con i comandi necessari al reset del foglio di stile del browser (per partire da "tabula rasa").
Un esempio di foglio di stile di reset è questo:
http://yui.yahooapis.com/2.8.1/build/reset/reset-m...
Subito dopo l'import definiamo il font-size e il font-family nel tag "body" del CSS. Il font-size è bene sia espresso in "pt" (points) in questo modo, qualsiasi sia il dispositivo, la dimensione del font sarà sempre quella.
Successivamente, tutto ciò che conterrà il body, avrà i font specificati in _percentuale_. In questo modo cambiando il font-size del body cambierà il font-size di tutto il resto della pagina perché è relativo a quello.
Se la pagina ha bisogno di essere renderizzata in modo diverso in base allo strumento utilizzato per visualizzarlo (schermo [screen], stampa [print], dispositivo mobile [handheld], televisione [tv], ecc) è possibile usare all'interno del CSS le così dette "at-rules".
Esempio:@import "reset.css"; body { font-size: 9pt; font-family: Tahoma, Arial, sans-serif; } h1 { font-size: 140%; color: blue; text-shadow: 3px 2px 3px black; } @media handheld { body { font-size: 8pt; } h1 { color: red; text-shadow: none; } }
Nell'esempio sopra la pagina userà il font di dimensione 9pt come base per lo schermo, la stampa, la tv, ecc... mentre per i dispositivi mobili userà il font di dimensione 8pt. Inoltre, gli header di tipo 1, per tutti i browser (che lo supportano, quindi non IE) saranno renderizzati con un ombra che ne risalta il testo, mentre per i dispositivi mobili l'ombra svanisce e il testo cambia colore.
-----------------------------------------------------------
Modificato dall' autore il 10 luglio 2010 02.32
------------------------------------------------------------
Re: Trucchi per un layout mobile?dunque... analizzando tutto quello che hai menzionato, mi sono occupato del "reset" degli elementi usati, e ho usato un foglio di stile separato per il media type "handheld" (oltre allo sniffing per adattare, eventualmente, certi contenuti), e in cui ho ben visto di rendere relative tutte le misure a quella specificata per 'body'.
Quel che non ho fatto e` specificare la dimensione in pt.
Avevo messo 1em, e nel caso di un desktop andava bene, nel caso dell'iPhone risultava molto piu` piccola. Provo coi pt e ti faccio sapere.
-
Re: Trucchi per un layout mobile?> Provo coi pt e ti faccio sapere.
>
Risultati comunque ridotti in scala, sia coi pt che coi px. Per l'iPhone, 24px sono comparabili a 12px altrove. Sembra che l'intero rendering avvenga in scala, come anche testimonierebbero le dimensioni in pixels riportate per la larghezza dello schermo (sempre 980, eccetto un insignificante 981 in due casi).
Mah!
-
Re: Trucchi per un layout mobile?
- Scritto da: alex.tg
> > Provo coi pt e ti faccio sapere.
> >
>
> Risultati comunque ridotti in scala, sia coi pt
> che coi px. Per l'iPhone, 24px sono comparabili a
> 12px altrove. Sembra che l'intero rendering
> avvenga in scala, come anche testimonierebbero le
> dimensioni in pixels riportate per la larghezza
> dello schermo (sempre 980, eccetto un
> insignificante 981 in due
> casi).
>
> Mah!
Che usando i pixel il rendering possa risultare in scala è normale. Molti handheld hanno una "risoluzione virtuale" diversa da quella reale... che invece le dimensioni assolute risultino dimezzate... questo è un altro paio di maniche.
Quindi vuoi dire che su iPhone 1cm non corrisponde ad 1cm ma a mezzo centimetro?
Prova a creare un div con bordi visibili di larghezza 1cm, prendi poi una stecca e misuralo sul display...-
Re: Trucchi per un layout mobile?Vedo che alcuni suggeriscono di aggiungere:
<meta name="viewport" content="width=device-width,initial-scale=1.0"/>
http://davidbcalhoun.com/2010/viewport-metatag
-
Re: Trucchi per un layout mobile?> Vedo che alcuni suggeriscono di aggiungere:
> <meta name="viewport"
> content="width=device-width,initial-scale=1.0"/>
>
>
> http://davidbcalhoun.com/2010/viewport-metatag
Appunto.
Era QUESTO che volevo sapere!
La sequenza piu` compatibile dovrebbe essere:<meta name="viewport" content="width=320, user-scalable=no"> <meta name="HandheldFriendly" content="true"> <meta name="MobileOptimized" content="320">
In base alle informazioni a:
http://learnthemobileweb.com/2009/07/mobile-meta-t...
Ci voleva tanto a suggerirlo?
Cazzoni!
-
-
-
-
-
Re: Trucchi per un layout mobile?Scritto daNon Autenticatoil 2010-07-10 13:59:00.0 alle 2010-07-10 13:59:00.0> Il font-size
> è bene sia espresso in "pt" (points) in questo
> modo, qualsiasi sia il dispositivo, la dimensione
> del font sarà sempre quella.
Ma in siti con un'impaginazione grafica anche banale la dimensione dei caratteri non deve essere in assoluto sempre la stessa, ma essere la stessa in relazione alla pagina.
Se hai un menu orizzontale che con i caratteri 11px sta su una sola riga, permettere al browser di ingrandire i caratteri su un monitor di risoluzione diversa può voler dire fargli occupare due o più righe e sballare l'impaginazione.
Non ricordo più cosa mi fosse successo, ma questo era il motivo per cui ero passato dai pt ai px.
-
-
layout mobile (risposte di iPhone)
alert (document.documentElement.clientWidth); alert (document.body.clientWidth); alert (window.innerWidth); alert (top.innerWidth);
Risposte di iPhone 3GS:
in orientamento portrait: 980, 980, 980, 980.
In orientamento landscape: 980, 980, 981, 981.
Molto strane.
La risoluzione fisica e` 320x480, chiaramente quello che il telefono riporta e` un'astrazione.-
Re: layout mobile (risposte di iPhone)
- Scritto da: alex.tg
>alert > (document.documentElement.clientWidth); > alert (document.body.clientWidth); > alert (window.innerWidth); > alert (top.innerWidth);
>
> Risposte di iPhone 3GS:
>
> in orientamento portrait: 980, 980, 980, 980.
> In orientamento landscape: 980, 980, 981, 981.
>
> Molto strane.
> La risoluzione fisica e` 320x480, chiaramente
> quello che il telefono riporta e`
> un'astrazione.
Si. Pare che gli handheld che accedono ad una pagina web assumano che sia stata sviluppata per il desktop e quindi cercano di adattare la larghezza media della pagina alla loro ridotta risoluzione, assumendo quindi che la pagina web abbia una larghezza di circa 1000px e zoomandola di conseguenza per farcela stare sul loro display.
Pare sia possibile risolvere il problema con il tag "viewport" che però pare sia una cosa piuttosto recente e quindi non funzionante su alcuni vecchi browser per handheld.
-
-
Re: Trucchi per un layout mobile?Ho trovato questo:
http://www.quirksmode.org/mobile/viewports2.html
da cui si direbbe che sui dispositivi handheld,
How wide is the layout viewport? That differs per browser. Safari iPhone uses 980px, Opera 850px, Android WebKit 800px, and IE 974px.
questo comportamento del piu`-o-meno-raddoppiare la risoluzione sia una convenzione diffusa. Un pixel per il CSS su questi dispositivi si direbbe circa la meta` in altezza e larghezza di un pixel fisico. Non lo capisco, ma immagino mi adeguero`.
-
Re: Trucchi per un layout mobile?Scritto daNon Autenticatoil 2010-07-10 04:45:00.0 alle 2010-07-10 04:45:00.0
- Scritto da: alex.tg
> Ho trovato questo:
> http://www.quirksmode.org/mobile/viewports2.html
>
> da cui si direbbe che sui dispositivi handheld,
>
> How wide is the layout viewport? That differs
> per browser. Safari iPhone uses 980px, Opera
> 850px, Android WebKit 800px, and IE
> 974px.
>
> questo comportamento del piu`-o-meno-raddoppiare
> la risoluzione sia una convenzione diffusa. Un
> pixel per il CSS su questi dispositivi si direbbe
> circa la meta` in altezza e larghezza di un pixel
> fisico. Non lo capisco, ma immagino mi adeguero`.
>
IO MI SONO ROTTO IL CAZZO DELLA PROGRAMMAZIONE PER IL WEB TANTO STAI LÌ A SBATTERTI PER FARE UN LAYOUT FATTO BENE CHE VADA BENE PER TUTTI E POI ARRIVA LO STRONZO CON IL BROWSER A CAZZI SUOI CHE NON LO VISUALIZZA! IN PRATICA NON FUNZIONA MAI NIENTE! NON E' PROGRAMMAZIONE E' UN ARRANGIAMENTO DELLA MERDA DEGLI ALTRI MI FA CAGARE! NON HA NESSUN SENSO LOGICO E DEVI LAVORARE PER ACCROCCHI E TENTATIVI MA ANDATEVENE AFFANCULO IO DI GRAFICA NON VOGLIO SAPERNE NIENTE!-
Re: Trucchi per un layout mobile?> IO MI SONO ROTTO IL CAZZO DELLA PROGRAMMAZIONE
> PER IL WEB TANTO STAI LÌ A SBATTERTI PER FARE UN
> LAYOUT FATTO BENE CHE VADA BENE PER TUTTI E POI
> ARRIVA LO STRONZO CON IL BROWSER A CAZZI SUOI CHE
> NON LO VISUALIZZA! IN PRATICA NON FUNZIONA MAI
> NIENTE! NON E' PROGRAMMAZIONE E' UN ARRANGIAMENTO
> DELLA MERDA DEGLI ALTRI MI FA CAGARE! NON HA
> NESSUN SENSO LOGICO E DEVI LAVORARE PER ACCROCCHI
> E TENTATIVI MA ANDATEVENE AFFANCULO IO DI GRAFICA
> NON VOGLIO SAPERNE
> NIENTE!
Hm!...
...quoto!
-
-
-