单击叠加图像以启动视频后,阻止页面移至顶部

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单击叠加图像以启动视频后,阻止页面移至顶部相关的知识,希望对你有一定的参考价值。

我有一些代码可以在点击叠加图像后自动启动视频。麻烦的是,点击后,整个页面向上移动到顶部,而视频在页面下方播放。原因是什么?如何防止这种情况发生并允许视频在最初点击的位置播放?

这是一个指向codepen的链接(向下滚动以查看视频):https://codepen.io/NewbCake/pen/qMMQZo

这取决于Jquery和Fitvids

感谢您的任何帮助!

html

<section>
  <div class="video-intro">
    <div class="image">
      <div class="play-button btn"></div>
      <a href="#" id="btn_play" class="btn">
        <img src="http://placekitten.com/960/540" alt="play video" />    
      </a>
    </div>
    <iframe src="https://player.vimeo.com/video/66991893?api=1&title=0&amp;byline=0&amp;portrait=0&amp;color=57c0d4" width="960" height="540" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
  </div>
</section>

CSS

section {
  display:grid;
  grid-template-columns:10vw 500px;
  margin-top:300px;
}

/* video intro */
.video-intro {
  grid-column: 2 ;
  box-shadow:0px 0px 7px #ddd;
  margin:0 auto 50px !important;
  width:90%;
  position:relative;
  max-width:960px;

.image {
  position:absolute;
  top:0;
  left:0;
  z-index:20;

img {
  width:100%;
  height:auto;
}

JS

$(function(){
  var $parent = $('.video-intro'),
  $f = $parent.find('iframe'),
  $image = $parent.find('.image'),
  f = $f[0],
  url = $f.attr('src').split('?')[0];

  window.addEventListener('message', function(e){
    var d = JSON.parse(e.data);
  }, false);

  $('.btn').click(function(){
    var $t = $(this);
    runCommand('play');
    $image.hide();
  });

  function runCommand(cmd){
    var data = {method : cmd};
    f.contentWindow.postMessage(JSON.stringify(data), url);
  }

  // fitvids
  $('.video-intro').fitVids();

});
答案

尝试使用javascript:而不是#

<a href="javascript:" id="btn_play" class="btn">

以上是关于单击叠加图像以启动视频后,阻止页面移至顶部的主要内容,如果未能解决你的问题,请参考以下文章

如何使背景图像顶部的透明背景颜色移至底部?

移至顶部功能在 kineticJs 中不起作用 [关闭]

SwiftUI - 为啥 contentShape 会阻止单击叠加层?

单击图像后如何播放/启动 youtube 视频?

在 Activity 内部,如何暂停 for 循环以调用片段,然后在按钮单击片段后恢复循环以重新开始

您可以单击的图像叠加层[重复]