javascript - 为在外部单击时关闭的图库图像创建预览效果

标签 javascript jquery html css

我正在制作一个预览框,当您单击图库图像时会弹出该预览框,并且需要在您单击其外部时使其消失。我找到了很多解决方案,但没有一个适用于我的代码。我认为问题是我可能需要一个 while 循环,但我尝试了几个条件,但都是无限的。

这是我尝试的最后一个解决方案。预览有效,但我无法在单击退出时将其关闭。

DEMO

$('.portPic').click(function() {
  if ($(this).attr('data-src2')) {
    $('#clickedImg').attr('src', $(this).attr('data-src2'));
  } else {
    $('#clickedImg').attr('src', $(this).attr('src'));
  }
  $('#clickedImg').css('visibility', 'visible');
  $('#clickedImg').blur(function() {
    $('#clickedImg').css('visibility', 'hidden');
  });
});

最佳答案

我用弹出菜单做了类似的事情,用户点击“关闭”菜单然后关闭。这里也可以应用同样的方法。

我使用了一个覆盖整个屏幕的覆盖 div(具有半透明的不透明度 - 可能是 0.6 黑色或类似的颜色;或者任何你想要的颜色),它提供了一个很好的模态效果。给它一个 id - 让我们说 modal-overlay

您可以在页面代码中将其设置为静态,并将 display 设置为 none 并使其成为页面的完整尺寸(通过 CSS 类)。

<div id="modal-overlay" class="full-screen-overlay"></div>

将叠加层的 z-index 设置为高于页面的其余部分,并将弹出窗口的 z-index 设置为高于叠加层。然后,当您显示弹出窗口时,也将 modal-overlay 的可见性也设置为可见。

在您的脚本代码中,为单击模态 div 时放置一个事件处理程序:

$('#modal-overlay').click(function() {
        $('#clickedImg').hide();
        $('#modal-overlay').hide();
    })

我还会使用 .hide() jQuery 方法,这比键入可见性更容易。

更好的是,如果你有超过 1 件事正在进行(你会用模态覆盖),将弹出窗口的“显示/隐藏”包装在 hidePopup()closePopup() 方法并调用 onClick 以节省重复使用的代码。

对于打开弹出窗口/叠加层时的效果,您还可以使用 jQuery 动画,例如 .fadeIn().slideDown()。使用 fadeOut 和 slideUp 隐藏。

这些动画还执行显示/隐藏,因此您不需要调用 .hide().show()

查看 this link到 jQuery 的动画 API 文档。非常有用,值得一读。

希望这对您有所帮助!

关于javascript - 为在外部单击时关闭的图库图像创建预览效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36995503/

相关文章:

javascript - 如何在 AMP html 网站中获取 Medium 博客文章?

jquery - 在多个 div 中加载外部 HTML

javascript - 使用 JQuery 和 ASP.NET TextBox 控件来切换焦点

javascript - Angular 的 Http 请求服务抛出错误

javascript - 如何正确扩展 React Bootstrap 组件?

javascript - 我可以获得原始推荐网站的网址推荐吗?

jquery - FancyBox 2 未在视口(viewport) Firefox 中居中

javascript - 使用 jQuery DataTables 时如何获取 <tr> 的 id?

javascript - 使用 JavaScript 执行 POST 请求

javascript - 在另一个定时器停止后启动定时器