是否有可能在精美的盒子中动态创建更大的图像?

问题描述 投票:0回答:2

我正在跟踪上一篇文章(Fancy box with one image only),以了解是否可以使用fancybox中的缩略图来动态创建显示的较大图像。我知道你可以使用document.createElement(“IMG”);将较大版本的现有图像添加到文档中,或者您可以使用target.style.width和target.style.height来更改图像的大小并将其指定给不同的ID,但我似乎无法让fancybox访问并使用更大版本的缩略图。每张图片总是需要2种尺寸吗?

这是我一直在使用的代码。它会自己调整图像大小,但它似乎不适用于fancybox。我定义了以下javascript函数,以处理图像:

<script>function magnify() { 
var thumbnail = document.getElementById('image_2');
var target = document.getElementById('image_2_larger');
var w = thumbnail.width;
var h = thumbnail.height;
target.style.width= w*1.5 +'px';
target.style.height= h*1.5 +'px';
</script>   

<body>
<p class="imglist">
<a id="image_2_larger" href="smallImage.jpg" 
onclick="magnify()" data-fancybox> 
<img id="image_2" src="smallImage.jpg"></a></p>
</body>

单击该链接可激活灯箱,但id =“image_2_larger”将以正常大小显示。我已经确认,如果我只是在没有fancybox的情况下执行此操作,javascript将生成更大的图像

<img id="target" src="smallImage.jpg" onclick="magnify()">
<img id="thumbnail" src="smallImage.jpg">
javascript fancybox
2个回答
0
投票

Do you always need 2 sizes for each image? - 任何灯箱脚本的想法是显示调整大小的图像版本以节省带宽,提高页面加载速度等,然后使用脚本以完整大小显示图像,而不强迫用户离开网页。

显然,你不是被迫创建两个版本的图像,你可以这样做 - <a data-fancybox href="big-image.jpg"><img width="200" src="big-image.jpg" /></a>,但这是不切实际的。

但是,如果你想通过使用单个<img>元素启动fancybox(并具有缩放效果),那么请看看这个演示 - https://codepen.io/fancyapps/pen/JzdXxp?editors=1010


0
投票

Janis最后评论中提出的相反策略似乎有效。您可以使用较大的图像并缩小它,而不是尝试使用缩略图并放大它,如此处所示。

<script>
  function shrinkImage() {
    var thumbnail = document.getElementById('image_2');
    var w = thumbnail.width;
    var h = thumbnail.height;
    thumbnail.style.width = w*0.5 +'px';
    thumbnail.style.height = h*0.5 +'px';
    return;
  }
</script>

<body>
  <p class="imglist">
    <a href="largerImage.jpg" data-fancybox>
    <img id="image_2" src="largerImage.jpg" onload="shrinkImage()"></a>
  </p>
</body>
© www.soinside.com 2019 - 2024. All rights reserved.