Bonjour
Je vois un sujet en cours pour un problème de mise en page, et je suis également en plein dedans pour ma nouvelle version de site internet. Et j'ai cherché dans l'historique du forum et je ne vois pas de réponse claire, complète et récente.
Le problème de base est le suivant :
"device-width" est supposé disparaître à terme
(source : https://developer.mozilla.org/en-US/docs/Web/CSS/@media/device-width )
C'est en mode "déprécié" ou carrément "obsolète" selon les sources.
Ainsi, l'astuce de dire que width=device-width afin de compenser toutes les disparités d'écrans de téléphone, est (plus exactement SERA) réduite à néant.
La question est : COMMENT FAIRE pour distinguer les différents formats d'écrans efficacement, notamment pour les téléphones?
- Utiliser le nombre de pixels en largeur ou hauteur (du genre 768 / 1280 ...) ne fonctionne pas dans tous les cas car certains téléphones considèrent alors qu'on est en version tablette, car on a dépassé 768 pixels.
- Utiliser le nombre de DPI pourrait fonctionner, mais je n'ai pas de résultats probants complets (entre ce qui est annoncé techniquement, et ce qui est pris en considération, il y a un fossé). Pourtant, en théorie, on pourrait pointer un niveau élevé de DPI (>200 ou même >230 selon les dernières données techniques des téléphones des 5 dernières années) en opposition aux DPI des moniteurs d'ordinateur.
- Utiliser les formats d'écran est une usine à gaz (car on ne peut pas utiliser un coefficient, mais il faut écrire le vrai format de l'écran du genre "19/9" pour que ce soit totalement accepté en validation W3C. Donc il faudrait citer TOUS les formats de téléphones existants. Mais certains formats sont identiques à des formats de tablettes ou moniteurs). J'ai d'ailleurs testé avec les coefficients, et là aussi la réalité technique inclue un GROS flou (il y a des énormes marges d'erreurs qui font entrecroiser plusieurs types d'écrans).
J'avais récupéré les données techniques d'environ 200 téléphones et moniteurs afin d'en sortir des données statistiques (pixels largeur, pixels hauteur, DPI, format, ratio chiffré ...) et de créer des critères TRES distinctifs et sans erreur possible. Cependant la mise en pratique est bancale. Ce qui est dingue, c'est qu'en théorie, tout était bien carré.
De mon côté, pour avoir une version responsive, j'utilise plusieurs mises en forme :
1. BASE POUR LE VERTICAL (media query vertical simple): Téléphone vertical
2. Variante : tablette verticale (hauteur > 768 pixels)
3. BASE POUR L'HORIZONTAL (media query horizontal simple) : Petit écran horizontal
(équivalent à 1200-1536 pixels)
4. Variante : Ecran large horizontal (1537-1920 pixels)
5. Variante : Ecran très large horizontal (>1920 pixels)
6. Variante : Ecran tablette horizontal (entre 768 et 1199 pixels)
7. Variante : Ecran téléphone horizontal (> 230 dpi)
Je précise que ce n'est pas du simple texte pour mon site mais une imbrication bien spécifique et graphique. Je ne peux pas faire une présentation de différents DIV avec une instruction WRAP et tout qui s'ajuste au petit bonheur la chance. On est d'accord que les utilisations de flex et grid sont supposées être la grande tendance générale avec des contenus qui s'adaptent au fur et à mesure (ce qui limite en principe le besoin d'utiliser des media queries). Mais ça, ça ne fonctionne que si on des éléments qu'on veut laisser en électrons libres sur chaque écran. J'utilise flex et grid, mais ce n'est pas pour autant que j'estime que la mise en page doit être "aléatoire". Et je tiens encore à faire de BELLES versions de mon site en distinguant téléphone et tablette.
Pour l'instant, mes 7 versions tiennent à peu près la route, mais j'ai des problèmes d'identifications. Certains téléphones verticaux estiment être en tablette verticale. Certaines tablettes horizontales estiment être en écran moyen (pas trop grave en soi). Et j'ai des variations parfois selon le navigateur utilisé, sur le même appareil !
------
Qu'avez vous comme solution technique / pratique actuelle ?
(je précise : en CSS3 uniquement).
Je vois un sujet en cours pour un problème de mise en page, et je suis également en plein dedans pour ma nouvelle version de site internet. Et j'ai cherché dans l'historique du forum et je ne vois pas de réponse claire, complète et récente.
Le problème de base est le suivant :
"device-width" est supposé disparaître à terme
(source : https://developer.mozilla.org/en-US/docs/Web/CSS/@media/device-width )
C'est en mode "déprécié" ou carrément "obsolète" selon les sources.
Ainsi, l'astuce de dire que width=device-width afin de compenser toutes les disparités d'écrans de téléphone, est (plus exactement SERA) réduite à néant.
La question est : COMMENT FAIRE pour distinguer les différents formats d'écrans efficacement, notamment pour les téléphones?
- Utiliser le nombre de pixels en largeur ou hauteur (du genre 768 / 1280 ...) ne fonctionne pas dans tous les cas car certains téléphones considèrent alors qu'on est en version tablette, car on a dépassé 768 pixels.
- Utiliser le nombre de DPI pourrait fonctionner, mais je n'ai pas de résultats probants complets (entre ce qui est annoncé techniquement, et ce qui est pris en considération, il y a un fossé). Pourtant, en théorie, on pourrait pointer un niveau élevé de DPI (>200 ou même >230 selon les dernières données techniques des téléphones des 5 dernières années) en opposition aux DPI des moniteurs d'ordinateur.
- Utiliser les formats d'écran est une usine à gaz (car on ne peut pas utiliser un coefficient, mais il faut écrire le vrai format de l'écran du genre "19/9" pour que ce soit totalement accepté en validation W3C. Donc il faudrait citer TOUS les formats de téléphones existants. Mais certains formats sont identiques à des formats de tablettes ou moniteurs). J'ai d'ailleurs testé avec les coefficients, et là aussi la réalité technique inclue un GROS flou (il y a des énormes marges d'erreurs qui font entrecroiser plusieurs types d'écrans).
J'avais récupéré les données techniques d'environ 200 téléphones et moniteurs afin d'en sortir des données statistiques (pixels largeur, pixels hauteur, DPI, format, ratio chiffré ...) et de créer des critères TRES distinctifs et sans erreur possible. Cependant la mise en pratique est bancale. Ce qui est dingue, c'est qu'en théorie, tout était bien carré.
De mon côté, pour avoir une version responsive, j'utilise plusieurs mises en forme :
1. BASE POUR LE VERTICAL (media query vertical simple): Téléphone vertical
2. Variante : tablette verticale (hauteur > 768 pixels)
3. BASE POUR L'HORIZONTAL (media query horizontal simple) : Petit écran horizontal
(équivalent à 1200-1536 pixels)
4. Variante : Ecran large horizontal (1537-1920 pixels)
5. Variante : Ecran très large horizontal (>1920 pixels)
6. Variante : Ecran tablette horizontal (entre 768 et 1199 pixels)
7. Variante : Ecran téléphone horizontal (> 230 dpi)
Je précise que ce n'est pas du simple texte pour mon site mais une imbrication bien spécifique et graphique. Je ne peux pas faire une présentation de différents DIV avec une instruction WRAP et tout qui s'ajuste au petit bonheur la chance. On est d'accord que les utilisations de flex et grid sont supposées être la grande tendance générale avec des contenus qui s'adaptent au fur et à mesure (ce qui limite en principe le besoin d'utiliser des media queries). Mais ça, ça ne fonctionne que si on des éléments qu'on veut laisser en électrons libres sur chaque écran. J'utilise flex et grid, mais ce n'est pas pour autant que j'estime que la mise en page doit être "aléatoire". Et je tiens encore à faire de BELLES versions de mon site en distinguant téléphone et tablette.
Pour l'instant, mes 7 versions tiennent à peu près la route, mais j'ai des problèmes d'identifications. Certains téléphones verticaux estiment être en tablette verticale. Certaines tablettes horizontales estiment être en écran moyen (pas trop grave en soi). Et j'ai des variations parfois selon le navigateur utilisé, sur le même appareil !
------
Qu'avez vous comme solution technique / pratique actuelle ?
(je précise : en CSS3 uniquement).