Підійдіть фонове зображення до діва


334

Я маю фонове зображення в наступному розділі, але зображення відрізається:

 <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">

Чи є спосіб показати фонове зображення, не відрізаючи його?


Чи більший образ від діва?
grc

1
так, зображення більше, ніж у диві
Раєєв,

1
background-image: url (/media/img_1_bg.jpg); фоновий розмір: містити; фон-повторення: не повторення;
Waruna Manjula

Відповіді:


671

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

Щоб масштабувати фонове зображення, щоб вмістити його в div:

background-size: contain;

Щоб масштабувати фонове зображення, щоб охопити весь div:

background-size: cover;

Приклад JSFiddle

Існує також фільтр для підтримки IE 5.5+ , а також префікси постачальників для деяких старих браузерів .


119

Якщо вам потрібно, щоб зображення мало однакові розміри, я думаю, що це найелегантніше рішення:

background-size: 100% 100%;

Якщо ні, то відповідь від @grc є найбільш прийнятною.

Джерело: http://www.w3schools.com/cssref/css3_pr_background-size.asp


Нарешті я знайшов рішення підходити цілим дівом до фону. Дякую!
Каміль Риковський

5
але це розтягне зображення ... чи є спосіб пристосувати фонове зображення, не розтягуючи його?
Джунаїд

1
Однак співвідношення сторін втрачено.
Учень

@Learner Якщо змінити розміри зображення, не обрізаючи зображення, співвідношення сторін втрачається 99% часу. Це здоровий глузд.
Вішал

11

Ви можете використовувати ці атрибути:

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">

8

Ви також використовуєте це:

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

Я не знаю ваших ді-цінностей, але припустимо, що ви їх отримали.

height: auto;
max-width: 600px;

Знову ж таки, це просто випадкові числа. Зробити фонове зображення (якщо ви хочете) це може бути досить важко з фіксованою шириною для div, тому краще використовувати max-width. А насправді не складно заповнити div з фоновим зображенням, просто переконайтесь, що ви правильно стилізуєте батьківський елемент, щоб у зображенні було місце, в яке він може потрапити.

Кріс


Посилання на відповідь з високою оцінкою, яка детальніше розповідає про це рішення: stackoverflow.com/questions/600743/… та показує, як обчислити padding-top.
Джон Лі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.