Mostra notizie nelle discussioni
  • Avatar
    ☺
    Scritto da
    il 2010-07-10 01:54:00.0 alle 2010-07-10 01:54:00.0
    Trollate totali: 3444
    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? Newbie, inesperto
    • Avatar
      Scritto da
      Non Autenticato
      il 2010-07-10 01:59:00.0 alle 2010-07-10 01:59:00.0
      Re: 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?
      > Newbie, inesperto

      Occorrerebbe che il server si accorga se il client è un handheld, cioè che il client gli passi questa informazione.
      • Avatar
        ☺
        Scritto da
        il 2010-07-10 02:08:00.0 alle 2010-07-10 02:08:00.0
        Trollate totali: 3444
        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. A bocca storta
        • Avatar
          Scritto da
          Non Autenticato
          il 2010-07-10 02:14:00.0 alle 2010-07-10 02:14:00.0
          Re: Trucchi per un layout mobile?

          - 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.
          > A bocca storta

          Perché dai la dimensione in em e non pixel?
          • Avatar
            ☺
            Scritto da
            il 2010-07-10 02:19:00.0 alle 2010-07-10 02:19:00.0
            Trollate totali: 3444
            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". A bocca storta
            • Avatar
              Scritto da
              Non Autenticato
              il 2010-07-10 02:28:00.0 alle 2010-07-10 02:28:00.0
              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".
              > A bocca storta

              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...
    • Avatar
      ☺
      Scritto da
      il 2010-07-10 02:26:00.0 alle 2010-07-10 02:26:00.0
      Trollate totali: 5425
      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?
      > Newbie, inesperto

      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
      -----------------------------------------------------------
      • Avatar
        Scritto da
        Non Autenticato
        il 2010-07-10 13:59:00.0 alle 2010-07-10 13:59:00.0
        Re: Trucchi per un layout mobile?
        > 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.
    • Avatar
      ☺
      Scritto da
      il 2010-07-10 02:53:00.0 alle 2010-07-10 02:53:00.0
      Trollate totali: 3444
      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. A bocca storta
      La risoluzione fisica e` 320x480, chiaramente quello che il telefono riporta e` un'astrazione.
      • Avatar
        ☺
        Scritto da
        il 2010-07-10 08:58:00.0 alle 2010-07-10 08:58:00.0
        Trollate totali: 5425
        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. A bocca storta
        > 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.
    • Avatar
      ☺
      Scritto da
      il 2010-07-10 03:14:00.0 alle 2010-07-10 03:14:00.0
      Trollate totali: 3444
      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`. A bocca storta
      • Avatar
        Scritto da
        Non Autenticato
        il 2010-07-10 04:45:00.0 alle 2010-07-10 04:45:00.0
        Re: Trucchi per un layout mobile?

        - 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`.
        > A bocca storta
        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!
        • Avatar
          ☺
          Scritto da
          il 2010-07-10 13:03:00.0 alle 2010-07-10 13:03:00.0
          Trollate totali: 3444
          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! Anonimo
<softv>

Pagina generata in 190 millisecondi

Utenti attivi: 8 nell'ultimo minuto, 17 negli ultimi cinque minuti, 36 negli ultimi 15 minuti