J'ai 4 questions aux médias. Les 1er, 3ème et 4ème travaux, mais le 2ème ne semble pas s'activer.
Pourquoi la 480x720 (deuxième requête multimédia) utilise-t-elle par défaut la première requête multimédia?
@media screen and (max-width: 320px) and (orientation: portrait) { body{background:#F0F;} }
@media screen and (min-width: 321px) and (max-width: 480px) and (orientation: portrait) { body{background:#F00;} }
@media screen and (max-width: 480px) and (orientation: landscape) { body{background:#0F0;} }
@media screen and (min-width: 481px) and (max-width: 800px) and (orientation: landscape) { body{background:#FF0;} }
Ce qui est attendu:
Qu'est-ce qui se passe réellement:
Pourquoi la 480x720 (deuxième requête multimédia) utilise-t-elle par défaut la première requête multimédia?
Je pense que vous devez faire une détection de résolution de périphérique dans votre requête multimédia le long des lignes de
@media (-webkit-min-device-pixel-ratio: 1.5),
(-o-min-device-pixel-ratio: 3/2),
(min--moz-device-pixel-ratio: 1.5),
(min-device-pixel-ratio: 1.5) {
/* high resolution styles */
}
Consultez l'excellent article de David Calhoun sur les meilleures pratiques en matière de téléphonie mobile .
Je suis un débutant sur Android et CSS.
J'ai résolu le problème en ne donnant pas la taille réelle d'Android avec une seule ligne dans l'en-tête de mon fichier index.html:
<meta name="viewport" content="width=device-width" />
A partir de là, mes fichiers CSS ont fait ce que je pensais!
Donc, après des recherches approfondies, je suis arrivé à cette conclusion, les téléphones Android qui disent qu'ils sont 480px par 720px (800px ou 854px) ne sont en fait pas, ils utilisent une densité d'écran supérieure pour rendre les éléments plus volumineux et donc réellement à 320px par XXX , mais l'utilisateur peut modifier la résolution à une valeur inférieure s'il le souhaite. La raison pour laquelle la requête média ne fonctionnait pas était que les tailles n'étaient pas pertinentes pour le périphérique en question.
Si vous utilisez le SDK, la densité de l’écran a été réduite à 160 pour permettre une largeur de 480 pixels.
Et je peux confirmer que j'ai testé cela sur le SDK et 2 combinés.
Remarque: mon expérience personnelle a peut-être été différente pour d'autres utilisateurs
J'avais les mêmes problèmes lorsque je travaillais sur une application Cordova pour plate-forme Android. Grâce à la dernière réponse, j'ai essayé de savoir où étaient les différences entre ma requête multimédia et la largeur de l'écran des appareils.
J'ai d'abord essayé:
@media only screen and (max-device-width: 480px) { ... }
Pour apparier des appareils tels que HTC Desire HD | Samsung Galaxy S. Mais je devais aussi faire des corrections spécifiques pour le Samsung Galaxy Note, alors j'ai utilisé:
@media only screen and (min-device-width: 481px) { ... }
Mais ces résolutions, comme dit précédemment, ne sont pas vraiment utilisées comme cela dans la vue Web, la densité de pixels a les valeurs changées.
Je voulais donc savoir combien de pixels de largeur étaient reconnus dans DHD et SGS, puis dans SGN:
window.innerWidth
Pour les téléphones d'une largeur de 480px, j'avais en fait reconnu 320px. Pour le Galaxy Note à 800 pixels, je n'avais reconnu que 500 pixels. Quand j'ai vu cela, j'ai ajusté mes requêtes de médias et cela a fonctionné.
mon expérience de test est 320px (max-device-width) x 480px (max-device-width) dans. vue de portrait. Mais selon le navigateur mobile que j'utilise, la largeur maximale peut aller jusqu'à 850 pixels! Opera mobile utilise 850px par défaut comme largeur maximale, même s'il se trouve sur un appareil d'une largeur maximale de périphérique de 320px. Mieux encore; le navigateur Andriod intégré à cet appareil a une largeur maximale par défaut de 550 pixels. Par défaut, Dolphin a la même largeur maximale, 550px. Je ne teste généralement pas sur FireFox mobile, mais comme il s’agit d’un navigateur basé sur gecko comme Opera, je ne serais pas surpris qu’il tombe dans la plage des 850px. Est-ce que quelqu'un le sait ou l'a testé?
j'utilise généralement une requête multimédia à 3 conditions pour adresser des périphériques 320 X 480.
@media all and (max-width:850px) and (max-width:550px) and (max-device-width:320px) {..}
aussi je place habituellement cette balise META dans mon en-tête sur le code pageenter principal ici
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
Ce qui suit n'a pas semblé m'aider, c'est à ce moment-là que j'ai fait d'autres recherches et compris l'information ci-dessus. <meta name="viewport" content="width=device-width" />
J'espère que cela aidera quelqu'un d'autre.
Étant donné que les téléphones cellulaires sont un trou noir de confusion en matière de résolution, il faut leur dire de s'identifier. Vous devez également définir la mise à l'échelle sur 1 et supprimer la mise à l'échelle de l'utilisateur. Lorsque je mets cela dans mon code, cela me convient parfaitement.
Insérez cet extrait dans l'en-tête de votre code HTML sur la ligne située sous la balise <meta character...>
.
<!-- Check Device Width so Media Queries will work -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
target-densitydpi=medium-dpi
. Cela garantit que les tailles em
- se comportent de la même manière sur tous les périphériques (la plupart?)