Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по вёрстке » Видео с youtube сжимается по высоте в сполере, как исправить?

Видео с youtube сжимается по высоте в сполере, как исправить?


     11.04.2025    youtube, спойлер    Общие вопросы по вёрстке, Ламерские вопросы    160

вопрос
Создал доп поле и вставляю в него ID видео с Youtube. Работает, т.е. выводится, но видос сжимается по высоте и это выглядит реально стремно. Пробовал через chatgpt решить, но его решения не срабатывают.
Подскажите как решить, кто-то сталкивался с подобной проблемой?

Видео с youtube сжимается по высоте в сполере, как исправить?


Код вывода в шаблоне:
<!-- Spoiler start -->
<dl><dt class="title_spoiler">
<a href="javascript: void(0);" onclick="var spoiler = this.parentNode.parentNode.getElementsByTagName('dd')[0]; if ( spoiler.style.display == 'none' ) { spoiler.style.display = 'block';} else { spoiler.style.display = 'none';};">
Видео обзор - Показать/Скрыть</a> </dt>
<dd class="text_spoiler" style="display: none;">
[xfgiven_video]<iframe width="560" height="315" src="//www.youtube.com/embed/[xfvalue_video]" frameborder="0" allowfullscreen></iframe>[/xfgiven_video]</dd></dl>
<br>
<!-- Spoiler end -->

Стили:
.title_spoiler {
    color: #636363;
    background-color: #f2f2f2;
    border: 1px solid #bebebe;
    font-weight: bold;
    padding: 5px;
}

.text_spoiler {
  border: 1px solid #bebebe;
  padding: 10px;
  text-align: center; /* <<< Это центрирует iframe */
}

.text_spoiler iframe {
  max-width: 100%;
  height: auto;
  display: inline-block; /* для корректного центрирования */
}


Дополнительно подгружаю скрипт сполера в main.tpl перед :
function toggleSpoiler(element) {
  var spoiler = element.parentNode.parentNode.getElementsByTagName('dd')[0];
  if (spoiler.classList.contains('open')) {
    spoiler.classList.remove('open');
  } else {
    spoiler.classList.add('open');
  }
}

Ответил: TeraMoune


Для iframe установить aspect-ratio: 16 / 9

2 комментария

toasia
Юзер

toasia - 14 апреля 2025 15:29 -

Сработало, но заданное разрешение width="560" height="315" не задается. Просто заполняется все поле https://i.imgur.com/bJrsY5B.png
Но так лучше чем было. Спасибо
Хотя вот так сделал и вообще как надо:
iframe {
  aspect-ratio: 16 / 9;
  width: 560;
  height: auto;
}

TeraMoune
Эксперт

TeraMoune - 14 апреля 2025 18:23 -

Должно задаваться, как раз ютуб устанавливает размеры согласно соотношению сторон 16\9. И устанавливая aspect-ratio параметр height становится auto по умолчанию если не задано обратного. Оно можно и вовсе убрать все оставив только width в html и aspect-ratio в css, а всё остальное убрать.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх