Итак, вот решение, которое я придумаю с помощью JavaScript. Проблема, которую мы имеем здесь, состоит в том, что высота не может быть определена без знания ширины, и поскольку ширина является динамической c, нет способа жестко кодировать высоту.
Мы можем получить ширину элемента, используя JavaScript, с его помощью мы можем рассчитать высоту, используя соотношение сторон 16: 9 для стандартного видео. Конечно, вы можете изменить соотношение сторон на другое, но обычно видео YouTube имеет соотношение сторон 16: 9.
Этот код сделает IFRAME полной шириной в соответствии с его контейнером. Это означает, что если тело 100px, а контейнер 80px, если iframe находится в контейнере, ширина будет 80px. Из контейнера не выйдет и не испортит адаптивный дизайн.
Этот код будет изменять размер iframe при каждой загрузке или изменении размера страницы, гарантируя, что он всегда поддерживает формат 16: 9. соотношение сторон. Большинство людей могут использовать телефон, чтобы просмотреть его и убедиться, что его размер изменяется при перемещении телефона из вертикального в горизонтальное положение.
Вот как это сделать:
window.addEventListener("load", playerSizer); /* Resize on load */
window.addEventListener("resize", playerSizer); /* Resize on change in window size */
/* Resize function */
function playerSizer() {
var player = document.getElementById("player"); /* Element ID */
var width = player.offsetWidth; /* Get width */
player.style.height = (width * 0.5625) + "px"; /* Aspect ratio */
}
<center>
<!-- Remember to change your YouTube URL -->
<!-- Note width="100%", this will be used to calculate height -->
<!-- Note id="player", this will be used by JavaScript function -->
<iframe
id="player"
width="100%"
src="YOUR URL"
frameborder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen>
Your browser does not support this, try viewing it on YouTube: YOUR URL
</iframe>
</center>
Вот код, если вы не хотите отделять JavaScript от HTML:
<center>
<iframe id="player" width="100%" src="YOUR URL" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>Your browser does not support this, try viewing it on YouTube: YOUR URL</iframe>
</center>
<script>
window.addEventListener("load", playerSizer);
window.addEventListener("resize", playerSizer);
function playerSizer() {
var player = document.getElementById("player");
var width = player.offsetWidth;
player.style.height = (width * 0.5625) + "px";
}
</script>
Надеюсь, это поможет ?