Existe-t-il un moyen d'obtenir un arrière-plan en CSS pour l'étirer ou le redimensionner pour remplir son conteneur?
653
Pour les navigateurs modernes, vous pouvez accomplir cela en utilisant background-size
:
body {
background-image: url(bg.jpg);
background-size: cover;
}
cover
signifie étirer l'image verticalement ou horizontalement pour qu'elle ne se répète jamais.
Cela fonctionnerait pour Safari 3 (ou version ultérieure), Chrome, Opera 10+, Firefox 3.6+ et Internet Explorer 9 (ou version ultérieure).
Pour que cela fonctionne avec les versions inférieures d'Internet Explorer, essayez ces CSS:
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='.myBackground.jpg', sizingMethod='scale');
-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='myBackground.jpg', sizingMethod='scale')";
Utilisez la propriété CSS 3
background-size
:Il est disponible pour les navigateurs modernes depuis 2012.
la source
background-size: 100% 100%;
pour obtenir l'effet souhaité, si cela aide quelqu'un d'autre.cover
etcontain
sur MDNLa mise à l'échelle d'une image avec CSS n'est pas tout à fait possible, mais un effet similaire peut être obtenu de la manière suivante, cependant.
Utilisez ce balisage:
avec le CSS suivant:
et vous devriez avoir terminé!
Afin de redimensionner l'image pour qu'elle soit "à fond perdu" et de maintenir le rapport d'aspect, vous pouvez le faire à la place:
Cela fonctionne très bien! Si une dimension est rognée, cependant, elle sera rognée sur un seul côté de l'image, plutôt que d'être rognée uniformément des deux côtés (et centrée). Je l'ai testé dans Firefox, Webkit et Internet Explorer 8.
la source
margin: 0 auto
ON.stretch
. En réglant uniquement lewidth
ouheight
, le rapport d'aspect reste le même. Essayez d'utilisermax-width
etmax-height
de limiter le facteur de zoom ...Utilisez l' attribut background-size dans CSS3:
EDIT: Modernizr prend en charge la détection de la prise en charge de la taille d'arrière-plan . Vous pouvez utiliser une solution de contournement JavaScript écrite pour fonctionner comme vous en avez besoin et la charger dynamiquement en l'absence de prise en charge. Cela permettra de maintenir le code maintenable sans recourir à des hacks CSS intrusifs pour certains navigateurs.
Personnellement, j'utilise un script pour y faire face en utilisant jQuery, c'est une adaptation de imgsizer . Comme la plupart des conceptions que j'utilise maintenant la largeur% pour les dispositions fluides sur les appareils, il y a une légère adaptation à l'une des boucles (tenant compte des tailles qui ne sont pas toujours à 100%):
EDIT: Vous pouvez également être intéressé par jQuery CSS3 Finaliz [s] e .
la source
Essayez la taille d'arrière-plan de l'article . Si vous utilisez tous les éléments suivants, cela fonctionnera dans la plupart des navigateurs, à l'exception d'Internet Explorer.
la source
preserveAspectRatio="none"
dans le SVG. Plus d'informations à ce sujet ici . Démo ici .Pas actuellement. Il sera disponible en CSS 3 , mais il faudra du temps avant qu'il ne soit implémenté dans la plupart des navigateurs.
la source
Travaille dans:
De plus, vous pouvez essayer ceci pour une solution ie
Crédit à cet article de Chris Coyier http://css-tricks.com/perfect-full-page-background-image/
la source
background-size: cover
sauf avec des préfixes de navigateur et une solution IEEn un mot: non. La seule façon d'étirer une image est d'<img>
utiliser la balise. Vous devrez être créatif.Cela était vrai en 2008, lorsque la réponse a été écrite. Aujourd'hui, les navigateurs modernes prennent en charge
background-size
ce qui résout ce problème. Attention, IE8 ne le prend pas en charge.la source
Définissez "étirer et mettre à l'échelle" ...
Si vous avez un format bitmap, ce n'est généralement pas génial (graphiquement parlant) de l'étirer et de le déplacer. Vous pouvez utiliser des motifs répétables pour donner l'illusion du même effet. Par exemple, si vous avez un dégradé qui s'éclaircit vers le bas de la page, vous utiliserez un graphique d'un seul pixel de large et de la même hauteur que votre conteneur (ou de préférence plus grand pour tenir compte de la mise à l'échelle), puis le tuiler à travers le page. De même, si le dégradé traversait la page, il serait d'un pixel de haut et plus large que votre conteneur et répété sur la page.
Normalement, pour donner l'illusion qu'il s'étire pour remplir le récipient lorsque le récipient grandit ou rétrécit, vous agrandissez l'image par rapport au récipient. Tout chevauchement ne sera pas affiché en dehors des limites du conteneur.
Si vous voulez un effet qui repose sur quelque chose comme une boîte avec des bords incurvés, alors vous colleriez le côté gauche de votre boîte au côté gauche de votre conteneur avec suffisamment de chevauchement qui (dans des limites raisonnables) quelle que soit la taille du conteneur, il ne manque d'arrière-plan, puis vous superposez une image du côté droit de la boîte avec des bords incurvés et la positionnez à droite du conteneur. Ainsi, à mesure que le récipient rétrécit ou se développe, l'effet de boîte incurvée semble rétrécir ou croître avec lui - ce n'est pas le cas, mais il donne l'illusion de ce qui se passe.
En ce qui concerne vraiment la réduction et la croissance de l'image avec le conteneur, vous devrez utiliser des astuces de superposition pour que l'image semble fonctionner comme arrière-plan et du javascript pour la redimensionner avec le conteneur. Il n'y a aucun moyen actuel de le faire avec CSS ...
Si vous utilisez des graphiques vectoriels, vous êtes bien en dehors de mon domaine d'expertise, je le crains.
la source
C'est ce que j'en ai fait. Dans la classe d'étirement, j'ai simplement changé la hauteur en
auto
. De cette façon, votre image d'arrière-plan a toujours la même taille que la largeur de l'écran et la hauteur aura toujours la bonne taille.la source
Ajoutez une
background-attachment
ligne:la source
Je voudrais souligner que cela équivaut à faire:
la source
Une autre excellente solution est le Backstretch de Srobbin qui peut être appliqué au corps ou à n'importe quel élément de la page - http://srobbin.com/jquery-plugins/backstretch/
la source
Essaye ça
http://jsfiddle.net/5LZ55/4/
la source
Une astuce supplémentaire pour la triche de SolidSmile est de mettre à l'échelle (le redimensionnement proportionnel) en définissant une largeur et en utilisant auto pour la hauteur.
Ex:
la source
Utilisez la
border-image : yourimage
propriété pour définir votre image et la mettre à l'échelle jusqu'à la bordure entière de votre écran ou fenêtre.la source