繁体   English   中英

切换 div 的可见性属性

[英]Toggle visibility property of div

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

使用jQuery:

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

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

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

http://jsfiddle.net/Q47ya/

还有另一种方法可以只用 JavaScript 做到这一点。 您所要做的就是根据 CSS 中 DIV 可见性的当前状态切换可见性。

例子:

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';
     }
}

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

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

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

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

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

$.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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM