Faire un arrière-plan étirable

Une image mise en arrière-plan (background-image) ne s'étire pas, elle ne fait que se dupliquer.

Pour réaliser un arrière-plan étirable, il faut utiliser une image (balise img) et non un background en CSS. Voici une méthode...

Le principe général est de donner les dimensions 100% à l'image, qui occupera alors toute la place de son conteneur (div, cellule,...). Ensuite, pour pouvoir afficher un texte par dessus, il faut donner une position à ce texte (absolu ou relatif).

Attention : avec cette méthode, l'image risque d'être très déformée puisque les proportions (hauteur / largeur) ne sont pas respectées.Si vous voulez que les proportions soient gardées, il vous suffit de ne spécifier que la dimension qui devra s'élargir (width OU height)... l'autre dimension va s'adapter mais dans ce cas n'occupera plus 100% de l'espace.

Un arrière plan sur le document entier (body)

(voir le résultat obtenu)

<style type="text/css">
<!--
html, body {
margin:0;
padding:0;
height: 100%;
width: 100%;
}
#arriere{
/* l'image occupe toute la place du body */
width : 100%;
height: 100%;
}
-->
</style>

Le code HTML :

<img id="arriere" alt="" src="araignees.jpg" />

Un arrière plan sur un autre élément

(voir le résultat obtenu)

<style type="text/css">
<!--
html, body {
margin:0;
padding:0;
height: 100%;
width: 100%;
}
#arriere {
position: absolute;	/* dimension et positionnement du bloc conteneur  de l'image */
left: 10em;
top: 5em;
height : 20em;	
width : 30em;
}
#arriere img {
/* l'image occupe toute la place de son bloc conteneur */
width : 100%;
height: 100%;
}
#arriere p {	
position: absolute;	/* placement du texte par-dessus l'image */
top: 1em;
left: 1em;
font-size: 1.5em;
color: white;
}
-->
</style>
</head>
<body>

<div id="arriere"><img alt="" src="image.png />
<p>titre sur une image en arrière-plan étirée <br />
Modifiez la taille du texte avec votre navigateur : l'image suit la cadence !</p>
</div>

</body>
</html>

Code testé avec succès sur Windows IE5, IE5.5, IE6, Mozilla Firebird 0.7, Mozilla Firefox 0.8 et Opera 7.23.

Pour info, l'astuce d'utiliser l'unité em sur les dimensions de l'image provient d'une lecture d'un article sur HTML Dog [en]

Trackbacks

Aucun trackback pour le moment.

Les trackbacks pour ce billet sont fermés.

Evaluez ce billet

Commentaires

Le dimanche 23 mai 2004 à 02:42, par Yeca :: site :: #

Hum, ça m'inspire une technique pour un affichage simple de thumbnail de photos ça :)

Le mercredi 26 mai 2004 à 20:28, par Soso :: site :: #

Ca sera pas plus simple en jouant sur les z-index ?

Le jeudi 27 mai 2004 à 10:03, par Raphael Goetter :: site :: #

@soso > le z-index n'est qu'une indication, il ne te dispense pas de positionner tes objets en absolu ou relatif, c'est juste une "sécurité" supplémentaire si tu as plein d'éléments que que tu veux déterminer un ordre d'empilement précis.
A moins que tu n'aies une autre idée ?

Le jeudi 9 septembre 2004 à 18:44, par jb_gfx :: site :: #

Ouah! Ou comment faire du pseudo Flash horrible et qui pixélise bien quelque soit le système utilisé pour la visualisation! :)

Non bon je plaisante, ça pourra peut être servir un jour qui sait? En tout cas ça fonctionne bien...

Le mardi 14 septembre 2004 à 13:11, par trululu :: #

La photo est à vomir.

Le mardi 14 septembre 2004 à 13:15, par Raphael :: site :: #

"La photo est à vomir."
>> Il s'agit de bestioles parfois rencontrées par les GI's américains en Irak.

Le jeudi 16 septembre 2004 à 01:39, par jb_gfx :: site :: #

"Il s'agit de bestioles parfois rencontrées par les GI's américains en Irak."

Arggghh!! Je croyais que c'etait tiré d'un film de sf ou d'une série genre Stargate.. affreux!

Le jeudi 16 septembre 2004 à 21:14, par Laurent Denis :: #

Je me demande, sans avoir creusé la question, si on ne peut pas obtenir un image décorative d'arrière-plan étirable pure CSS par le biais d'un "content", qui aurait alors l'avantage de ne pas être dans le contenu HTML...

C'est assez facile dans opera qui applique cette propriété à la manière CSS3, c'est à dire sur tous les sélecteurs, et qui applique le positionnement sur le content généré.

Il faudrait passer par un :after ou un :before pour les Gecko, et voir si on peut le positionner et lui appliquer un z-index.

Hum... à creuser.

Le jeudi 16 septembre 2004 à 22:39, par Raphael :: site :: #

@Laurent > c'est vrai que le content est une façon supplémentaire d'avoir des images pure CSS (avec background-image) et il pourrait avoir des avantages que background n'a pas.

Le lundi 18 octobre 2004 à 08:11, par subØ :: #

Salut! ;) Pour obtenir une image qui s'étire avec la fenêtre...
Qu'en pensez-vous?
<html>
<head>
</head>
<body>

<img style="position:absolute;left:0px;top:0px;width:100%;height:100%;"
src="test.jpg" alt=""/>
<div style="position:absolute;left:0px;top:0px;width:100%;height:100%;">

Contenu de la page ici

</div>

</body>
</html>

à+

Le lundi 18 octobre 2004 à 10:45, par Raphael :: site :: #

@subØ > C'est le même principe que le 1er exemple, à part que tu as rajouté le code pour le contenu de la page.

Le samedi 23 octobre 2004 à 18:16, par myfrane :: #

Salut,
sympa ton astuce, mais étant novice en css, peux-tu m'indiquer pourquoi cela ne fonctionne pas sous netscape. Quelque chose à rajouter pour que netscape interprète correctement ?

Le samedi 23 octobre 2004 à 18:27, par Raphael :: site :: #

Je n'ai malheureusement pas Netscape pour tester, mais il ne me semble pas qu'il pose de problème par rapport aux propriétés mises en jeu dans ce code.

Le mardi 26 octobre 2004 à 19:49, par noone.1 :: #

ce n'est pas une araignee et c'est un hoax :
www.hoaxbuster.com/hoaxli...

Le mardi 26 octobre 2004 à 21:01, par Raphael :: site :: #

Ah ben on en apprend des choses :)

Le mardi 11 janvier 2005 à 21:50, par hablabla :: #

Merci, ça fait des semaines que je cherche comment faire un arrière plan étirable et personne ne savait le faire. ;-)

Le mardi 18 janvier 2005 à 02:57, par hablabla :: site :: #

J'ai bien suivi ces conseils pour réaliser un arrière plan étirable, ça fonctionne très bien et c'est exactement ce que je cherche depuis longtemps comme je l'ai dit dans mon précédent post. Cependant, je me heurteà un nouveau problème: lorsque le texte dépasse l'image, cette dernière n'agit finalement plus comme un arrière plan puisque le texte continue en dehors de cette image. Ce qui n'était pas le cas avec un arrière plan basique et un bgproperties=fixed ui me permettait de faire défiler le texte sur un arrière plan fixe mais un arrière plan qui ne s'adaptait malheureusement pas à la taille de la fenêtre.

page réalisée:
etudiant.univ-mlv.fr/~lpe...
Je voudrais donc savoir si il y a un moyen de concilier image étirable en arrière plan/mais avec les mêmes propiétés que bgproperties=fixed.
Merci d'avance pour vos idées

Le vendredi 27 mai 2005 à 16:50, par Elo44 :: site :: #

bonjour

je voulais utiliser ce code qui est très bien mais le seul problème c'est que quand il y a plusieurs paragraphe, ils apparaissent les uns par dessus les autres.

Pouvez vous m'aider svp.
Merci
Elo

Le vendredi 27 mai 2005 à 16:52, par Raphael :: site :: #

Elo : le blog est fait pour laisser des commentaires, pas pour ce genre de choses.

Tu as d'ailleurs déjà posté un message sur le forum : forum.alsacreations.com/t...

Ajouter un commentaire

Les commentaires pour ce billet sont fermés.

  • CSS2
  • Memento XHTML
  • Le zen des CSS
  • CSS
  • Web accessible