@ligisayan

Как сделать, чтобы высота блока с картинкой сама подстраивалась под экран?

Есть блок с картинкой с заданной фоновой картинкой и минимальной высотой. Интересует, как с помощью стилей так, чтобы высота картинки подстраивалась под экран при его увеличении (min-height изменялся), т.е. фактически чтобы картинка с надписью не скрывалась за блоком, а была всегда логически расположена по центру, была на всю ширину и сохраняла пропорции на любых разрешениях экранов. Фидл
<div class="background"></div>
.background {
    background-image: url(http://user2026286.atservers.net/img/background.jpg);
    background-size: cover;
    height: 1px;
    min-height: 250px;
}
  • Вопрос задан
  • 1718 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега CSS
frontend developer
Все условия задачи невыполнимы. Потому что:
1. экран может иметь любые размеры, в т.ч. любое соотношение сторон.
2. картинка может иметь любые размеры, и что более важно - любое соотношение сторон.

Можно сделать определенные допущения, тогда решение будет.
Самое простое, что приходит в голову - растянуть див на всю высоту, картинку сделать по центру и задать один из двух вариантов вписывания изображения:
cover, когда картинка занимает всю площадь объекта, а излишки обрезаются https://jsfiddle.net/6xzyokuh/3/
или contain, когда картинка пропорционально вписывается в объект, и появляются пустые полосы https://jsfiddle.net/6xzyokuh/5/

В более сложном варианте вы можете определить пропорции дива, но тут уже как вы понимаете, его высота будет величиной переменной, зато картинка будет идеально вписана. Однако, здесь есть еще один нюанс - нужно точно знать aspect ratio картинки. https://jsfiddle.net/6xzyokuh/7/
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Daemon23RUS
@Daemon23RUS
https://jsfiddle.net/mLt2j6k2/
Возможно так: 50% от ширины viewport
Вариантов несколько, зависит от нюансов
Ответ написан
Комментировать
@tommy_13
background-position: center center;
Ответ написан
@kuzovok
Что-то никто не написал про волшебные единицы vh и vw (процент от высоты и ширины экрана, соответственно).
Задаёте, допустим, height: 80vh; width: 80vw:

При background-size: cover; должно работать. Правда, картинку бг лучше тогда тоже позиционировать, чтобы было более предсказуемо, какая её часть будет показываться.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы