除了 Matyas 他的回答之外,我还稍微修改了他的代码,使其现在可以完全实现。首先,在我解释所有细节之前先看一下演示:
如您所见,我对所有宽度和高度进行了“软编码”,以便将它们overlayDiv
恰好放置在 iFrame 的中间。您可以将宽度和高度更改为overlayDiv
您想要的任何内容,脚本将自动调整开始按钮的位置。
非常重要的是,您的 HTML 中必须具有以下顺序才能使其正常工作:
<div id="vidFrame" class="play">
<iframe id="video" class="youtube-player" type="text/html" width="520" height="330" src="http://www.youtube.com/embed/-PZLM-CmuJ0?wmode=opaque&hd=1&rel=0&autohide=1&showinfo=0&enablejsapi=1" frameborder="0"></iframe>
</div>
<div class="overlayDiv">
<img src="https://www.ameliaconcours.org/UploadedContent/Lamborghini%20Logo_Crest_4C_S.png" alt="facebook" width="90px" />
</div>
不必事先建立width
andheight
的地方,因为它将成为.vidFrame
iFrame
另外,请注意以下细节:
wmode=opaque
是我们给视频的第一个参数(必须是绝对的第一个)
- 我们启用
enablejsapi=1
这样我们可以控制播放(和暂停)视频
我使用的 jQuery 如下:
$.fn.loadOverlay = function() {
$('iframe').each(function(idx, iframe){
var imageHeight = $('.overlayDiv').height();
var imageWidth = $('.overlayDiv').width();
var marginTop = $('#video').height();
var marginTop = marginTop/2-imageHeight/2;
var marginLeft = $('#video').width();
var marginLeft = marginLeft/2-imageWidth/2;
$('.overlayDiv')
.clone()
.appendTo('body')
.css({
top: marginTop,
left: marginLeft,
}).show();
});
}
请注意,即使它很长,它也会显式计算 iFrame 的中间部分。因此,更短的方法是可能的,但这个方法会让您准确了解正在发生的事情。
现在还有一件事:加载视频时,iFrame 中间yt players
总是有丑陋的红色播放按钮。
有一个小技巧可以让这个按钮消失,即:
function onPlayerReady(event){
//THIS IS THE TRICK THAT YOU MIGH WANT TO REMOVE
player.playVideo();
player.pauseVideo();
}
所以基本上我们播放然后立即暂停视频以使按钮消失。但请注意:这不适用于移动设备。这样做的一个非常大的优势是视频将自动开始buffering
,这对用户来说是一个优势。
此外,jsFiddle 是不言自明的,因此只需通读并尝试理解它。
我希望这回答了你的问题。祝你好运!