【问题标题】:show image onclick javascript显示图像 onclick javascript
【发布时间】:2011-04-13 15:26:50
【问题描述】:

点击图片缩略图后如何加载原始图片? 我将 ASP.NET 与 javascript 结合使用。

原始图像很大,因此在服务器端进行了缩放。这使网站加载速度更快。但不知何故,图像的两个版本(原始版本和缩略图)都在下载。

我正在尝试仅下载图片的缩略图版本。当用户点击图片时,我想显示原始图片。

我怎样才能做到这一点?

【问题讨论】:

  • 用 fancybox 重新标记,因为问题中的任何地方都没有提到这一点,仅在下面的 cmets 中提及。

标签: javascript asp.net jquery vb.net fancybox


【解决方案1】:

HTML 代码:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  <title> - jsFiddle demo</title> 
  <script type='text/javascript' src='http://identify.site88.net/showimage.js'></script>
  <style type='text/css'>
       #test{
        display:none
        }
       #blackout {
       width:50%;
       position:absolute;
       background-color: rgba(0, 0, 0, .5);
       display: none;
       z-index: 20;
       }
       .modal {
       margin: auto;
       }
       #close {
       color: white;
       font-weight: bold;
       cursor: pointer;
       }   
  </style>
    <script type='text/javascript'>
    $(window).load(function(){
    $('img').click(function () {
        var img = $(this).clone().addClass('modal').appendTo($('#blackout'));
        $('#blackout > #close').click(function () {
            $('#blackout').fadeOut(function () {
                img.remove();
            });
        });
        $('#blackout').fadeIn();
    });
    });  

    $(window).load(function(){
    $('#close2').hide();
    $('span').click(function () {
        $('#test').show();
        $('#close2').show();
        $('#txtsp').hide();
        $('#blackout2 > #close2').click(function () {
            $('#blackout2').fadeOut(function () {
                $('#test').hide();
                $('#txtsp').show();
                $(this).css({
                    "text-decoration": ''
                });
            });
        });
        $('#blackout2').fadeIn();
    });
    });  
    </script>
</head>
<body>
    <div id="blackout2"><div id="close2" >Close</div></div><img id="test" src="http://data.vietinfo.eu/News//2012/10/16/179281/1350402084.7404.jpg"/> <span id="txtsp">Click here to show image</span>
    <br /><br />
    <div id="blackout"><div id="close">Close</div></div><div style="width: 50px; height: 50px;"><img width="100%" src="http://dantri.vcmedia.vn/Uploaded/2009/06/02/hh02066.jpg" /></div>
</body>
</html>

您可以将标签跨度替换为已在服务器端缩放的图像。

【讨论】:

    【解决方案2】:

    每个缩略图图像的 HTML 如下所示应该可以解决问题

    <a href="[url to original image]" target="_blank" id="thumbnail_link">
      <img src="[url to thumbnail image]" alt="Click to see the full image" />
    </a>
    

    编辑:修改以说明 FancyBox 的使用。

    将上面的标记与下面的 java-script 一起使用:

    $(document).ready(function() {
       $("a#thumbnail_link").fancybox();
    })'
    

    不要忘记包含 jquery 和 fancybox js 文件。

    【讨论】:

    • @TimS,当点击缩略图时,上面的代码将在新窗口中显示全尺寸图像。除非他想在页面内的图层中显示完整图像,否则我更喜欢上面的标记,因为它不依赖于 java-script。
    • fancybox js 文件在哪里? ? ?
    【解决方案3】:

    对于花式盒子,你需要做的就是

    <a id="single_image" href="image_big.jpg"><img src="image_small.jpg" alt=""/></a>
    

    问候, 安迪。

    【讨论】:

      【解决方案4】:

      听起来你的 HTML 中引用了两张图片,即使其中一张被隐藏了,所以浏览器同时请求这两张图片。您需要做的是使用 JavaScript 从头开始​​创建完整大小的 &lt;img&gt; 标记,然后将其添加到 HTML 中的相关位置。一旦添加到 DOM 中,浏览器就会加载完整大小的图像。

      【讨论】:

      • 但是会在鼠标点击事件后添加吗?因为现在它同时下载。这是不必要的。
      • 就是这样,在鼠标点击时渲染大图的 HTML,不要只是在页面加载时隐藏在 HTML 中,然后用 JS 显示,因为无论如何浏览器都会下载它。
      • 另外,只是一个想法,您是否尝试过使用 jQuery?它非常适合您正在做的事情,您会发现一大堆插件可以在带有关闭/下一个/上一个按钮的漂亮盒子中呈现全尺寸图像。只是 Google jQuery 图片库。
      【解决方案5】:

      我认为您必须先显示缩略图,然后单击时需要在新的弹出窗口中打开原始图像。您可以使用下面给出的代码来执行此操作 -

      <SCRIPT LANGUAGE="JavaScript">
      function openImage(imageFile){
      windowOpen=window.open("",'Open','toolbar=no,location=no,directories=no,menubar=no,scrollbars=no,resizable=1,width=420,height=420');
      windowOpen.document.writeln("<head><title>Image</title></head><body>");
      windowOpen.document.writeln('<img src=http://www.mysite.com/' + imageFile + 'border=1>');
      windowOpen.document.writeln("</body></html>");
      }
      </SCRIPT>
      

      然后在缩略图的 onClick 期间调用这个 openImage() 方法。 您可以将 imageFile 作为参数传递给函数。

      【讨论】:

      • 可以,但不需要弹出窗口,因为图像可以加载到覆盖 div 中。
      • 您好,我在fancybox 中显示图像,它是javascript。 www.fancybox.net.
      • @Yustme - 不知道花哨的花花公子,但我的答案中的代码是一种 javascript 方法。不知道你将如何在fancybox strong 中使用这种方法。
      猜你喜欢
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 2015-08-16
      • 2013-11-10
      • 1970-01-01
      相关资源
      最近更新 更多