52

我在 div 中有一个 HTML 5 视频。然后我有一个自定义播放按钮 - 效果很好。
而且我将视频的可见性设置为在加载时隐藏并在单击播放按钮时可见,当再次单击播放按钮时如何将其恢复为隐藏状态?

function showVid() {
  document.getElementById('video-over').style.visibility = 'visible';
}
#video-over {
  visibility: hidden;
  background-color: rgba(0, 0, 0, .7)
}
<div id="video-over">
  <video class="home-banner" id="video" controls="">
    <source src="http://video-js.zencoder.com/oceans-clip.mp4" type='video/mp4' />
    <source src="http://video-js.zencoder.com/oceans-clip.webm" type='video/webm' />
    <source src="http://video-js.zencoder.com/oceans-clip.ogv" type='video/ogg' />
    </video>
</div>

<button type="button" id="play-pause" onclick="showVid();">
      <img class="img-home-apply" src="/wp-content/images/apply-pic.png" alt="Apply Now">
      </button>

我基本上只是想在可见和隐藏两种状态之间切换它,除非我不能使用切换,因为那个显示并隐藏了 div。我需要它,只是隐藏起来,所以它保持正确的高度。

4

7 回答 7

82

使用 jQuery:

$('#play-pause').click(function(){
  if ( $('#video-over').css('visibility') == 'hidden' )
    $('#video-over').css('visibility','visible');
  else
    $('#video-over').css('visibility','hidden');
});
于 2013-08-05T04:52:50.493 回答
34

根据 jQuery 文档,toggle()不带参数调用将切换可见性。

$('#play-pause').click(function(){
   $('#video-over').toggle();
});

http://jsfiddle.net/Q47ya/

于 2014-02-17T20:57:08.493 回答
2

还有另一种仅使用 JavaScript 的方法。您所要做的就是根据 DIV 在 CSS 中的可见性的当前状态切换可见性。

例子:

function toggleVideo() {
     var e = document.getElementById('video-over');

     if(e.style.visibility == 'visible') {
          e.style.visibility = 'hidden';
     } else if(e.style.visibility == 'hidden') {
          e.style.visibility = 'visible';
     }
}
于 2017-04-02T05:32:34.950 回答
1

要稍微清理一下并维护一行代码(就像使用 a 一样toggle()),您可以使用三元运算符,这样您的代码最终看起来像这样(也使用 jQuery):

$('#video-over').css('visibility', $('#video-over').css('visibility') == 'hidden' ? 'visible' : 'hidden');
于 2019-02-18T01:38:22.137 回答
0

要使用 $.fadeIn() 和 $.fadeOut() 之类的效果,您可以使用过渡

.visible {
  visibility: visible;
  opacity: 1;
  transition: opacity 1s linear;
}
.hidden {
  visibility: hidden;
  opacity: 0;
  transition: visibility 0s 1s, opacity 1s linear;
}
于 2019-05-11T02:06:54.057 回答
0

如果您像这样检查可见性会更好: if($('#video-over').is(':visible'))

于 2020-09-24T14:29:43.740 回答
0
$.fn.toggleVisibility = function (state) {
    return this.each(function () {
        $(this).css("visibility", state ? "visible" :
            (state === false ? "hidden" :
                $(this).css("visibility") === "hidden" ? "visible" : "hidden"));
    });
};

然后

$('#video-over').toggleVisibility();

或者

$('#video-over').toggleVisibility(true);

或者

$('#video-over').toggleVisibility(false);
于 2022-01-04T08:55:35.297 回答