jquery - 如何在 jQuery 中放大缩略图中的图像?

标签 jquery css ajax image

在我的网站上有一个小缩略图列表(“t1.jpg”、“t2.jpg”、“t3.jpg”...),我想创建在居中对话框中显示的代码图像的全尺寸版本。如何做到这一点?

例如,当我单击 t1.jpg 时,我想在中心框中看到一个 big1.jpg 图像。动态地。我不想在加载页面时加载所有图像。这一定是良好的性能。

有人可以给我一些建议吗?谢谢。

最佳答案

这是一个非常简单的方法 - Darkbox Gallery 的简化版本:

基本上,您将大图像 src 存储在 data-pop 属性中。
单击此类 data-pop 元素时会调用弹出窗口。
CSS 非常简单,甚至 jQuery 也不应该太复杂 - 除了计算当前窗口大小以定义弹出窗口的背景图像应该是 CSS3 contain 还是 auto - 其中“auto”用于较小的图像(因此它们不会缩放):

/* POP BOX */
;(function() {

  var $pop = $("#pop");

  $(document).on("click", "[data-pop]", function() {

    var popSrc= $(this).data("pop"),
        docW= Math.max(document.documentElement.clientWidth, window.innerWidth || 0),
        docH= Math.max(document.documentElement.clientHeight, window.innerHeight || 0);

    $pop.addClass("visible loading").css({backgroundImage:"none"});

    $("<img/>").on("load", function() {
      var bigger = (this.width > docW || this.height > docH)
      $pop.removeClass("loading").css({
        backgroundSize: bigger ? "contain" : "auto",
        backgroundImage: "url(" + this.src + ")"
      });
    }).attr("src", popSrc);

  });

  $("#popClose").on("click", function() {
    $pop.removeClass("visible loading");
  });

}());
/* 
POP BOX 
*/
#pop {
  position: fixed;
  z-index: 999999;
  color: #fff;
  background: rgba(0, 0, 0, 0.6) none no-repeat 50% 50%;
  box-shadow: 0 0 0 24px rgba(0, 0, 0, 0.6);
  left: 24px;
  top: 24px;
  right: 24px;
  bottom: 24px;
  transition: 0.3s;
  visibility: hidden;
  opacity: 0;
}

#pop.loading:after {
  content: "Loading...";
  position: absolute;
  top: 50%;
  left: 44%;
}

#pop.visible {
  visibility: visible;
  opacity: 1;
}

#popClose {
  cursor: pointer;
  position: absolute;
  top: 0px;
  right: 0px;
  font-size: 2em;
}
<!-- POP BOX -->
<div id="pop"><a id="popClose">&times;</a></div>

<!-- USE EXAMPLE -->
<img src="http://placehold.it/50x50/0bf" data-pop="http://placehold.it/860x590/0bf" alt="" />
<img src="http://placehold.it/50x50/f0b" data-pop="http://placehold.it/590x860/f0b" alt="" />



<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

关于jquery - 如何在 jQuery 中放大缩略图中的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13575061/

相关文章:

jquery - 'touchend' 在滚动屏幕时触发

javascript - 模态弹出窗口在 jquery 中不起作用

javascript - 尝试按顺序运行 javascript AJAX 调用

javascript - Firefox 中与 JavaScript 事件相关的 F5 和 Ctrl-F5 有什么区别?

javascript - 如何为数组中的每个对象添加 fadeIn() 方法

javascript - 如果刷新页面,Jquery 选择菜单选项会失败吗?

javascript - 在 Azure Media Player 上插入按钮

html - 如何使用 CSS 删除标记后出现在引号中的文本?

css - 使用CSS在div上保持纵向纵横比

javascript - 如何让 Youtube 视频在页面刷新时继续播放