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.