Cela peut sembler une question idiote.
Si j'utilise cet extrait CSS pour les affichages réguliers (Où box-bg.png
est 200px par 200px);
.box{
background:url('images/box-bg.png') no-repeat top left;
width:200px;
height:200px
}
et si j'utilise une requête multimédia comme celle-ci pour cibler les écrans Retina (avec l'image @ 2x étant la version haute résolution);
@media (-webkit-min-device-pixel-ratio: 2),
(min-resolution: 192dpi) {
.box{background:url('images/[email protected]') no-repeat top left;}
}
Dois-je doubler la taille du .box
div à 400 px par 400 px pour correspondre à la nouvelle image d'arrière-plan haute résolution?
css
responsive-design
media-queries
Dean Elliott
la source
la source
Réponses:
Non, mais vous devez définir la
background-size
propriété pour qu'elle corresponde aux dimensions d'origine:ÉDITER
Pour ajouter un peu plus à cette réponse, voici la requête de détection de rétine que j'ai tendance à utiliser:
- La source
NB. Ce
min--moz-device-pixel-ratio:
n'est pas une faute de frappe. C'est un bogue bien documenté dans certaines versions de Firefox et devrait être écrit comme ceci afin de prendre en charge les anciennes versions (antérieures à Firefox 16). - La sourceComme @LiamNewmarch l'a mentionné dans les commentaires ci-dessous, vous pouvez inclure le
background-size
dans votrebackground
déclaration sténographique comme suit :Cependant, je ne conseillerais personnellement pas d'utiliser le formulaire abrégé car il n'est pas pris en charge dans iOS <= 6 ou Android, ce qui le rend peu fiable dans la plupart des situations.
la source
background-size: cover;
. Cela maintiendra le rapport hauteur / largeur tout en "couvrant" tout l'arrière-plan avec l'image.background-size
propriété de labackground
manière suivantebackground: url('images/[email protected]') no-repeat top left / 200px 200px
:. Notez que les navigateurs qui ne prennent pas en chargebackground-size
ignoreront cette règle.Voici une solution qui inclut également les appareils High (er) DPI ( MDPI ) > ~ 160 points par pouce, comme de nombreux appareils non iOS (par exemple: Google Nexus 7 2012 ):
Comme @ 3rror404 l'a inclus dans sa modification après avoir reçu les commentaires des commentaires, il existe un monde au-delà de Webkit / iPhone. Une chose qui me dérange avec la plupart des solutions à ce jour comme celle référencée comme source ci - dessus chez CSS-Tricks , c'est que cela n'est pas entièrement pris en compte.
La source originale allait déjà plus loin.
À titre d'exemple, l'écran du Nexus 7 (2012) est un écran TVDPI avec un bizarre
device-pixel-ratio
de1.325
. Lors du chargement des images avec une résolution normale, elles sont mises à l'échelle par interpolation et donc floues. Pour moi, l'application de cette règle dans la requête multimédia pour inclure ces appareils a permis d'obtenir les meilleurs commentaires des clients.la source
@2x
uniquement servi à2dppx
+ clients.Si vous prévoyez d'utiliser la même image pour les écrans rétine et non rétine, voici la solution. Supposons que vous ayez une image de
200x200
et que vous ayez deux icônes dans la rangée du haut et deux icônes dans la rangée du bas. Donc, c'est quatre quadrants.La mise à l'échelle et le positionnement des icônes de sprite à 50% de la valeur réelle, vous pouvez obtenir le résultat attendu.
Une autre solution de mixin SCSS pratique de Ryan Benhase .
Pour plus d'informations sur le mixin ci-dessus, LISEZ ICI .
la source