Je souhaite que mon image d'arrière-plan s'étire et soit mise à l'échelle en fonction de la taille de la fenêtre du navigateur.
J'ai vu quelques questions sur Stack Overflow qui font le travail, comme étirer et mettre à l'échelle le fond CSS par exemple. Cela fonctionne bien, mais je veux placer l'image en utilisant background
, pas avec une img
balise.
Dans celui-ci, une img
balise est placée, puis avec CSS, nous rendons hommage à la img
balise.
width:100%; height:100%;
Cela fonctionne, mais cette question est un peu ancienne et indique qu'en CSS 3, le redimensionnement d'une image d'arrière-plan fonctionnera plutôt bien. J'ai essayé cet exemple le premier , mais cela n'a pas fonctionné pour moi.
Existe-t-il une bonne méthode pour le faire avec la background-image
déclaration?
la source
Réponses:
CSS3 a un joli petit attribut appelé
background-size:cover
.Cela met l'image à l'échelle afin que la zone d'arrière-plan soit entièrement recouverte par l'image d'arrière-plan tout en conservant le rapport hauteur / largeur. Toute la zone sera couverte. Cependant, une partie de l'image peut ne pas être visible si la largeur / hauteur de l'image redimensionnée est trop grande.
la source
background-size: 100vw 100vh;
fait bien l'affaire.background-size: cover; -ms-background-size: cover; -o-background-size: cover; -moz-background-size: cover; -webkit-background-size: cover;
background-size: 100% auto;
stackoverflow.com/questions/41025630/…Vous pouvez utiliser la propriété CSS3 pour le faire très bien. Il se redimensionne au ratio, donc pas de distorsion d'image (bien qu'il fasse de petites images haut de gamme). Notez simplement qu'il n'est pas encore implémenté dans tous les navigateurs.
la source
background-image
et incluez la propriété ci-dessus. Comme mentionné, la prise en charge du navigateur n'est pas encore bonne et il existe des versions spécifiques à ce navigateur, par exemple.-webkit-background-size
etc. Voir Module CSS3 W3C: background-size et css3.info: background-sizeauto
pour préserver les proportions.En utilisant le code que j'ai mentionné ...
HTML
CSS
Cela produit l'effet souhaité: seul le contenu défilera, pas l'arrière-plan.
L'image d'arrière-plan est redimensionnée dans la fenêtre du navigateur pour n'importe quelle taille d'écran. Lorsque le contenu ne correspond pas à la fenêtre du navigateur et que l'utilisateur doit faire défiler la page, l'image d'arrière-plan reste fixe dans la fenêtre pendant que le contenu défile.
Avec CSS 3, il semble que ce serait beaucoup plus facile.
la source
background : url("example.png");
) puis d'utiliser l'attribut CSS enbackground-size:100%;
dessous pour, espérons-le, redimensionner l'image en fonction de la largeur de l'écran. Cela ne fonctionnera pas, n'est-ce pas? Si vous souhaitez mettre une image d'arrière-plan pour le corps, un attribut d'image doit être ajouté à la balise body comme<body background="example.png">
. Utilisez ensuite cssbackground-size:100%;
pour le mettre à l'échelle.CSS:
la source
html, body {...}
au lieu debody {...}
.étire l'arrière-plan pour remplir tout l'élément sur les deux axes.
la source
La partie CSS suivante devrait étirer l'image avec tous les navigateurs.
Je le fais dynamiquement pour chaque page. Par conséquent, j'utilise PHP pour générer sa propre balise HTML pour chaque page. Toutes les images sont dans le dossier «image» et se terminent par «Bg.jpg».
Si vous n'avez qu'une seule image d'arrière-plan pour toutes les pages, vous pouvez supprimer la
$pic
variable, supprimer les barres obliques inversées, ajuster les chemins d'accès et placer ce code dans votre fichier CSS.Cela a été testé avec Internet Explorer 9, Chrome 21 et Firefox 14.
la source
-webkit-background-size
,-moz-background-size
et ainsi de suite. Voir developer.mozilla.org/en-US/docs/CSS/… Ou vous allez l'inclure à l'épreuve du temps dans une propriété abrégée commebackground: url(img/bg-home.jpg) no-repeat center center / cover fixed;
Vous pouvez réellement obtenir le même effet qu'une image d'arrière-plan avec la balise img. Il vous suffit de définir son z-index plus bas que tout le reste, de définir la position: absolue et d'utiliser un arrière-plan transparent pour chaque boîte au premier plan.
la source
Utilisez ce CSS:
la source
Elle est expliquée par les astuces CSS: Image d'arrière-plan pleine page parfaite
Démo: https://css-tricks.com/examples/FullPageBackgroundImage/progressive.php
Code:
la source
Vous pouvez ajouter cette classe dans votre fichier CSS.
Cela fonctionne dans:
background-size
, mais pas les mots clés)la source
Afin de mettre à l'échelle vos images en fonction de la taille du conteneur, utilisez ce qui suit:
la source
J'utilise ceci, et cela fonctionne avec tous les navigateurs:
la source
Merci!
Mais il ne fonctionnait pas pour les Google Chrome et Safari navigateurs (stretching travaillés, mais la hauteur des images était seulement 2 mm!) , Jusqu'à ce que quelqu'un m'a dit ce qui manque:
Alors changez cela pour votre
height:100%;
ligne, donne:Juste avant ce code nouvellement ajouté, j'ai ceci dans mes thèmes Drupal Tendu
style.css
:Ensuite, je dois faire un nouveau bloc dans Drupal avec l'image tout en ajoutant
class=stretch
:Copier simplement une image avec l'éditeur dans ce bloc Drupal ne fonctionne pas; il faut changer l'éditeur en texte non formaté.
la source
Je suis d'accord avec l'image en div absolue avec 100% de largeur et hauteur. Assurez-vous de définir 100% de largeur et de hauteur pour le corps dans le CSS et définissez les marges et le rembourrage à zéro. Un autre problème que vous constaterez avec cette méthode est que lors de la sélection de texte, la zone de sélection peut parfois englober l'image d'arrière-plan, ce qui a le malheureux effet de rendre la page entière à l'état sélectionné. Vous pouvez contourner cela en utilisant la
user-select:none
règle CSS, comme ceci:Encore une fois, Internet Explorer est le méchant ici, car il ne reconnaît pas l'option de sélection par l'utilisateur - pas même l' aperçu d' Internet Explorer 10 ne le prend en charge, vous avez donc la possibilité d'utiliser JavaScript pour empêcher la sélection d'image d'arrière-plan (par exemple, http : //www.felgall.com/jstip35.htm ) ou en utilisant la méthode CSS -background-stretch.
De plus, pour le référencement, je mettrais l'image d'arrière-plan en bas de la page, mais si l'image d'arrière-plan prend trop de temps à charger (c'est-à-dire avec un fond blanc au départ), vous pouvez vous déplacer vers le haut de la page.
la source
Je voulais centrer et mettre à l'échelle une image d'arrière-plan, sans l'étirer sur la page entière, et je voulais que le rapport d'aspect soit maintenu. Cela a fonctionné pour moi, grâce aux variations suggérées dans d'autres réponses:
IMAGE EN LIGNE: ------------------------
CSS ----------------------------------
la source
J'ai utilisé une combinaison des propriétés CSS background-X pour obtenir l'image d'arrière-plan de mise à l'échelle idéale.
Cela fait que l'arrière-plan couvre toujours toute la fenêtre du navigateur et reste centré lors de la mise à l'échelle.
la source
Utilisez le plugin Backstretch . On pourrait même faire glisser plusieurs images. Il fonctionne également dans des conteneurs. De cette façon, par exemple, on pourrait avoir seulement une partie de l'arrière-plan recouvert d'une image d'arrière-plan.
Puisque même je pourrais le faire fonctionner, cela prouve que c'est un plugin facile à utiliser :).
la source
Si vous souhaitez que le contenu soit centré horizontalement, utilisez une combinaison comme celle-ci:
Cela sera magnifique.
la source
Utilisez ce CSS:
background-size: 100% 100%
la source
Vous pouvez utiliser la
border-image : yourimage
propriété pour mettre l'image à l'échelle jusqu'à la bordure. Même si vous donnez l'image d'arrière-plan, l'image de bordure sera dessinée dessus.La
border-image
propriété est très utile si votre feuille de style est implémentée quelque part qui ne prend pas en charge CSS 3. Si vous utilisez Google Chrome ou Firefox, je recommande labackground-size:cover
propriété elle-même.la source
Voulez-vous y parvenir en utilisant une seule image? Parce que vous pouvez en fait créer un peu un fond d'étirement en utilisant deux images. Des images PNG par exemple.
Je l'ai déjà fait auparavant, et ce n'est pas si difficile. En outre, je pense que l'étirement nuirait à la qualité de l'arrière-plan. Et si vous ajoutez une image énorme, cela ralentirait les ordinateurs et les navigateurs.
la source
Ce qui suit a fonctionné pour moi.
qui a fonctionné pour couvrir tout l'arrière-plan sur différentes dimensions
la source