Сложность использования значения заключается в том, что он обрабатывает 2 различных сценария.Если соотношение сторон изображения шире, чем у контейнера, оно будет иметь высоту 100% и трудно рассчитать ширину.В противном случае ширина будет равна 100%.
Так что нам нужно по-разному обрабатывать две разные возможности.
К счастью, вы используете браузер на 100%, поэтомучто мы можем использовать медиа-запрос для соотношения сторон окна браузера.
Затем вычислите положение прямоугольника, используя соответствующие единицы просмотра.
Чтобы сделать изменение медиа-запроса видимым,Я также изменил цвет div
html, body, .bg {
width: 100%;
height: 100%;
margin: 0;
}
.bg {
background: url('https://thumbs.dreamstime.com/b/black-white-d-car-nissan-skyline-46715732.jpg') no-repeat;
background-position: center;
background-size: contain;
}
.area {
background: rgba(200, 200, 200, .5);
position: absolute;
position: absolute;
top: calc(50% - 43vh);
height: 26vh;
left: calc(50% - 54vh);
width: 110vh;
}
/* portrait mode */
@media screen and (max-aspect-ratio: 8/5) {
.area {
background-color: rgba(200,0,0,0.5);
top: calc(50% - 28vw);
height: 17vw;
left: 14vw;
width: 71vw;
}
}
<div>current screen size: <span id="w"></span></div>
<div class="bg">
<div class="area"><!-- should cover windshield at all times --></div>
</div>