Nous partons du principe que votre site est responsive, autrement dit, que vous avez appliqué un thème basé sur les frameworks CSS Bootstrap (version 2) ou EMS Framework.
Points de rupture
Qu'appele-t-on un "point de rupture" en web design ? Le principe d'un site web dit "responsive" est de pouvoir s'adapter à toute taille d'écran, quelle que soit sa largeur. Pour y parvenir, le but est donc grâce aux style CSS de pouvoir modifier l'apparence d'un élément en fonction de la taille de l'écran. Voici ci-dessous un exemple des principales résolutions évaluées en CSS pour définir sur quel type d'écran est affiché un site web (valeurs reprises du célèbre framework CSS Bootstrap dans sa version 2) :
Largeur d'écran |
Type de terminal |
>= 1200 px |
Large écran de bureau |
>= 980 px |
Tablette en mode paysage |
>= 768 px |
Tablette en mode portrait |
<= 480 px |
Smartphone en mode paysage |
<= 320 px |
Smartphone en mode portrait |
Un point de rupture est donc une limite à partir de laquelle on applique un ou plusieurs styles CSS. Dans le tableau ci-dessus, cette limite est exprimée en pixels mais d'autres unités de mesure sont possibles (vw, rem, etc.).
Puisque votre site est responsive, avant d'écrire un style CSS, il est donc important de vous posez la question "Quel est le type d'écran concerné par ce style" ? Si la réponse n'est pas "tous les écrans !", il vous faudra alors conditionner votre style CSS à un type d'écran prédéfini.
Imaginons que vous souhaitiez cacher l'entête de votre site, uniquement sur petits écrans (smartphones). À partir des résolutions ci-dessus, cela revient à dire : "Cacher mon entête sur tous les écrans de largeur inférieure ou égale à 480px de large". En langage CSS, cela se traduit de la manière suivante :
@media(max-width: 480px){
header{
display: none;
}
}
Nous avons recours ici à une "@media query", qui renseigne le navigateur sur la condition d'exécution de ce style CSS. Lorsqu'il lit cette ligne, le navigateur comprend que tous le(s) style(s) inclus dans cette @media query ne sont valables que sur les écrans ayant une largeur maximale de 480px (max-width: 480px).
Supposons maintenant que vous souhaitiez définir une hauteur de 200px pour votre entête uniquement sur écrans moyens (tablettes, petits écrans de bureau), autrement dit : "Afficher mon entête uniquement sur les écrans dont la largeur est comprise entre 768px et 1199px". En CSS, voilà ce que cela donnerais:
@media (min-width: 768px) and (max-width:1199px){
header{
height: 200px;
}
}
Il est donc possible de combiner une largeur minimale (min-width: 768px) à partir de laquelle le style sera pris en compte par le navigateur à une largeur maximale (max-width:1199px) au delà de laquelle le style sera ignoré.
Imaginons enfin que vous souhaitiez augmenter la taille du texte figurant dans votre entête uniquement sur écrans larges (17″ et plus), autrement dit : "Augmenter le texte de mon entête uniquement sur les écrans dont la largeur est supérieure ou égale à 1200px". Le CSS correspondant :
@media (min-width: 1200px){
header{
font-size: 2rem;
}
}
Nous pouvons donc nous contenter de définir uniquement une largeur minimale (min-width: 1200px) à partir de laquelle notre style sera pris en compte.
Site Mobile First ou pas ?
Avant de continuer, il est également important de vous poser une seconde question, qui vous aidera sur la manière d'ordonner vos styles CSS : "Le CSS de mon site est-il conçu prioritairement pour les terminaux mobiles ?", autrement dit, mon site est-il "mobile first" ?
Comment savoir si le CSS de mon site est mobile first !?
Sur e-monsite, c'est très simple :
- Tous les thèmes basés sur le framework CSS Bootstrap v2 (reconnaissables grâce au suffixe [Bootstrap]) ne sont pas mobile first.
- Tous les thèmes basés sur le framework CSS EMS Framework (reconnaissables grâce au suffixe [EMS Framework]) sont mobile first.