[css] background image

Résolu
Bonjour,

J'aurais juste besoin de savoir s'il est possible d' "obliger" une image de fond (background-image) à se proportionner de façon a remplir la totalité du fond de la page.
Merci d'avance de vos réponses
Isa
Configuration: W98

16 réponses

Résumé de la discussion

Le problème concerne la mise à l'échelle d'une image de fond afin qu'elle occupe l'intégralité du fond de page tout en conservant ses proportions, sans déformation et sans laisser de zones non remplies. Plusieurs propositions privilégient le CSS avec background-size: cover et background-position: center center, associé à background-repeat: no-repeat et, selon les cas, background-attachment: fixed pour limiter les déformations. D'autres conseils indiquent des solutions pratiques avec une div dédiée ou une image en plein écran après le body, et affirment que le JavaScript n'est pas nécessaire pour obtenir l'effet. En cas de limitations navigateur, certaines approches consistent à utiliser une div fixe ou d'autres méthodes CSS pour garantir le remplissage complet sans déformation selon la taille de la fenêtre.

Bobot (l’IA à votre service)
  1. Contributeur
    background-image: url(./images/background.jpg); 
    background-position: center center;
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-size: cover;
    -moz-background-size: 100% 100%; /* Gecko 1.9.2 (Firefox 3.6) */
    -o-background-size: 100% 100%; /* Opera 9.5 */
    -webkit-background-size: 100% 100%; /* Safari 3.0 */
    background-size: 100% 100%; /* Gecko 2.0 (Firefox 4.0) > CSS3 */
    1. Ca ne fonctionne pas lorsqu'ont regarde le site sur un Ipad...le fond ne s'ajuste pas ? avez-vous la réponse ? Merci
    2. bonne question de STEF

      Quel script permet de switché sur un IPAD SCREEN ?

      (ma question est un peu mal posée je vous l'avoue)
    3. Contributeur
      @stef & doneydjeu utilise les instructions de sélection conditionnelles des feuilles de style selon la taille des écrans.
    4. Franchement merci :)
  2. Bon, en attendant, c'est fini de se prendre la tête:
    background-image: url(images/monimage.jpg);
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-size: cover;
    et le tour est joué.
    Valable pour ie, chrome, safari, firefox...
    1. Houla! Bonjour la science!!!
      La propriété background-size est une propriété CSS3 seulement implémentée par les navigateurs de dernière génération et pour le reste, alléger une feuille de style est très bon pour la bande passante hébergeur :
      background: url(images/monimage.jpg) no-repeat fixed;
    2. +1 c'est le plus simple, la meilleure solution !!
    3. +1 aussi exactement ce que je cherchais ;) !!!!
    4. merci drann!
    5. top merci beaucoup sympa de partager!
  3. Bonjour,

    Pour mettre une image de fond en plein écran y a toujours moyen d'écrire ça (tout de suite après la balise <body>) :

    <img src="cequetuveux.jpg" width=100% height=100% style="position: absolute">
    1. Et pour la bar de défilement ? L'image reste en haut et on voie le blanc en dessou :/
    2. Comment faire pour que le texte soit sur l'image stp ??
  4. Salut.

    Moi je n'aime pas trop la solution de truthlesslife : ça déforme l'image.

    Pour avoir une image de fond qui s'adapte à la taille de la fenêtre tout en conservant ses proportions largeur/hauteur, il faut avoir recours au javascript.

    Il existe des scripts tout prêt pour ça : https://reactdom.com/restful-api/
    1. La solution que je donne plus haut (uniquement css) ne déforme pas du tout l'image (vous pouvez voir la démo).
    2. supersized est cool dans le genre : http://buildinternet.com/project/supersized/
  5. Le problème si tu utilises css background c'est que si ta page n'est pas fixe en taille tu ne vas pas pouvoir redimensionner l'image de fond.

    Contrairement au design en print la taille d'une page web n'est pas fixe. Pour résoudre ce problème on utilise souvent une div à taille fixe sur laquelle on applique l'image de fond.
    1. bonjour
      cest exactement le problème que je voulais résoudre: mettre limage de background full screen
      le truc de truthlesslif et/ou de alsacreations sont exactemen ce quil faut faire

      merci
      1. Oui mais ça ne répond pas à la question.
        En plus tu te trompes. Etirer une photo c'est moche, certes, mais si tu as des fonctions spéciales, ça peut être utile d'étirer l'image de la taille X, où X est une variable.
        Par exemple pour des votes ou des statistics.
        Bref, j'ai justement le même problème que Isa et j'aimerais bien une réponse si quelqu'un sait y répondre.

        Merci
        1. bonjour pouvez vous m'expliquez comment crée des images background pour css
          1. Essayez avec :
            background-attachment: fixed !important;

            il semble que ça résous le probleme
            1. background: url(../images/index0.jpg) no-repeat center fixed;
              background-size: cover;
              1. ça va être assez dégueulasse...

                mieux vaut prévoir une image de la taille de ta page (et donc fixer en dur la taille de cette page) ou alors utiliser une image-motif qui va se répéter...
                1. oui mais en faisant ca tu t interdit de pouvoir modifier limage de fond en fonction du style de page que tu affiche
                  1. Contributeur
                    Je n'ai pas lu ça dans la question d'origine.
                    Tu as des lunettes spéciales ?

                    Cependant, on peut placer l'image à l'aide d'un script qui se déclenche au chargement de la page en précisant une source différente à chaque fois.

                    --
                  2. vas voir ici (je crois)
                    http://foyerdj.freeheberg.com/
                  3. Essayez avec
                    background-attachment: fixed !important;

                    il semble que ça résous le probleme