99 votes

Comment étirer une image d'arrière-plan pour qu'elle couvre la totalité de l'élément HTML ?

J'essaie de faire en sorte que l'image d'arrière-plan d'un élément HTML (body, div, etc.) s'étende sur toute sa largeur et sa hauteur.

Je n'ai pas beaucoup de chance. Est-ce que c'est possible ou est-ce que je dois le faire d'une autre manière que l'image d'arrière-plan ?

Mon css actuel est :

body {
    background-position: left top;
    background-image: url(_images/home.jpg);
    background-repeat: no-repeat;
}

Merci d'avance.

Edit : Je n'ai pas envie de maintenir le CSS dans la suggestion de Gabriel, donc je change la mise en page de la page à la place. Mais cela semble être la meilleure solution et je la marque comme telle.

0 votes

Bien sûr, vous pourriez utiliser JavaScript pour faire cela de manière dynamique, mais ce serait probablement pire que les bidouillages CSS suggérés par le lien de gabriel1836.

0 votes

Pour préserver le rapport hauteur/largeur de l'image, vous devez utiliser "background-size : cover ;" ou "background-size : contain ;". J'ai construit un polyfill qui implémente ces valeurs dans IE8 : github.com/louisremi/background-size-polyfill

212voto

Nathan Points 691
<style>
    { margin: 0; padding: 0; }

    html { 
        background: url('images/yourimage.jpg') no-repeat center center fixed; 
        -webkit-background-size: cover;
        -moz-background-size: cover;
        -o-background-size: cover;
        background-size: cover;
    }
</style>

0 votes

Cela fonctionne également comme des balises de style dans les éléments html ou dans les fichiers css.

3 votes

C'est la meilleure solution qui soit.

1 votes

Quelle est la différence entre couverture et 100% ?

15voto

porneL Points 42805

Utilisez le background-size propriété : http://www.w3.org/TR/css3-background/#the-background-size

1 votes

Génial, c'est la bonne réponse. Cela ne fonctionne probablement pas sur IE, mais je ne vise que webkit pour mon projet, donc c'est parfait :)

9voto

Tamal Samui Points 214

En bref, vous pouvez essayer ceci....

<div data-role="page" style="background:url('backgrnd.png'); background-repeat: no-repeat; background-size: 100% 100%;" >

Où j'ai utilisé quelques css et js...

<link rel="stylesheet" href="css/jquery.mobile-1.0.1.min.css" />
<script src="js/jquery-1.7.1.min.js"></script>
<script src="js/jquery.mobile-1.0.1.min.js"></script>

Et cela fonctionne bien pour moi.

0 votes

Pour ceux qui ne veulent PAS conserver le rapport d'aspect !

6voto

Travis Collins Points 1428

Je ne suis pas sûr que l'étirement d'une image de fond soit possible. Si vous constatez que ce n'est pas possible, ou que ce n'est pas fiable dans tous vos navigateurs cibles, vous pouvez essayer d'utiliser une balise img étirée avec un z-index plus bas et une position absolue pour que le contenu apparaisse par-dessus.

Faites-nous savoir ce que vous finissez par faire.

Edit : Ce que j'ai suggéré est essentiellement ce qui se trouve dans le lien de gabriel. Essayez donc cela :)

1 votes

J'ai vu cette technique en action il y a au moins une décennie. Je ne peux pas imaginer qu'elle ne fonctionnerait pas encore aujourd'hui.

3voto

Noah Goodrich Points 12645

J'ai fait une recherche rapide sur Google et j'ai trouvé ce lien :

http://www.htmlite.com/faq022.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X