El disseny responsiu d’Ethan Marcotte

01 març El disseny responsiu d’Ethan Marcotte

Es difícil trobar un esquema senzill de com fer un disseny responsiu. Aquesta entrada serà una guía esquemàtica dels pasos a fer per tenir un disseny flexible segons el llibre “Responsive Web Design” d’Ethan Marcotte.

 

Tipografia

Quan indiquem:

body { font: normal 100% Helvetica, Arial, sans-serif; }

Li diem al navegador que el tamany de la font sigui el que té predefinit el navegador per defecte i aquest acostuma a ser 16px.

Si volem canviar el tamany d’un h1 podem escriure:

h1 { font-size: 24px; }

Quan volem fer un disseny responsiu hem d’expressar la tipografia en lletres escalables, amb el que utilitzarem la messura relativa “em”.

Per calcular el tamany en “em” d’una messura en píxels fem servir la fórmula:

destí / context = resultat

que traslladat al nostre h1 serà:

24px / 16 px = 1.5em

h1 { font-size: 1.5em /* 24px */;  }

 

Quadrícula flexible

Aplicarem la mateixa fórmula a cada element de la nostra quadrícula, les mides de cada caixa seran relatives als elements que continguin.

Si tenim aquest esquema:

Esquema

Escriurem el següent codi:

<div id="content">
<section>
   <h1>Títol de la secció</h1>
   <div class="main">
   </div> <!-- End main -->
    <div class="side">
   </div> <!-- End side -->
</section>
</div> <!-- End content -->

 

Si la div #content volem que ocupi una amplada de 960px, escriurem “widht: 90%” .

#content { width:90% /* width:960px */ }

Encara que aquesta proporció és arbitrària s’ajusta a la majoria de navegadors i la div s’adaptarà sempre al 90% del tamany del navegador.

section { margin: 0 auto 53px; width: 900px; }

Aplicarem la fórmula destí / context = resultat

900 / 960 = 0.9375

Movem el decimal dos dígits a la dreta i obtindrem el percentatge en %:

section { margin: 0 auto 53px; width: 93.75%; }

I en el cas de les divs aniuades dins “section”:

main { float: left; width: 566px; }
side { float:right; widht: 331px; }

Dividirem cada mida pel context, que és “section”:

566 / 900 = .628888889

331 / 900 = .37777778

El resultat serà.

main { float: left; width: 62.8888889%; }
side { float:right; widht: 37.777778; }

 

Marges flexibles

Quan definim marges flexibles d’un element el context és l’amplada del container de l’element.

 

Paddin flexible

El context del padding flexible és l’amplada del mateix element.

 

Imatges flexibles

Una manera de dir-li a una imatge que no sigui més gran que el container que la conté és:

img { max-width: 100% }

Amb aquesta regla els navegadors actuals escalaran proporcionalment la imatge en relació al container que les contingui (i que tingui les seva mida expressada en percentatge).

Això ho podem aplicar també al vídeo i altres medias

img, embed, object, video { max-width: 100% }

Aquesta regla no s’aplica a Internet Explorer 6 on haurem de escriure width:100% i cridar una fulla d’estils específica per IE6.

 

Flexibles “Tiled background images”