我只需要为一个项目执行此操作,在该项目中,我有一个嵌入的 youtube 视频,该视频位于背景图像顶部的页面上,该背景图像设置为显示 100vh x 100vh 减去标题和 Stickynav 栏的一点空间。重要的是,youtube 视频不仅可以缩放,而且要与图像底部保持精确的 30 像素边距。
因此,我在页面加载时设置了相对于窗口大小的背景图像的大小,并在 onYouTubeIframeAPIReady 函数中定义了 iframe 的尺寸,该函数仅在加载框架后才由 Youtube API 调用。我在窗口调整大小上也有相同的功能,因此如果您调整浏览器窗口的大小,它会流畅地缩放。
由于垂直边距是一个重要问题,我从高度开始,根据背景图像的高度减去边距所需的空间来设置 iframe 的高度。然后,我通过将高度除以 9 并乘以 16 手动计算宽度的 16:9 纵横比。
$( document ).ready(function() {
var content = $('#hero');
var contentH = $(window).height() - 158;
var contentW = $(window).width();
content.css('height',contentH);
} );
$(window).resize(function() {
var content = $('#hero');
var iframe = $('.videoWrapper iframe');
var contentH = $(window).height() - 158;
var iframeH = contentH - 150;
content.css('height',contentH);
iframe.css('height',iframeH);
var iframeW = iframeH/9 * 16;
iframe.css('width',iframeW);
var margin = ($(window).width() - iframeW) / 2;
$('.videoWrapper').style.marginLeft = margin;
} );
<div id="hero">
<div class="container">
<div class="row-fluid">
<hgroup class="span12 text-center" role="heading">
<h1></h1>
<h2></h2>
</hgroup>
<script src="https://www.youtube.com/iframe_api"></script>
<center>
<div class="videoWrapper">
<div id="player"></div>
</div>
</center>
<script>
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
videoId:'xxxxxxxxx',playerVars: {
controls:0,enablejsapi:1,iv_load_policy:3
}
} );
var content = $('#hero');
var iframe = $('.videoWrapper iframe');
var contentH = $(window).height() - 158;
var contentW = $(window).width();
var iframeH = contentH - 150;
iframe.css('height',iframeH);
var iframeW = iframeH/9 * 16;
iframe.css('width',iframeW);
}
</script>
</div>
</div>
</div>