将 youtube 视频包裹在响应图像 "frame" 中,使用 LazyYT.js 进行延迟加载

wrap youtube video inside responsive image "frame", using LazyYT.js for lazy-loading

首先这是我当前代码的 fiddle。请点击视频上的 "play" 按钮查看我遇到的问题。

http://jsfiddle.net/Pr3fix/1bc83mhd/1/

我想做什么:

我需要将 YouTube 视频放在笔记本电脑的图像上,这样视频看起来就像 "playing" 在笔记本电脑屏幕上。这需要响应,因此在调整浏览器大小时,video/laptop 会正确缩放。

我还需要使用 LazyYT.js,一个 jQuery 插件,它只加载视频的缩略图,直到用户点击它,然后加载整个 iframe。

什么不起作用:

一旦 iframe 出现在屏幕上,我的代码就会执行我想要的操作(youtube 视频 很好地放置在屏幕上)。但是,我需要前置 iframe lazyYT 缩略图来做同样的事情。正如您在 fiddle 中看到的那样,在您单击缩略图(加载 iframe)之前它不会正确显示,然后一切正常。

问题:

如何让 LazyYT.js 以与当前显示 iframe 相同的方式显示我的缩略图?

代码:(注意:使用jQuery + Zurb Foundation + SASS):

HTML:

<div class="row">
    <div class="small-12 large-12 columns front-page" role="main">
        <div class="row content-section sneakpeek hide-for-small-only">
            <div class="section-title">
                 <h2>ASC Online Sneak Peek</h2>

            </div>
            <!-- .section-title -->
            <div class="row vidrow">
                <div class="medium-12 columns">
                    <div class="vidwrapper">
                        <div class="framewrapper">
                            <div class="lazyYT" data-youtube-id="5DHYe4dhjXw">loading...</div>
                        </div>
                    </div>
                </div>
            </div>
            <!-- .row -->
        </div>
        <!-- .content-section -->
    </div>
</div>

SASS:

.front-page .content-section.sneakpeek {

  padding: 1rem 3rem 3rem 3rem;

  .vidrow {
    position: relative;
    bottom: 3rem;
  }

  .vidwrapper {
    width: 100%;
    height: 100%;
    max-width: 1034px;
    max-height: 543px;
    margin: 0 auto;

    .framewrapper {
      position: relative;
      padding-top: 25px;
      padding-bottom: 67.5%;
      height: 0;

      .lazyYT-container {
        background: transparent;
        position: initial;
      }
      iframe {
        box-sizing: border-box;
        background: url('http://i.imgur.com/vq812Tr.png') center center no-repeat;
        background-size: contain;
        padding: 11.9% 15.5% 14.8%;
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
      }
    }
  }
} // .front-page .content-section.sneakpeek

JS:

jQuery('.lazyYT').lazyYT();

您需要将 backgroundbackground-sizepadding 属性从 iframe 移动到 .vidwrapper,这样即使视频尚未显示,这些属性也适用。参见 this jsfiddle

更新:这应该可以正常工作:http://jsfiddle.net/eyx8yvLz/1/。视频的宽高比不适合背景,所以我不得不稍微调整一下。