搜尋
首頁web前端js教程如何讓你的Lightbox支援滾輪縮放及Base64圖片_jquery

在做文章類型的web頁時,常常會遇到要點開看大圖的需求,LightBox2則是在眾多產品中比較優秀的一款Jquery外掛。配置就不細說了,今天我主要要分享的是:如何在點開大圖後,可以用滑鼠滾輪來縮放圖片,

1、修改Lightbox源碼使支援滾輪縮放

    支援滑鼠滾輪主要是把彈出後的框整個綁定上mousewheel事件,打開lightbox.js,找到Lightbox.prototype.build = function() {...}這一段,可以在這裡(lightbox初始化的時候)把想要的滾輪事件綁定上去,例如在函數的末端加上如下程式碼:

複製程式碼 程式碼如下:

       // 圖片滾輪縮放
       this.img = this.$container.find('.lb-image');
       this.label = this.$lightbox.find('.lb-dataContainer');
       $([this.$overlay[0],this.$lightbox[0]]).bind("mousewheel", function(e){
           var flag= e.originalEvent.wheelDelta            var imgH = self.img.height();
           var imgW = self.img.width();
           var nw = Math.round(20*imgW/imgH);
           var ctH = self.$outerContainer.height();
           var ctW = self.$outerContainer.width();
           var layH = self.$overlay.height()-20;
           var layW = self.$overlay.width()-20;
           // 向下
           if(flag && imgH>20 && imgW>20) {
               self.img.css('height', imgH - 20);
               self.img.css('width', imgW - nw);
               self.$outerContainer.css('height', ctH - 20);
               self.$outerContainer.css('width', ctW - nw);
               if(ctW-nw > 240){
                   self.label.css('width', ctW - nw);
               }
           } else if(!flag && imgH                self.img.css('height', imgH 20);
               self.img.css('width', imgW nw);
               self.$outerContainer.css('height', ctH 20);
               self.$outerContainer.css('width', ctW nw);
               self.label.css('width', ctW nw);
           } 
           e.stopPropagation();
           return false;
       });

    程式碼比較好理解,就是給後面背景和前面圖片都加上滑鼠滾輪監聽,然後高、寬成比例地縮放(向上滾放大、向下滾縮小),我是設定每次高度變化為20個像素,然後寬度是比例變化。需要注意的地方,應該是在圖片的最小縮小大小,和圖片放大不能超過螢幕範圍的限制。同時,為了更好的體驗,一定要加上e.stopPropagation(),且返回false,讓瀏覽器不要滾動。

2、修改Lightbox來源碼讓支援Base64圖片

    這裡說來可能比較麻煩,先來看看使用原生Lightbox時的html程式碼格式要求:

複製程式碼 程式碼如下:

    這是一個最簡單的彈出圖,當點擊Image #1時,就會彈出一個lightbox顯示img/image.jpg的內容(彈出一個元素如何讓你的Lightbox支援滾輪縮放及Base64圖片_jquery) 。
    現在我們來考慮這個情況,如果圖片是以Base64編碼在伺服器是存放在資料庫中的?應該是這樣:

複製程式碼 程式碼如下:

    問題來了,href長度在IE下是有限制的,一張大的圖片,不可能放在href字段中,圖片將會被閹割(只顯示上半部)。
    另外還有一種普遍狀況,如果我先顯示小圖,點選小圖看大圖,應該就是這樣:

複製程式碼 程式碼如下:

    好了,這有兩份重複的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應用到已有的文章

    第2節已經講到了Lightbox使用時HTML有一定的格式,如果已有的文章中的圖片是如何讓你的Lightbox支援滾輪縮放及Base64圖片_jquery這樣的,則必須對其進行一層封裝:

複製程式碼 程式碼如下:

 function initLightbox(){
     var imgs = $(".lightbox-container").find('img');
     $.each(imgs,function(i) {
         var img = $(imgs[i]);
         img.wrap("");       
     });
 }

    其中,「lightbox-container」是文章所在容器的class。 initLightbox函數要放置在頁面載入ready時,它會把文章中的所有img標籤都封裝為lightbox的格式。

本文就寫到這裡了,第2、3點大家可以看自己的使用場景去使用,lightbox改動的重點在於支援滾輪縮放。

附上修改過的lightbox  http://xiazai.jb51.net/201412/yuanma/lightbox(jb51.net).rar

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python vs. JavaScript:開發人員的比較分析Python vs. JavaScript:開發人員的比較分析May 09, 2025 am 12:22 AM

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

Python vs. JavaScript:選擇合適的工具Python vs. JavaScript:選擇合適的工具May 08, 2025 am 12:10 AM

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript:了解每個的優勢Python和JavaScript:了解每個的優勢May 06, 2025 am 12:15 AM

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

JavaScript的核心:它是在C還是C上構建的?JavaScript的核心:它是在C還是C上構建的?May 05, 2025 am 12:07 AM

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript應用程序:從前端到後端JavaScript應用程序:從前端到後端May 04, 2025 am 12:12 AM

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

Python vs. JavaScript:您應該學到哪種語言?Python vs. JavaScript:您應該學到哪種語言?May 03, 2025 am 12:10 AM

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架:為現代網絡開發提供動力JavaScript框架:為現代網絡開發提供動力May 02, 2025 am 12:04 AM

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

JavaScript,C和瀏覽器之間的關係JavaScript,C和瀏覽器之間的關係May 01, 2025 am 12:06 AM

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具