Как центрировать (фоновое) изображение внутри div? - PullRequest
126 голосов
/ 18 февраля 2011

Можно ли отцентрировать фоновое изображение в div? Я попробовал почти все - но безуспешно:

<div id="doit">
  Lorem Ipsum ...
</div>

//CSS
#doit { background-image: url(images/pic.png); background-repeat: none; text-align: center; }

Возможно ли это?

Ответы [ 8 ]

260 голосов
/ 18 февраля 2011
#doit {
    background: url(url) no-repeat center;
}
76 голосов
/ 18 февраля 2011

попробуй background-position:center;

РЕДАКТИРОВАТЬ: так как этот вопрос получает много просмотров, стоит добавить дополнительную информацию:

text-align: center не будет работать, поскольку фоновое изображение не является частью документа и, следовательно, не является частью потока.

background-position:center - сокращение от background-position: center center; (background-position: horizontal vertical);

15 голосов
/ 18 февраля 2011

Использовать background-position:

background-position: 50% 50%;
7 голосов
/ 25 апреля 2015

Если ваше фоновое изображение представляет собой вертикально спрайтовый лист, вы можете горизонтально центрировать каждый спрайт следующим образом:

#doit {
    background-image: url('images/pic.png'); 
    background-repeat: none;
    background-position: 50% [y position of sprite];
}

Если ваше фоновое изображение является горизонтально выровненным спрайтовым листом, вы можете вертикально центрировать каждый спрайт какthis:

#doit {
    background-image: url('images/pic.png'); 
    background-repeat: none;
    background-position: [x position of sprite] 50%;
}

Если ваш спрайт-лист компактен или вы не пытаетесь центрировать фоновое изображение в одном из вышеупомянутых сценариев, эти решения не применяются.

5 голосов
/ 14 мая 2014

Это работает для меня:

#doit{
    background-image: url('images/pic.png');
    background-repeat: no-repeat;
    background-position: center;  
}  
4 голосов
/ 17 марта 2017

Для центра или позиционирования фонового изображения вы должны использовать свойство background-position.Свойство background-position устанавливает начальную позицию фонового изображения со стороны top и left элемента.Синтаксис CSS: background-position : xvalue yvalue;.

Поддерживаемые значения «xvalue» и «yvalue» - это единицы длины, такие как px, а также имена в процентах и ​​направлениях, такие как left, right и т. Д.

The "xvalue "- горизонтальное положение фона и начинается сверху элемента.Это означает, что если вы используете 50px, это будет "50px" от верхней части элементов.И «yvalue» - это вертикальная позиция с таким же условием.

Так что, если вы используете background-position: center;, ваше фоновое изображение будет центрировано.

Но я всегда использую этот код:

.yourclass {
  background: url(image.png) no-repeat center /cover;
 }

Я знаю, это так запутанно, но это значит:

.yourclass {
  background-image: url(image.png);
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
}

И я знаю, что background-size - это новое свойство, и в сжатом коде это /cover, но эти коды означают fill изменение размера фона и позиционирование вфон рабочего стола Windows.

Подробнее о background-position в здесь и background-size в здесь .

3 голосов
/ 07 декабря 2016

Это работает для меня:

.network-connections-icon {
  background-image: url(url);
  background-size: 100%;
  width: 56px;
  height: 56px;
  margin: 0 auto;
}
1 голос
/ 12 декабря 2014

Это работает для меня:

<style>
   .WidgetBody
        {   
            background: #F0F0F0;
            background-image:url('images/mini-loader.gif');
            background-position: 50% 50%;            
            background-repeat:no-repeat;            
        }
</style>        
...