在第二次播放时,YouTube视频出现在错误的位置

时间:2017-02-02 21:51:20

标签: javascript jquery css video youtube

我在刚创建的新网站上遇到了一个奇怪的问题(http://segarsmedia.com/motor-city-rising/)。问题是,当您第一次访问它时,您会看到来自YouTube的视频中的大型播放按钮和海报图片。点击它,一个div超过该点,并有一个关闭按钮。到目前为止,非常好。

但是,如果您单击关闭按钮,然后尝试再次播放视频,则视频会显示并开始播放,但它现在显示在海报图像和播放按钮下方,大约是1/5原始尺寸。它似乎现在正在其外面播放。预定的容器虽然在检查员时,代码似乎没有显示出来。它似乎也没有添加任何其他内联样式。

显然,我希望视频显示在您点击播放按钮时首次出现的位置。那么为什么会发生这种情况呢?

我在http://codepen.io/anon/pen/NdMqya处有一个笔,这是代码。

HTML

<div class="entry-content">
    <div id="video-mask"></div>
    <a class="vidjmp" id="show" href="#"><div class="play"><img src="http://segarsmedia.com/wp-content/themes/auth-story/img/play.png" alt="play" title="play"></div>
    <img width="1920" height="1080" src="http://segarsmedia.com/wp-content/uploads/2017/01/hero-motor-city-rising.jpg" class="attachment-full size-full wp-post-image" alt="Motor City Rising" srcset="http://segarsmedia.com/wp-content/uploads/2017/01/hero-motor-city-rising.jpg 1920w, http://segarsmedia.com/wp-content/uploads/2017/01/hero-motor-city-rising-300x169.jpg 300w, http://segarsmedia.com/wp-content/uploads/2017/01/hero-motor-city-rising-768x432.jpg 768w, http://segarsmedia.com/wp-content/uploads/2017/01/hero-motor-city-rising-1024x576.jpg 1024w" sizes="(max-width: 1920px) 100vw, 1920px" /></a>
    <div id="video-content" class="video-content">
        <a id="video-close" href="#"><div id="close" class="close">X</div></a>
        <div class="video-container">
            <iframe id="video-iframe" width="" height="" src="http://www.youtube.com/embed/75pCxGDkuNQ" frameborder="0" allowfullscreen></iframe>
        </div>
    </div>
</div><!-- .entry-content -->

CSS

.entry-content:before,
.entry-content:after {
    content: "";
    display: table;
    table-layout: fixed;
}
.entry-content:after, {
    clear: both;
}
.entry-content {
    position: relative;
    display: block;
    margin: 0;
    width: 100%;
}
.play {
    width: 125px;
    height: 125px;
    position: absolute;
    left: 50%;
    top: 50%;
    margin-left: -62.5px;
    margin-top: -62.5px;
    z-index: 205;
 }
#video-content {
   display: none;
   position: absolute;
   top: 0;
   left: 0;
   width: 100%;
   height: 100%;
   z-index: 1000;
}
.video-container {
   position: relative;
   padding-bottom:56.25%;
   padding-top: 0;
   height: 0;
   overflow: hidden;
   width: 100%;
   height: 100%;
 }
.video-container iframe, .video-container object, .video-container embed {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
#close {
  background: #000;
  color: #FFF;
  display: block;
  position: absolute;
  top: 16px;
  left: 24px;
  height: 48px;
  width: 48px;
  border-radius: 24px;
  z-index: 2000;
  font-size: 24px;
  line-height: 1;
  font-weight: 700;
  padding: 14px 16px;
  border-radius: 24px;
  z-index: 2000;
}
@media screen and (max-width: 677px) {
    .play {
        width: 62.5px;
        height: 62.5px;
        margin-left: -31.25px;
        margin-top: -31.25px;
    }
    #close {
        height: 30px;
        border-radius: 15px;
        font-size: 15px;
        padding: 7px 10px;
        width: 30px;
        border-radius: 15px;
    }
}

JS

<script type="text/javascript">
    jQuery(document).ready(function() {
    var iframeSrc = jQuery('#video-iframe').attr("src");    
    jQuery('a.vidjmp').click(function(e) {
    e.preventDefault();
    jQuery('#video-iframe').attr("src", iframeSrc + '?rel=0&amp;autoplay=1&amp;showinfo=0&amp;modestbranding=0');
    jQuery('#video-mask').fadeTo(500,0.9, function(){
    jQuery('#video-content').fadeIn(500, function(){
    jQuery('#video-iframe').show();
  });
});

});

  // Close Modal/Mask    
  jQuery('#video-close, #video-mask').click(function (e) {

    e.preventDefault();

    jQuery('#video-iframe').attr("src", iframeSrc);

    jQuery('#video-mask, #video-content').fadeOut(0, function(){
        var vidCopy = jQuery('#video-iframe').clone();
        jQuery('#video-iframe').detach();
        jQuery(vidCopy).appendTo('#video-content');
    });

  });

});
</script>

1 个答案:

答案 0 :(得分:0)

发现问题。这是一个简单的CSS案例:

#video-iframe {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
}