Centrer une image d'arrière-plan, en utilisant CSS


148

Je souhaite centrer une image d'arrière-plan. Il n'y a pas de div utilisé, c'est le style CSS :

body{
    background-position:center;
    background-image:url(../images/images2.jpg) no-repeat;
}

Les tuiles CSS ci-dessus partout et le centrent, mais la moitié de l'image n'est pas vue, elle se déplace simplement vers le haut. Ce que je veux faire, c'est centrer l'image. Puis-je adopter l'image pour l'afficher même sur un écran de 21 pouces?


1
Maintenant, cela dépendrait de la taille de l'image et de la taille du navigateur, n'est-ce pas?
nikc.org

@nikc +1, je suis au courant, mais je dois savoir s'il y a eu un travail autour
X10nD

Réponses:


306
background-image: url(path-to-file/img.jpg);
background-repeat:no-repeat;
background-position: center center;

Cela devrait fonctionner.

Sinon, pourquoi ne pas en faire un divavec l'image et l'utiliser z-indexpour en faire l'arrière-plan? Ce serait beaucoup plus facile à centrer qu'une image d'arrière-plan sur le corps.

Autre que cela, essayez:

background-position: 0 100px;/*use a pixel value that will center it*/Ou je pense que vous pouvez utiliser 50% si vous avez réglé votre corps min-heightà 100%.

body{

    background-repeat:no-repeat;
    background-position: center center;
    background-image:url(../images/images2.jpg);
    color:#FFF;
    font-family:Arial, Helvetica, sans-serif;
    min-height:100%;
}

Il centralise, mais n'affiche que la moitié de l'écran, je souhaite que stackoverflow ait une option pour joindre des captures d'écran
X10nD

Vous pouvez faire une capture d'écran et la télécharger sur votre serveur ou un site d'hébergement de photos gratuit comme photobucket.com, ou faire un exemple temporaire sur www.jsfiddle.net et poster un lien pour nous. D'après ce que vous avez dit, l'image est de 1 600 x 1 200 et la plupart des résolutions d'écran ne sont pas aussi élevées, essayez de redimensionner votre image pour l'adapter. J'utilise un écran large à 1440x900 par exemple.
Kyle

capture d'écran - imagevat.com/picview.php?ig=6179 Je ne sais pas comment télécharger des images sur jsfiddle, si vous pouvez m'aider là-bas jsfiddle.net/yWrQP
X10nD

Pour ajouter une image à jsfiddle, utilisez simplement le chemin http complet EX: background-image:url(http://www.myurl.com/images/image.jpg);mettez-le dans le CSS.
Kyle

Je n'ai pas le serveur pour le faire, mais j'ai utilisé un site d'hébergement d'images, mais je le vérifie toujours maintenant
X10nD

20

J'utilise ce code, ça marche bien

html, body {
  height: 100%;
  width: 100%;
  padding: 0;
  margin: 0;
  background: black url(back2.png) center center no-repeat;;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}

Merci! Je ne savais même pas qu'il y avait différentes déclarations pour le webkit, etc ...
Mike Rapadas

Hé Victor, j'ai beaucoup utilisé ton code, mais il semble que ça ne marche pas maintenant. J'ai ajouté background-attachment: fixe; mais cela ne fonctionne pas sur mon navigateur iPad ...
Vadim

-webkit-background-sizeExiste seulement à partir des déclarations spéciales.
BigBang1112

16

Je pense que c'est ce que l'on veut:

body
{
    background-image:url('smiley.gif');
    background-repeat:no-repeat;
    background-attachment:fixed;
    background-position:center;
} 

6
background-attachment a corrigé le problème pour moi;)
kdoteu

7

Essayer

background-position: center center;

Comment fonctionne le centre double centre? Quoi qu'il en soit, cela ne résout pas le problème, toujours le même
X10nD

1
@Jean: regardez les spécifications, la position de l'arrière-plan peut en fait prendre 2 valeurs (horizontale et verticale). w3.org/TR/CSS2/colors.html#propdef-background-position
Rob van Groenewoud

@rob ne fonctionne pas, l'image est en mosaïque. L'image est au format 1600x1200 et la taille de mon écran est 1280x800
X10nD

2
@Jean vous ne pouvez pas (encore) redimensionner une image d'arrière-plan. C'est possible dans CSS 3 mais cela n'est pas encore assez largement pris en charge. center centeren tandem avec background-repeat: no-repeatdevrait faire ce que vous demandez - centrer l'image.
Pekka

2
@Jean ahh, je vois maintenant sur ta capture d'écran. Vous devez donner l' bodyun min-heightde 100%sorte qu'il étend sur le plein écran. Cela peut régler le problème.
Pekka

5

Comme ça:

background-image:url(https://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Dore_woodcut_Divine_Comedy_01.jpg/481px-Dore_woodcut_Divine_Comedy_01.jpg);
background-repeat:no-repeat;
background-position: center;
background-size: cover;

html{
height:100%
}

body{
background-image:url(https://upload.wikimedia.org/wikipedia/commons/thumb/8/8b/Dore_woodcut_Divine_Comedy_01.jpg/481px-Dore_woodcut_Divine_Comedy_01.jpg);
background-repeat:no-repeat;
background-position: center;
background-size: cover;
}


3

Il y a une erreur dans votre code. Vous utilisez un mélange de syntaxe complète et de notation abrégée sur la propriété background-image, ce qui fait ignorer la non-répétition, car ce n'est pas une valeur valide pour la propriété background-image.

body{   
    background-position:center;
    background-image:url(../images/images2.jpg) no-repeat;
}

Devrait devenir l'un des suivants:

body{
    background:url(../images/images2.jpg) center center no-repeat;
}

ou

body
{
    background-image: url(path-to-file/img.jpg);
    background-repeat:no-repeat;
    background-position: center center;
}

EDIT: Pour votre problème de «mise à l'échelle» de l'image, vous voudrez peut-être regarder la réponse à cette question .


'background: url (../ images / images2.jpg) center center no-repeat;' ne fonctionne pas, car la syntaxe est fausse Et les autres ne fonctionnent pas non plus
X10nD

2

Essaye ça background-position: center top;

Cela fera l'affaire pour vous.


2
background-repeat:no-repeat;
background-position:center center;

Ne centre pas verticalement l'image d'arrière-plan lors de l'utilisation d'un doctype html 4.01 'STRICT'.

Ajouter:

background-attachment: fixed;

Devrait résoudre le problème

(Alors Alexandre a raison)


1

remplacez simplement

background-image:url(../images/images2.jpg) no-repeat;

avec

background:url(../images/images2.jpg)  center;

0

si vous n'êtes pas satisfait des réponses ci-dessus, utilisez ceci

    * {margin: 0;padding: 0;}

    html
    {
        height: 100%;
    }

    body
    {
        background-image: url("background.png");
        background-repeat: no-repeat;
        background-position: center center;
        background-size: 80%;
    }

0

Avait le même problème. Utilisé les propriétés d'affichage et de marge et cela a fonctionné.

.background-image {
  background: url('yourimage.jpg') no-repeat;
  display: block;
  margin-left: auto;
  margin-right: auto;
  height: whateveryouwantpx;
  width: whateveryouwantpx;
}

0
background-position: center center;

ne fonctionne pas pour moi sans ...

background-attachment: fixed;

en utilisant à la fois mon image centrée sur les axes x et y

background-position: center center;
background-repeat: no-repeat;
background-attachment: fixed;

-2

La seule chose qui a fonctionné pour moi est ...

margin: 0 auto
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.