У меня есть видео на YouTube, встроенное на нашем веб-сайте, и когда я сжимаю экран до размеров планшета или телефона, он перестает сокращаться шириной около 560 пикселей. Является ли этот стандарт для видео на YouTube или есть что-то, что я могу добавить в код, чтобы он стал меньше?Сократите видео на YouTube до гибкой ширины
ответ
Вы можете сделать видео YouTube отзывчивым с помощью CSS. Заверните IFRAME в DIV с классом «videowrapper» и примените следующие стили:
.videowrapper {
float: none;
clear: both;
width: 100%;
position: relative;
padding-bottom: 56.25%;
padding-top: 25px;
height: 0;
}
.videowrapper iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.videowrapper DIV должен быть внутри отзывчивым элемента. Прокладка на .videowrapper необходима, чтобы видео не рухнуло. Возможно, вам придется настроить номера в зависимости от вашего макета.
Спасибо! Я должен был добавить ширину: 100% к моему #content, чтобы убедиться, что это отзывчивый элемент. – MattM
См. Также: http://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php – Blazemonger
в моем случае видео не появляется при применении этого CSS. – basZero
See full gist here и live example here.
#hero { width:100%;height:100%;background:url('{$img_ps_dir}cms/how-it-works/hero.jpg') no-repeat top center; }
.videoWrapper { position:relative;padding-bottom:56.25%;padding-top:25px;max-width:100%; }
<div id="hero">
<div class="container">
<div class="row-fluid">
<script src="https://www.youtube.com/iframe_api"></script>
<center>
<div class="videoWrapper">
<div id="player"></div>
</div>
</center>
<script>
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
videoId:'xxxxxxxxxxx',playerVars: { controls:0,autoplay:0,disablekb:1,enablejsapi:1,iv_load_policy:3,modestbranding:1,showinfo:0,rel:0,theme:'light' }
});
resizeHeroVideo();
}
</script>
</div>
</div>
</div>
var player = null;
$(document).ready(function() {
resizeHeroVideo();
});
$(window).resize(function() {
resizeHeroVideo();
});
function resizeHeroVideo() {
var content = $('#hero');
var contentH = viewportSize.getHeight();
contentH -= 158;
content.css('height',contentH);
if(player != null) {
var iframe = $('.videoWrapper iframe');
var iframeH = contentH - 150;
if (isMobile) {
iframeH = 163;
}
iframe.css('height',iframeH);
var iframeW = iframeH/9 * 16;
iframe.css('width',iframeW);
}
}
resizeHeroVideo вызывается только после того, как игрок Youtube полностью загружена (на странице загрузки не работает), и всякий раз, когда окно браузера изменяется. Когда он запускается, он вычисляет высоту и ширину iframe и присваивает соответствующие значения, поддерживающие правильное соотношение сторон. Это работает независимо от того, изменяется ли окно горизонтально или вертикально.
Я использовал CSS в принятом ответе здесь для своих отзывчивых видеороликов YouTube - отлично работал до тех пор, пока YouTube не обновил свою систему в начале августа 2015 года. Видео на YouTube - это те же размеры, но по какой-либо причине CSS в принятый ответ теперь содержит почтовые ящики всех наших видеороликов. Черные полосы сверху и снизу.
Я поместил вокруг размеров и остановился на том, чтобы избавиться от верхней прокладки и изменить нижнюю прокладку на 56.45%
. Кажется хорошо выглядеть.
.videowrapper {
position: relative;
padding-bottom: 56.45%;
height: 0;
}
Спасибо @McNab, можете подтвердить работу Август 2015 – ptimson
Просто обновление по этому поводу - иногда старые образы заметок, используемые в видео, заставляют его выглядеть, как будто все еще черные полосы сверху и снизу, но сами видео выглядят хорошо с этой новой настройкой, когда вы на самом деле начинают их играть. Grrr, спасибо YouTube. – McNab
Спасибо. Использование padding-bottom: 50% избавляются от верхних и нижних черных полос для видео, которое я использую, хотя кажется, что миниатюра и видео сами имеют несоответствующие пропорции ... – MSC
Это старая нить, но я найти новый ответ на https://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php
Проблемы с предыдущим решением является то, что вам нужно иметь специальный DIV вокруг видео код, который не подходит для большинства применений. Итак, вот решение JavaScript без специального div.
// Find all YouTube videos - RESIZE YOUTUBE VIDEOS!!!
var $allVideos = $("iframe[src^='https://www.youtube.com']"),
// The element that is fluid width
$fluidEl = $("body");
// Figure out and save aspect ratio for each video
$allVideos.each(function() {
$(this)
.data('aspectRatio', this.height/this.width)
// and remove the hard coded width/height
.removeAttr('height')
.removeAttr('width');
});
// When the window is resized
$(window).resize(function() {
var newWidth = $fluidEl.width();
// Resize all videos according to their own aspect ratio
$allVideos.each(function() {
var $el = $(this);
$el
.width(newWidth)
.height(newWidth * $el.data('aspectRatio'));
});
// Kick off one resize to fix all videos on page load
}).resize();
// END RESIZE VIDEOS
Уточнено Решение только для Javascript для YouTube и Vimeo с использованием jQuery.
// -- After the document is ready
$(function() {
// Find all YouTube and Vimeo videos
var $allVideos = $("iframe[src*='www.youtube.com'], iframe[src*='player.vimeo.com']");
// Figure out and save aspect ratio for each video
$allVideos.each(function() {
$(this)
.data('aspectRatio', this.height/this.width)
// and remove the hard coded width/height
.removeAttr('height')
.removeAttr('width');
});
// When the window is resized
$(window).resize(function() {
// Resize all videos according to their own aspect ratio
$allVideos.each(function() {
var $el = $(this);
// Get parent width of this video
var newWidth = $el.parent().width();
$el
.width(newWidth)
.height(newWidth * $el.data('aspectRatio'));
});
// Kick off one resize to fix all videos on page load
}).resize();
});
Простой в использовании только врезать:
<iframe width="16" height="9" src="https://www.youtube.com/embed/wH7k5CFp4hI" frameborder="0" allowfullscreen></iframe>
Или с отзывчивым рамках стиля, как Bootstrap.
<div class="row">
<div class="col-sm-6">
Stroke Awareness
<div class="col-sm-6>
<iframe width="16" height="9" src="https://www.youtube.com/embed/wH7k5CFp4hI" frameborder="0" allowfullscreen></iframe>
</div>
</div>
- Полагается по ширине и высоте фрейма, чтобы сохранить соотношение сторон
- Можно использовать соотношение сторон по ширине и высоте (
width="16" height="9"
) - Ждут, пока документ не будет готов до изменения размера
- Использует JQuery подстроки
*=
селектор вместо начала строки^=
- Получает ширину ссылки с видеопамяти iframe вместо предопределенного элемента
- Javascript решение
- Нет CSS
- Нет обертка не требуется
Благодаря @Dampas для начальной точки. https://stackoverflow.com/a/33354009/1011746
Работает отлично! Большое вам спасибо :) –
Это помогает. Особенно в тех случаях, когда вы не контролируете элементы HTML (но JS) и не можете установить видеопоток. Спасибо. –
Обратите внимание, что это решение свяжет событие изменения размера с функцией JavaScript, что может усилить внимание браузера при добавлении большего количества событий. Помните, что вы можете использовать JavaScript, чтобы обернуть iframe в div-оболочку, чтобы CSS обрабатывал отзывчивый стиль и повышал производительность. – railgun
Решение @ magi182 является прочным, но ему не хватает возможности устанавливать максимальную ширину. Я думаю, что максимальная ширина 640px необходима, потому что otherwhise миниатюра youtube выглядит pixelated.
Мое решение с двумя обертками работает как шарм для меня:
.videoWrapperOuter {
max-width:640px;
margin-left:auto;
margin-right:auto;
}
.videoWrapperInner {
float: none;
clear: both;
width: 100%;
position: relative;
padding-bottom: 50%;
padding-top: 25px;
height: 0;
}
.videoWrapperInner iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
<div class="videoWrapperOuter">
<div class="videoWrapperInner">
<iframe src="//www.youtube.com/embed/C6-TWRn0k4I"
frameborder="0" allowfullscreen></iframe>
</div>
</div>
Я также установить отступ-дно во внутренней обертки 50%, потому что с @ magi182 56%, черная полоса сверху и внизу.
Это работало лучше для меня, чтобы внедрить отзывчивое видео, но укажите ширину (максимальную ширину). – yougotiger
Если вы используете Bootstrap, вы также можете использовать отзывчивое вложение. Это полностью автоматизирует процесс реагирования видео (ов).
http://getbootstrap.com/components/#responsive-embed
Там пример кода ниже.
<!-- 16:9 aspect ratio -->
<div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" src="..."></iframe>
</div>
<!-- 4:3 aspect ratio -->
<div class="embed-responsive embed-responsive-4by3">
<iframe class="embed-responsive-item" src="..."></iframe>
</div>
Хорошо, похоже, большие решения.
Почему бы не добавить width: 100%;
прямо в ваш iframe. ;)
Так что ваш код будет выглядеть примерно так <iframe style="width: 100%;" ...></iframe>
Попробуйте это, он будет работать, как он работал в моем случае.
Наслаждайтесь! :)
Поскольку это не изменяет размер высоты для видео и поэтому отображает элементы управления и черные полосы, принятый ответ является лучшим решением. –
Поскольку это отправная точка для создания видеороликов со встроенными фреймами, я считаю, что это решение правильно отвечает вопрос. Объедините это с сеткой, и высота останется единственной проблемой. => (ширина контейнера/12) * 9 = высота. –
Я делаю это с помощью простого CSS следующим
HTML КОД
<iframe id="vid" src="https://www.youtube.com/embed/RuD7Se9jMag" frameborder="0" allowfullscreen></iframe>
CSS КОД
<style type="text/css">
#vid {
max-width: 100%;
height: auto;
}
- 1. Добавить видео на YouTube до
- 2. Горизонтальное подменю гибкой ширины
- 3. CSS: Моделирование гибкой ширины (без минимальной ширины) -
- 4. Как программно масштабировать UIImageView до фиксированной ширины и гибкой высоты?
- 5. отправить видео на youtube
- 6. Сократите это значение до функции
- 7. Сократите строку до названия продукта
- 8. Отношение высоты видео на YouTube, растягивание до ширины окна и растяжение за пределами родительского контейнера
- 9. Настройка высоты/ширины видео до фактического размера
- 10. Видео Youtube на JFrame?
- 11. Встраивание видео на YouTube?
- 12. Скрытие видео на YouTube
- 13. Загрузить видео на YouTube
- 14. Youtube: Встроенное видео сжато
- 15. Автовоспроизведение видео Youtube при прокрутке до
- 16. YouTube API - реклама на видео
- 17. Продолжительность видео Youtube до модели Django
- 18. Выберите видео YouTube на Android?
- 19. Как преобразовать макет фиксированной ширины в макет гибкой ширины?
- 20. Загрузить видео Youtube успешно, но нет видео на канале youtube
- 21. Вставить видео до основного видео с API YouTube
- 22. Изменение ширины гибкой коробки с проблемой javascript
- 23. Правильно обрезать элементы гибкой коробки фиксированной ширины
- 24. ios AutoLayout проблема для гибкой ширины?
- 25. Margin до того элемента с гибкой шириной
- 26. Автоматическая высота при встраивании видео на YouTube?
- 27. Notepad ++ Сократите этот список до только фамилий
- 28. Java 8 сократите список до связанного списка
- 29. Вставить видео на YouTube Playlist
- 30. Вставить видео на YouTube HTML5
Хороший ресурс для создания вашего отзывчивый код: HTTP: //embedresponsively.com/ – ThisClark