Centrare un'immagine di sfondo, usando CSS


148

Voglio centrare un'immagine di sfondo. Non viene utilizzato div, questo è lo stile CSS :

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

Le tessere CSS sopra sono ovunque e la centrano, ma metà dell'immagine non viene vista, si sposta semplicemente verso l'alto. Quello che voglio fare è centrare l'immagine. Potrei adottare l'immagine per vederla anche su uno schermo da 21 "?


1
Ora ciò dipenderebbe dalle dimensioni dell'immagine e dalle dimensioni del browser, no?
nikc.org,

@nikc +1, ne sono consapevole, ma devo sapere se c'è stato un
problema

Risposte:


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

Dovrebbe funzionare.

In caso contrario, perché non creare un'immagine divcon e utilizzarla z-indexper renderla di sfondo? Questo sarebbe molto più facile da centrare di un'immagine di sfondo sul corpo.

A parte questo, prova:

background-position: 0 100px;/*use a pixel value that will center it*/Oppure penso che puoi usare il 50% se hai impostato il tuo corpo min-heightal 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%;
}

Si centralizza, ma visualizza solo metà dello schermo, vorrei che StackOverflow avesse un'opzione per collegare gli screenshot
X10nD

Puoi fare uno screenshot e caricarlo sul tuo server o su un sito di hosting di foto gratuito come photobucket.com, oppure fare un esempio temporaneo su www.jsfiddle.net e pubblicare un link per noi. Da quello che hai detto, l'immagine è 1600x1200 e la maggior parte delle risoluzioni dello schermo non va così in alto, prova a ridimensionare l'immagine per adattarla. Ad esempio, utilizzo un monitor widescreen a 1440x900.
Kyle,

screenshot - imagevat.com/picview.php?ig=6179 Non sono sicuro di come caricare le immagini su jsfiddle, se puoi aiutarmi là fuori jsfiddle.net/yWrQP
X10nD

Per aggiungere un'immagine a jsfiddle, basta usare il percorso http completo EX: background-image:url(http://www.myurl.com/images/image.jpg);inseriscilo nel CSS.
Kyle,

Non ho il server per farlo, ma ho usato un sito di imagehosting, ma ancora
provalo

20

Uso questo codice, funziona bene

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;
}

Grazie! Non sapevo nemmeno che ci fossero dichiarazioni diverse per il webkit, ecc ...
Mike Rapadas,

Ehi Victor, ho usato molto il tuo codice, ma sembra che ora non funzioni. Ho aggiunto lo sfondo allegato: fisso; ma non funziona sul mio browser iPad ...
Vadim

-webkit-background-sizeTuttavia esiste solo dalle dichiarazioni speciali.
BigBang1112,

16

Penso che questo sia ciò che si desidera:

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

6
background
-legato ha

7

Provare

background-position: center center;

Come funziona il doppio centro centrale? Comunque non risolve il problema, sempre lo stesso
X10nD

1
@Jean: guarda le specifiche, la posizione di sfondo in realtà può effettivamente prendere 2 valori (orizzontale e verticale). w3.org/TR/CSS2/colors.html#propdef-background-position
Rob van Groenewoud

@rob non funziona, l'immagine è piastrellata. L'immagine è una 1600x1200 e la mia dimensione dello schermo è 1280x800
X10nD

2
@Jean non puoi ridimensionare un'immagine di sfondo (ancora). È possibile in CSS 3 ma non è ancora abbastanza supportato. center centerin tandem background-repeat: no-repeatdovrebbe fare quello che chiedi - centrare l'immagine.
Pekka,

2
@Jean ahh, vedo ora dalla tua schermata. Devi dare la bodya min-heightdi 100%così che si estende su tutto lo schermo. Questo potrebbe risolverlo.
Pekka,

5

Come questo:

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

C'è un errore nel tuo codice. Stai utilizzando un mix di sintassi completa e notazione abbreviata sulla proprietà dell'immagine di sfondo. Questo sta causando l'ignoramento della non ripetizione, poiché non è un valore valido per la proprietà dell'immagine di sfondo.

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

Dovrebbe diventare uno dei seguenti:

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

o

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

EDIT: per il problema del ridimensionamento delle immagini, potresti voler esaminare la risposta a questa domanda .


'background: url (../ images / images2.jpg) center centre no-repeat;' non funziona, poiché la sintassi è errata E neanche gli altri funzionano
X10nD

2

Prova questo background-position: center top;

Questo farà il trucco per te.


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

Non centra verticalmente l'immagine di sfondo quando si utilizza un doctype html 4.01 'STRICT'.

Aggiunta:

background-attachment: fixed;

Dovrebbe risolvere il problema

(Quindi Alexander ha ragione)


1

semplicemente sostituire

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

con

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

0

se non sei soddisfatto delle risposte sopra, usa questo

    * {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

Ho avuto lo stesso problema. Usato display e proprietà dei margini e ha funzionato.

.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;

non funziona per me senza ...

background-attachment: fixed;

usando sia centrata la mia immagine sull'asse xey

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

-2

L'unica cosa che ha funzionato per me è ...

margin: 0 auto
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.