切换div的可见性属性

时间:2013-08-05 04:50:10

标签: javascript jquery css toggle show-hide

我在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。我需要它,只是隐藏,所以它保持正确的高度。

6 个答案:

答案 0 :(得分:67)

使用jQuery:

$('#play-pause').click(function(){
  if ( $('#video-over').css('visibility') == 'hidden' )
    $('#video-over').css('visibility','visible');
  else
    $('#video-over').css('visibility','hidden');
});

答案 1 :(得分:24)

我知道这是一个老问题,但我遇到它研究一个不同的问题。

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

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

http://jsfiddle.net/Q47ya/

答案 2 :(得分: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';
     }
}

答案 3 :(得分:0)

要清理一点并维护一行代码(就像使用toggle()一样),可以使用ternary operator,这样您的代码就会像这样(也可以使用jQuery):

$('#video-over').css('visibility', $('#video-over').css('visibility') == 'hidden' ? 'visible' : 'hidden');

答案 4 :(得分:0)

要实现与$ .fadeIn()和$ .fadeOut()类似的效果,可以使用过渡

.visible {
  visibility: visible;
  opacity: 1;
  transition: opacity 1s linear;
}
.hidden {
  visibility: hidden;
  opacity: 0;
  transition: visibility 0s 1s, opacity 1s linear;
}

答案 5 :(得分:0)

最好像这样检查可见性: if($('#video-over').is(':visible'))

相关问题