Не абсурдно, но если вы не получаете желаемого эффекта, это неправильно. Есть много способов реализовать свой баннер, самый простой (я бы подумал):
.banner {
width: 100%;
height: 185px; {/* or whatever */}
object-fit: cover;
}
Или добавление его в качестве фонового изображения и использование «background-size: cover», как предложено Оливер.
Другой возможностью было бы добавить их в качестве фоновых изображений и использовать медиазапросы для загрузки различных изображений. Это позволит вам загружать изображения, которые лучше соответствуют размеру экрана и плотности пикселей (художественное направление), и вы получите лучшее качество в обмен на дополнительную работу. Например:
@media (min-width: 35rem) and (min-resolution: 192dpi) {
.banner {
background-image: url('foo.bar');
}
}
Лично я считаю, что медиа-запросы хороши , когда они вам нужны . Если вы можете выполнять работу с относительными единицами, вы избегаете разбрасываться вокруг кусочков css, которые были бы более удобны для сопровождения.
Теперь я должен сказать, что крутые дети используют другой прием: адаптивные изображения. Приведенные ниже примеры взяты из статьи MDN. В вас html вы можете добавлять различные источники изображения с помощью атрибутов «scrset» и «sizes»:
<img srcset="elva-fairy-480w.jpg 480w,
elva-fairy-800w.jpg 800w"
sizes="(max-width: 600px) 480px,
800px"
src="elva-fairy-800w.jpg" alt="Elva dressed as a fairy">
В этом случае атрибут размеров действует как медиазапрос, помогая браузеру определять и запрашивать наиболее подходящее изображение.
Кроме того, вы можете использовать тег <picture>
с разными источниками, что позволяет использовать медиа, которые лучше всего подходит для пользовательского устройства. Например:
<picture>
<source media="(max-width: 799px)" srcset="elva-480w-close-portrait.jpg">
<source media="(min-width: 800px)" srcset="elva-800w.jpg">
<img src="elva-800w.jpg" alt="Chris standing up holding his daughter Elva">
</picture>
Эти методы адаптивного изображения существуют, потому что изображения в html предварительно загружаются до того, как ваши css, медиа-запросы и URL-адреса фоновых изображений могут срабатывать, поэтому они в основном загружаются быстрее. Тем не менее, это обоснованный факт, что перенос ответственности из CSS в HTML из-за проблем с производительностью противоречит разделению задач, но я позволю вам судить об этом.
И, наконец, о "VH" не работает ... это, безусловно, делает. Но мы не сможем помочь без лучшего описания проблемы.