2016_2017:s1:webdoc:td6
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
2016_2017:s1:webdoc:td6 [2016/12/05 12:11] – created logre | 2016_2017:s1:webdoc:td6 [2016/12/09 08:18] (current) – [Et en pratique ?] logre | ||
---|---|---|---|
Line 26: | Line 26: | ||
Deux mots : //media queries//. | Deux mots : //media queries//. | ||
- | ===== Les media queries en CSS3 ===== | + | ===== Le principe des media queries en CSS3 ===== |
Les //media queries// ont été introduite par CSS3 et permettent de définir un ensemble de règles de style **en fonction** de la résolution de l' | Les //media queries// ont été introduite par CSS3 et permettent de définir un ensemble de règles de style **en fonction** de la résolution de l' | ||
Line 32: | Line 32: | ||
En effet, pour rappel, le CSS est interprété par le navigateur, qui est un logiciel s' | En effet, pour rappel, le CSS est interprété par le navigateur, qui est un logiciel s' | ||
+ | Dans la pratique, il s'agit d' | ||
+ | Cela vous permet de changer l' | ||
+ | * augmenter la taille du texte, | ||
+ | * changer la couleur de fond, | ||
+ | * positionner différemment votre menu, | ||
+ | * diminuer la taille des images, | ||
+ | * etc. | ||
+ | |||
+ | Toutefois ces conditions ne portent pas seulement sur la résolution de l' | ||
+ | |||
+ | ===== Media queries : mode d' | ||
+ | |||
+ | Il y a globalement deux façons d' | ||
+ | * en chargeant une feuille de style .css différente en fonction de la règle | ||
+ | * (ex : « Si la résolution est inférieure à 1024px de large, charge le fichier minipouce.css ») ; | ||
+ | * en écrivant la règle directement dans le fichier .css habituel | ||
+ | * (ex : « Si la résolution est inférieure à 600px de large, exécute les propriétés CSS suivantes »). | ||
+ | |||
+ | Nous allons voir un peu mieux ces deux méthodes puis nous détaillerons leur syntaxe. | ||
+ | |||
+ | ===== Méthode 1 : une feuille de style par résolution ===== | ||
+ | |||
+ | Il suffit de préciser la condition dans la balise d' | ||
+ | La balise < | ||
+ | L' | ||
+ | <code html> | ||
+ | <link rel=" | ||
+ | </ | ||
+ | |||
+ | Il est donc possible de jouer avec les priorités de chargement des fichiers CSS pour avoir un fichier de style par défaut et un style retravaillé pour certains écrans plus petits. | ||
+ | |||
+ | <code html> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | <meta charset=" | ||
+ | <link rel=" | ||
+ | <link rel=" | ||
+ | < | ||
+ | </ | ||
+ | ... | ||
+ | </ | ||
+ | ===== Méthode 2 : ajouter une garde à une règle CSS ===== | ||
+ | |||
+ | L' | ||
+ | |||
+ | L' | ||
+ | |||
+ | <code css> | ||
+ | @media screen and (max-width: 640px) { | ||
+ | .bloc { | ||
+ | display: | ||
+ | clear:both; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Pour d' | ||
+ | |||
+ | ===== Un pas de recul ===== | ||
+ | |||
+ | <box round rgb(185, | ||
+ | * Comparez les avantages et les inconvénients des deux méthodes. | ||
+ | * Y a-t-il des cas où l'une est impossible à appliquer ? | ||
+ | * Sont-elles incompatibles ? | ||
+ | </ | ||
+ | ===== Syntaxe ===== | ||
+ | |||
+ | Ces conditions sont des expressions booléennes, | ||
+ | Pour obtenir l' | ||
+ | |||
+ | Il existe de nombreuses règles permettant de construire des media queries et qui peuvent être composable. | ||
+ | Voici quelques exemples : | ||
+ | * color : gestion de la couleur (en bits/ | ||
+ | * height : hauteur de la zone d' | ||
+ | * width : largeur de la zone d' | ||
+ | * device-height : hauteur du périphérique. | ||
+ | * device-width : largeur du périphérique. | ||
+ | * orientation : orientation du périphérique (portrait ou paysage). | ||
+ | * media : type d' | ||
+ | * screen : écran « classique » ; | ||
+ | * handheld : périphérique mobile ; | ||
+ | * print : impression ; | ||
+ | * tv : télévision ; | ||
+ | * projection : projecteur ; | ||
+ | * all : tous les types d' | ||
+ | |||
+ | <note tip>On peut rajouter le préfixe min- ou max- devant la plupart de ces règles. Ainsi, min-width signifie « Largeur minimale », max-height « Hauteur maximale », etc.</ | ||
+ | |||
+ | <box round rgb(185, | ||
+ | Ecrire les //media queries// et les règles CSS permettant de cibler : | ||
+ | * les écrans, quand la largeur de la fenêtre fait au maximum 1280px, pour mettre le fond en noir. | ||
+ | * tous types de supports, quand la largeur de la fenêtre est comprise entre 1024px et 1280px, pour mettre le texte en rouge. | ||
+ | * tous types d' | ||
+ | </ | ||
+ | |||
+ | ===== Les navigateurs mobiles ===== | ||
+ | |||
+ | Afin d' | ||
+ | Cela s' | ||
+ | Une //media query// qui cible le support mobile avec un '' | ||
+ | Or, celle-ci est inhérente au navigateur lui-même ! Puisque chacun implémente cette simulation par zoom à sa façon. | ||
+ | |||
+ | Quelques exemples : | ||
+ | * **Opera Mobile** 850 pixels | ||
+ | * **iPhone Safari** 980 pixels | ||
+ | * **Android** 800 pixels | ||
+ | * **Windows Phone** 1024 pixels | ||
+ | |||
+ | Ainsi, un Android se comporte comme si la fenêtre faisait 800px de large, tandis que l' | ||
+ | |||
+ | Simple palliatif : '' | ||
+ | |||
+ | |||
+ | <box round rgb(185, | ||
+ | * Ecrire la //media query// et les règles CSS permettant d' | ||
+ | * Mettez en évidence la différence de viewport avec un même code exécuté sur Android et sur iPhone (ou windows phone si vous en trouvez un) | ||
+ | * Théoriquement, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Et en pratique ? ===== | ||
+ | |||
+ | Une bonne idée est de limiter les menus latéraux sur les petits écrans verticaux voir d' | ||
+ | Cela nécessite de restructurer sa page. | ||
+ | |||
+ | <box round rgb(185, | ||
+ | * Concevez ou reprenez une page web disposant d'un menu visible à tout instant et d'une colonne à gauche et à droite présentant respectivement le menu de la page et les partenaires du site. | ||
+ | * Ecrivez le CSS nécessaire à l' | ||
+ | * Quels changements proposez-vous pour une adaptation vers un écran géant 40" ? Implémentez-les dans votre CSS. | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Je dois savoir ===== | ||
+ | |||
+ | <box round rgb(255, | ||
+ | * Les media queries permettent d' | ||
+ | * Il existe de nombreux paramètres booléens à disposition : nombre de couleurs, résolution de l' | ||
+ | * On utilise a directive @media d'une ou plusieurs conditions, le style CSS qui suit sera appliqué si elles sont remplies. | ||
+ | * Les navigateurs mobiles simulent une largeur d' | ||
+ | * On peut cibler les smartphones grâce à une règle basée sur le nombre réel de pixels affichés à l' | ||
+ | </ | ||
2016_2017/s1/webdoc/td6.1480939899.txt.gz · Last modified: 2016/12/05 12:11 by logre