Wyśrodkowanie obrazu tła za pomocą CSS


148

Chcę wyśrodkować obraz tła. Nie jest używany żaden element div, jest to styl CSS :

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

Powyższe kafelki CSS są wszędzie i wyśrodkowują, ale połowa obrazu nie jest widoczna, po prostu przesuwa się w górę. Chcę wyśrodkować obraz. Czy mogę dostosować obraz do wyświetlania nawet na ekranie 21 "?


1
To zależałoby od rozmiaru obrazu i przeglądarki, prawda?
nikc.org

@nikc +1, jestem świadomy, ale muszę wiedzieć, czy było jakieś obejście
X10nD

Odpowiedzi:


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

To powinno działać.

Jeśli nie, dlaczego nie zrobić divz obrazem i użyć z-indexgo do ustawienia tła? Byłoby to znacznie łatwiejsze do wyśrodkowania niż obraz tła na ciele.

Poza tym spróbuj:

background-position: 0 100px;/*use a pixel value that will center it*/Albo myślę, że możesz użyć 50%, jeśli ustawiłeś swoje ciało min-heightna 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%;
}

Centralizuje się, ale wyświetla tylko połowę ekranu, chciałbym, aby
przepełnienie stosu

Możesz zrobić zrzut ekranu i przesłać go na swój serwer lub darmową witrynę do hostowania zdjęć, taką jak photobucket.com, lub zrobić tymczasowy przykład na www.jsfiddle.net i opublikować dla nas link. Z tego, co powiedziałeś, obraz ma 1600 x 1200, a większość rozdzielczości ekranu nie jest tak wysoka, spróbuj zmienić rozmiar obrazu, aby dopasować. Na przykład używam panoramicznego monitora o rozdzielczości 1440x900.
Kyle

zrzut ekranu - imagevat.com/picview.php?ig=6179 Nie jestem pewien, jak przesłać obrazy do jsfiddle, jeśli możesz mi tam pomóc jsfiddle.net/yWrQP
X10nD

Aby dodać obraz do jsfiddle, po prostu użyj pełnej ścieżki http EX: background-image:url(http://www.myurl.com/images/image.jpg);umieść ją w CSS.
Kyle

Nie mam serwera, aby to zrobić, ale korzystałem z witryny imagehosting, ale nadal sprawdzam to teraz
X10nD

20

Używam tego kodu, działa dobrze

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

Dzięki! Nie wiedziałem nawet, że są różne deklaracje dotyczące webkitu itp.
Mike Rapadas,

Hej Victor, często używałem twojego kodu, ale wygląda na to, że teraz nie działa. Dodałem załącznik w tle: naprawiono; ale nie działa na mojej przeglądarce na iPadzie ...
Vadim

-webkit-background-sizeJednak istnieje tylko na podstawie specjalnych deklaracji.
BigBang1112

16

Myślę, że to jest to, czego potrzebujemy:

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

6
dołączenie w tle rozwiązało problem;)
kdoteu

7

Próbować

background-position: center center;

Jak działa podwójne centrum? W każdym razie to nie rozwiązuje problemu, nadal to samo
X10nD

1
@Jean: spójrz na specyfikacje, pozycja tła faktycznie może przyjmować 2 wartości (poziomą i pionową). w3.org/TR/CSS2/colors.html#propdef-background-position
Rob van Groenewoud

@rob nie działa, obraz jest kafelkowy. Obraz ma rozmiar
1600

2
@Jean nie możesz zmienić rozmiaru obrazu tła (jeszcze). Jest to możliwe w CSS 3, ale nie jest to jeszcze wystarczająco szeroko obsługiwane. center centerw parze z background-repeat: no-repeatpowinien robić to, o co prosisz - wyśrodkować obraz.
Pekka

2
@Jean ahh, widzę teraz z twojego zrzutu ekranu. Musisz dać bodya min-heightof, 100%aby rozciągał się na cały ekran. To może rozwiązać problem.
Pekka

5

Lubię to:

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

W Twoim kodzie jest błąd. Używasz połączenia pełnej składni i notacji skróconej we właściwości background-image, co powoduje ignorowanie braku powtórzeń, ponieważ nie jest to poprawna wartość właściwości background-image.

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

Powinien stać się jednym z następujących:

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

lub

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

EDYCJA: W przypadku problemu ze skalowaniem obrazu możesz spojrzeć na odpowiedź na to pytanie .


'background: url (../ images / images2.jpg) center center no-repeat;' nie działa, ponieważ składnia jest nieprawidłowa A inne też nie działają
X10nD

2

Spróbuj tego background-position: center top;

To załatwi sprawę za Ciebie.


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

Nie wyśrodkowuje w pionie obrazu tła w przypadku użycia typu dokumentu HTML 4.01 „STRICT”.

Dodanie:

background-attachment: fixed;

Powinno rozwiązać problem

(Więc Alexander ma rację)


1

po prostu wymień

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

z

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

0

jeśli nie jesteś zadowolony z powyższych odpowiedzi, użyj tego

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

Miałem ten sam problem. Użyłem właściwości wyświetlania i marginesów i zadziałało.

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

nie działa dla mnie bez ...

background-attachment: fixed;

używając obu wyśrodkowanych mojego obrazu na osi X i Y.

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.