Подогнать фоновое изображение к div - PullRequest
283 голосов
/ 20 ноября 2011

У меня есть фоновое изображение в следующем div, но изображение обрезается:

 <div style='text-align:center;background-image: url(/media/img_1_bg.jpg);background-repeat:no-repeat;width:450px;height:900px;' id="mainpage" align="center">

Есть ли способ показать фоновое изображение, не обрезая его?

Ответы [ 4 ]

578 голосов
/ 20 ноября 2011

Этого можно добиться с помощью свойства background-size, которое теперь поддерживается большинством браузеров .

Чтобы масштабировать фоновое изображение для размещения внутри div:

background-size: contain;

Чтобы масштабировать фоновое изображение, чтобы охватить весь div:

background-size: cover;

Пример JSFiddle

Также существует фильтр для поддержки IE 5.5+ , а также префиксы поставщиков для некоторых старых браузеров .

94 голосов
/ 14 августа 2015

Если вам нужно, чтобы изображение имело одинаковые размеры div, я думаю, что это самое элегантное решение:

background-size: 100% 100%;

Если нет, то ответ @grc является наиболее подходящим.

Источник: http://www.w3schools.com/cssref/css3_pr_background-size.asp

8 голосов
/ 24 марта 2015

вы также используете это:

background-size:contain;
height: 0;
width: 100%;
padding-top: 66,64%; 

Я не знаю ваших значений div, но давайте предположим, что вы их получили.

height: auto;
max-width: 600px;

Опять же, это простослучайные числа.Может быть довольно сложно создать фоновое изображение (если вы захотите) с фиксированной шириной для div, поэтому лучше использовать max-width.И на самом деле, не сложно заполнить div фоновым изображением, просто убедитесь, что вы правильно стилизуете родительский элемент, чтобы у изображения было место, куда оно может войти.

Крис

3 голосов
/ 13 ноября 2018

Вы можете использовать следующие атрибуты:

background-size: contain;
background-repeat: no-repeat;

и ваш код будет выглядеть следующим образом:

 <div style="text-align:center;background-image: url(/media/img_1_bg.jpg); background-size: contain;
background-repeat: no-repeat;" id="mainpage">
...