Центрирование фонового изображения с использованием CSS


148

Я хочу центрировать фоновое изображение. Div не используется, это стиль CSS :

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

Вышеприведенные CSS-элементы разбиты на части и центрируют их, но половина изображения не видна, она просто движется вверх. То, что я хочу сделать, это центрировать изображение. Могу ли я принять изображение для просмотра даже на 21 "экране?


1
Теперь это будет зависеть от размера изображения и размера браузера, не так ли?
nikc.org

@nikc +1, я в курсе, но нужно знать, была ли работа вокруг
X10nD

Ответы:


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

Это должно работать.

Если нет, то почему бы не сделать divизображение и использовать z-indexего для фона? Это было бы намного легче центрировать, чем фоновое изображение на теле.

Кроме этого попробуйте:

background-position: 0 100px;/*use a pixel value that will center it*/Или я думаю, что вы можете использовать 50%, если вы установили свое тело 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%;
}

Он централизован, но отображает только половину экрана, я бы хотел, чтобы в stackoverflow была возможность прикреплять скриншоты
X10nD

Вы можете сделать снимок экрана и загрузить его на свой сервер или на бесплатный хостинг изображений, такой как photobucket.com, или сделать временный пример на www.jsfiddle.net и опубликовать для нас ссылку. Исходя из того, что вы сказали, изображение имеет размер 1600x1200, и большинство разрешений экрана не так высоки, попробуйте изменить размер изображения, чтобы оно подходило. Например, я использую широкоэкранный монитор с разрешением 1440x900.
Кайл

снимок экрана - imagevat.com/picview.php?ig=6179 Я не уверен, как загрузить изображения в jsfiddle, если вы можете мне там помочь jsfiddle.net/yWrQP
X10nD

Чтобы добавить изображение в jsfiddle, просто используйте полный http-путь EX: background-image:url(http://www.myurl.com/images/image.jpg);поместите его в CSS.
Кайл

У меня нет сервера, чтобы сделать это, но я использовал сайт для хостинга изображений, но все еще проверю это сейчас
X10nD

20

Я использую этот код, он работает хорошо

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

Спасибо! Я даже не знал, что были разные декларации для webkit и т.д ...
Майк Рападас

Привет, Виктор, я много использовал твой код, но, похоже, сейчас он не работает. Я добавил background-attachment: исправлено; но он не работает на моем браузере iPad ...
Вадим

-webkit-background-sizeХотя существует только из специальных объявлений.
BigBang1112

16

Я думаю, что это то, что нужно:

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

6
background-attachment исправил проблему для меня;)
kdoteu

7

Пытаться

background-position: center center;

Как работает двойной центр? Во всяком случае, это не решает проблему, все тот же
X10nD

1
@Jean: посмотрите на спецификации, background-position фактически может принимать 2 значения (горизонтальное и вертикальное). w3.org/TR/CSS2/colors.html#propdef-background-position
Роб ван Гроенвуд

@rob не работает, изображение черепичное. Изображение размером 1600x1200 и мой размер экрана 1280x800
X10nD

2
@ Жан, вы не можете изменить размер фонового изображения (пока). Это возможно в CSS 3, но пока еще недостаточно широко. center centerв сочетании с background-repeat: no-repeatдолжен делать то, что вы просите - центрировать изображение.
Пекка

2
@ Джин, ах, теперь я вижу по твоему скриншоту. Вы должны дать bodyа , min-heightо , 100%так оно простирается через весь экран. Это может сортировать это.
Пекка

5

Как это:

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

В вашем коде есть ошибка. Вы используете сочетание полного синтаксиса и сокращенной записи в свойстве background-image. Это приводит к тому, что no-repeat игнорируется, поскольку это недопустимое значение для свойства background-image.

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

Должно стать одним из следующих:

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

или

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

РЕДАКТИРОВАТЬ: Для вашей проблемы масштабирования изображения, вы можете посмотреть на ответ на этот вопрос .


'background: url (../ images / images2.jpg) центр центр без повтора;' не работает, так как синтаксис неправильный И другие тоже не работают
X10nD


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

Не центрировать фоновое изображение по вертикали при использовании html 4.01 «СТРИКТ» doctype.

Добавление:

background-attachment: fixed;

Должен решить проблему

(Так что Александр прав)


1

просто заменить

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

с участием

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

0

если вы не удовлетворены ответами выше, используйте это

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

Была такая же проблема. Использовал свойства display и margin и все заработало.

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

не работает для меня без ...

background-attachment: fixed;

используя оба моих центрированных изображения по осям X и Y

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.