Magnific Popup 是一款免費的響應式 jQuery Lightbox 插件,兼容 Zepto.js。

Magnific Popup是一款非常優秀的相應式插件,不僅在桌機上表現優秀,在行動裝置上也有良好的兼容性。其適用範圍包括:lightbox 式圖片瀏覽、 iframe 對話框、 css 內文對話框、ajax 異步載入等功能。


Magnific Popup 的基礎用法

Magnific Popup 的引用

引用 JS 與 css 樣式

如果已經導入 jQuery.js,就不用再次包含它。

初始化 popup(彈出窗口)

Popup 的初始化代碼應該在 document(文檔)ready之後執行


三種方法可以調用一個 magnific-popup

通過一個HTML元素

type 要被顯示的選項,以指定的內容的格式

通過一組有共同父元素的子元素

和之前的一樣,不同的是創建一個彈出列表。

注意,此方法不支持 gallery(畫廊)模式,它只不過減少了單擊事件處理函數的數量──每個元素以獨立的窗口彈出。如果你要使用 gallery 模式,添加 gallery:{enabled:true} 選項。

通過「items」選項

items 選項為彈出項定義了一組數據,並且讓Magnific Popup忽略目標DOM元素的所有屬性值。items的值可以是單個對象或一個對象數組。

See the Pen Popup with mixed content types by Dmitry Semenov (@dimsemenov) on CodePen.


內容類型 (Content Types)

Magnific Popup 支援四種類型:image、iframe、inline和ajax。
由於並不存在基於URL的自動探測機制,所以可以手動定義。

可以通過兩種方式定義彈出窗口的類型:

  1. 使用類型(type)選項,例如: $('.image-link').magnificPopup({type:'image'})
  2. 使用 mfp-TYPE css class(TYPE是所需的內容類型) 例如: <a class="mfp-image image-link">Open image</a>, $('.image-link').magnificPopup()

See the Pen magnificPopup-inline-js陣列+物件巢狀式寫法自動產生於dom內 by Jimmy_Wu (@Jimmy_Wu) on CodePen.

彈出窗口的類型可以通過兩種方式定義:

其中,第二種方法會覆蓋第一種方法,因此你可以在一次調用定義多種類型的content type。
inline是預設的content type(從v0.8.4以來)。

有幾種方法可以定義彈出窗口的來源
(例如,一張圖片、一個 HTML 文檔,一個影片)

如果要修改源是如何解析,可以使用 elementParse 回調


圖像類型 (image)

必須將圖像的路徑設為主要源。如果彈出沒有一個圖像源,並且沒有不應該被預加載(和視網膜源化等 and retina-ized, etc.)的圖像,使用 inline 的類型。

請注意,Magnific Popup不會為圖像實現任何基於JavaScript的客戶端緩存。因此,請確保你的服務器增加了Expires頭使圖像不會每次下載。


iframe類型

Magnific Popup 每個服務只支持一種類型的 URL,以下預設三個服務。

實作 iframe 類型 Youtube

主要指定相對在 Html 裡的 class name,就可以直接使用

  1. 一定要用主機 localhost 來run HTML,套件才可以使用此 iframe 類型功能。
  2. Youtube 直接輸入瀏覽器網址列 https://www.youtube.com/watch?v=影片id,例如:https://www.youtube.com/watch?v=xGrXISLgvec
  3. 資料來源:http://codepen.io/dimsemenov/pen/LEmaI

See the Pen youtube iframe for CSS 與共用 / Magnific Popup by Jimmy_Wu (@Jimmy_Wu) on CodePen.

實作 iframe 類型 Gmap

See the Pen Gmap iframe / Magnific Popup by Jimmy_Wu (@Jimmy_Wu) on CodePen.


直列式類型 (Inline Type)

直列式類型 (Inline Type) 需要以下設定。

1.HTML元素中創建顯示彈出窗口,並加到某處。.mfp-hide 頁面彈出需要先隱藏。

2.直列式類型 (Inline Type)彈出窗口並不會自已加上樣式,所以需要指定樣式。預設會垂直居中alignTop:false 改成 true 就可以置頂,裡面自動附加關閉按鈕 closeBtnInside:true。

3.添加按鈕,需對應相關的元素 CSS 與 id

4.初始化 JS

5.其他方式

See the Pen 直列式類型 (Inline Type) / Magnific Popup by Jimmy_Wu (@Jimmy_Wu) on CodePen.

如果是使用行動裝置,而內容又過長的話在最下方要加上一個關閉按鈕才會比較方便。

See the Pen 直列式類型 (Inline Type) 區塊內加關閉按鈕 / Magnific Popup by Jimmy_Wu (@Jimmy_Wu) on CodePen.


實際樣品演示

items 陣列相本 / Magnific Popup

See the Pen items 陣列相本 / Magnific Popup by Jimmy_Wu (@Jimmy_Wu) on CodePen.

Magnific Popup – items 陣列中使用不同類型

See the Pen items 陣列中使用不同類型 / Magnific Popup by Jimmy_Wu (@Jimmy_Wu) on CodePen.

進出場動畫(Animation)

See the Pen items 陣列相本進出動畫 / Magnific Popup by Jimmy_Wu (@Jimmy_Wu) on CodePen.

開啟視窗後直接彈出 / Magnific Popup

See the Pen 開啟視窗後直接彈出 / Magnific Popup by Jimmy_Wu (@Jimmy_Wu) on CodePen.

callbacks 使用 html dom iframe & image

See the Pen callbacks 使用html dom iframe & image / Magnific Popup by Jimmy_Wu (@Jimmy_Wu) on CodePen.


資料來源

Magnific Popup 官網
Magnific Popup 設定說明
響應式彈出層和對話框插件Magnific Popup
Magnific Popup響應式的jQuery光箱特效插件
Magnific Popup を使ってみる
インラインで画像とテキストを表示させる方法