鼠标滚轮来缩放图片金沙网址

Lightbox改变——补助滚轮缩放,lightbox滚轮缩放

   
在做小说类型的web页时,平日会遇上要点开看大图的供给,LightBox2则是在无数成品中比较优良的一款Jquery插件。配置就不细说了,今新加坡人第一要享用的是:如何在点开大图后,能够经过鼠标滚轮来缩放图片,上面是二个简易的引导:

  1、修改Lightbox源码使扶助滚轮缩放

  2、修改Lightbox源码使图片的源可扶助base64格式

  3、怎么着将Lightbox应用到已某些小说

 

1、修改Lightbox源码使帮忙滚轮缩放

   
帮忙鼠标滚轮第一便是把弹出后的框整个绑定上mousewheel事件,张开lightbox.js,找到Lightbox.prototype.build
= function()
{…}这一段,能够在那边(lightbox开端化的时候)把想要的滚轮事件绑定上去,比方在函数的结尾增添如下代码:

 1       // 图片滚轮缩放
 2       this.img = this.$container.find('.lb-image');
 3       this.label = this.$lightbox.find('.lb-dataContainer');
 4       $([this.$overlay[0],this.$lightbox[0]]).bind("mousewheel", function(e){
 5           var flag= e.originalEvent.wheelDelta < 0; 
 6           var imgH = self.img.height();
 7           var imgW = self.img.width();
 8           var nw = Math.round(20*imgW/imgH);
 9           var ctH = self.$outerContainer.height();
10           var ctW = self.$outerContainer.width();
11           var layH = self.$overlay.height()-20;
12           var layW = self.$overlay.width()-20;
13           // 向下
14           if(flag && imgH>20 && imgW>20) {
15               self.img.css('height', imgH - 20);
16               self.img.css('width', imgW - nw);
17               self.$outerContainer.css('height', ctH - 20);
18               self.$outerContainer.css('width', ctW - nw);
19               if(ctW-nw > 240){
20                   self.label.css('width', ctW - nw);
21               }
22           } else if(!flag && imgH<layH && imgW<layW) {
23               self.img.css('height', imgH + 20);
24               self.img.css('width', imgW + nw);
25               self.$outerContainer.css('height', ctH + 20);
26               self.$outerContainer.css('width', ctW + nw);
27               self.label.css('width', ctW + nw);
28           }  
29           e.stopPropagation();
30           return false;
31       });

   
代码相比较好驾驭,正是给后边背景和后面图片都加多鼠标滚轮监听,然后高、宽成比例地缩放(向上滚放大、向下滚收缩),小编是设定每便中度变化为21个像素,然后宽度是成比例变化。须求专注的地方,应该是在图纸的蝇头降低大小,和图表放大不可能超越显示屏范围的限定。同一时候,为了更加好的体会,必须求抬高e.stopPropagation(),且再次来到false,让浏览器不要滚动。

 

2、修改Lightbox源码使支持Base64图片

   
这里谈到来或许相比较勤奋,先来看一下在选择原生Lightbox时的html代码格式供给:

<a href="img/image.jpg" data-lightbox="test">Image #1</a>

    那是三个最轻便易行的弹出图,当点击Image
#1时,就能弹出一个lightbox展现img/image.jpg的内容(弹出七个因素<img src=”img/image.jpg”
/>)。
   
未来大家来虚构这种情形,假若图片是以Base64编码在服务器是存放在在数据库中的?应该正是这么:

<a href="data:image/png;base64,iVBORw..." data-lightbox="test">Image #1</a>

   
难题来了,href长度在IE下是有限定的,一张大的图样,不恐怕位于href字段中,图片将会被阉割(只突显上半有个别)。

   
别的还或然有一种布满状态,假若笔者是先出示小图,点击小图看大图,应该正是那样:

<a href="data:image/png;base64,iVBORw..." data-lightbox="test">
    <img src="data:image/png;base64,iVBORw..." />
</a>

   
好了,那有两份重复的base64数据,而且都以从服务器端传过来的,耗费时间耗带宽啊。

    所以笔者按本人的供给实行了改变,代码很轻便,修改Lightbox.prototype.start
= function($link) {…} 中的子函数addToAlbum:

    function addToAlbum($link) {
        self.album.push({
          // link: $link.attr('href'),
          link: $link.children().attr("src"),
          title: $link.attr('data-title') || $link.attr('title')
        });
    }

   
注释掉的一些正是本来的,$link是前方HTML代码中的a标签,改过后addToAlbum函数的成效是:在设置弹出图片的src时,不再从原有的的href中取字符作为弹出img标签的src,而是径直从a标签的子成分中找src属性,由于src属性的长短无界定,所以它不会设有图片截断的主题材料。 

 

3、将Lightbox应用到已有个别小说

   
第四节已经讲到了Lightbox使用时HTML有自然的格式,如果已部分小说中的图片是<img
src=”img/image.jpg”>那样的,则必须对其实行一层封装:

1 function initLightbox(){
2     var imgs = $(".lightbox-container").find('img');
3     $.each(imgs,function(i) {
4         var img = $(imgs[i]);
5         img.wrap("<a href='' data-lightbox='test' ></a>");        
6     });
7 }

   
在那之中,“lightbox-container”是小说所在容器的class。initLightbox函数应放置在页面加载ready时,它会把小说中的全部img标签都卷入成为lightbox的格式。

   

   
本文就写到那了,第2、3点我们能够看自个儿的施用景况去行使,lightbox改换的主要性在于滚轮缩放。

    附上更动过的源码lightbox.js。    

    转发请评释原址:                       

 

在做小说类型的web页时,日常会碰到要点开看大图的急需,LightBox2则是在重重出品中相比较优…

相关文章