Похоже, что текущая проблема заключается в том, что padding-bottom
на .framewrap
рассчитывается по ширине содержащего блока. Поскольку .framewrap
также имеет width:45%
, пропорции не соответствуют вашим намерениям.
Значение padding-bottom
должно составлять 45% от 56,25%, например:
.wrap {
text-align: justify;
text-align-last: justify;
}
.imgt,
.framewrap {
display: inline-block;
width: 45%;
}
.framewrap {
position: relative;
background: gold;
overflow: hidden;
height: 0;
padding-bottom: calc(56.25% * .45);
}
.iframetop {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
<div class='wrap'>
<img class='imgt' src='https://static.pexels.com/photos/111788/pexels-photo-111788-large.jpeg' alt='img'>
<div class='framewrap'>
<iframe class='iframetop' src="https://www.youtube.com/embed/N4zVExS5mgg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
</div>
Однако я предлагаю использовать псевдоэлемент из .framewrap
для установки нижнего отступа, так как это значение будет вычислено из ширины .framewrap
.
Вот демонстрация:
.wrap {
text-align: justify;
text-align-last: justify;
}
.imgt,
.framewrap {
display: inline-block;
width: 45%;
}
.framewrap {
position: relative;
background: gold;
overflow: hidden;
}
.framewrap::before {
content: "";
display: block;
padding-bottom: 56.25%;
}
.iframetop {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
<div class='wrap'>
<img class='imgt' src='https://static.pexels.com/photos/111788/pexels-photo-111788-large.jpeg' alt='img'>
<div class='framewrap'>
<iframe class='iframetop' src="https://www.youtube.com/embed/N4zVExS5mgg" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
</div>