av素人天堂_free性亚洲_久久亚洲国产视频_国产网红在线_午夜av在线播放_欧美成人精品福利网站_热99在线观看_国产在线观看免费麻豆_日本高清在线观看_亚洲免费网站观看视频

FancyBox3 中文文檔

1. 介紹

fancyBox 是一個 JavaScript 庫,它以優(yōu)雅的方式展示圖片,視頻和一些 html 內(nèi)容。它包含你所期望的一切特性 —— 支持觸屏,響應(yīng)式和高度自定義。

1.1 依賴

推薦 jQuery 3+,但是 fancyBox 仍支持 jQery 1.9.1+ 和 jQuery 2+ 。

注意

如果你在圖片縮放時遇到了問題,請升級 jQuery 到最近版本(至少v3.2.1)。

1.2 兼容

fancyBox 支持觸屏操作,而且支持縮放等手勢操作。在移動端和PC端上都十分合適。

fancyBox 已經(jīng)在下列瀏覽器中測試:

  • Chrome
  • firefox
  • IE10/11
  • Edge
  • IOS Safari
  • Nexus 7 Chrome

2. 配置

可以在 html 文檔中引入.css.js來使用fancyBox,確保在這之前引入了 jQuery 庫。下面是使用fancyBox的一個基本的HTML模板:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>My page</title>

	<!-- CSS -->
	<link rel="stylesheet" type="text/css" href="jquery.fancybox.min.css">
</head>
<body>

	<!-- Your HTML content goes here -->

	<!-- JS -->
	<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>
	<script src="jquery.fancybox.min.js"></script>
</body>
</html>

注意

  • 要先引入jQuery
  • 如果頁面中已經(jīng)引入過jQuery,不能再次引入
  • 不要同時引入 fancybox.jsfancybox.min.js
  • 一些方法(ajax,iframes 等)必須在一個web服務(wù)器上才可以正常運行,在瀏覽器打開一個本地文件是無法正常工作的

2.1 下載fancyBox

可以在GIthub下載最新的版本。

或者直接引用 cdnjs —cdnjs.com/libraries/f…。

2.2 包管理工具

fancyBox 還可以通多 npm 和 Bower安裝。

# NPM
npm install @fancyapps/fancybox --save

# Bower
bower install fancybox --save

3. 使用

3.1 使用 data 屬性初始化

最基本的用法是通過添加?data-fancybox?屬性到一個超鏈接標(biāo)簽。標(biāo)題可以通過?data-capiton?添加。例如:

<a href="image.jpg" data-fancybox data-caption="My caption">
	<img src="thumbnail.jpg" alt="" />
</a>

 

這種方式使用默認(rèn)的配置,可以查看選項進行自定義配置,或者使用data-options屬性。

3.2 使用 JavaScript 初始化

使用 jQuery 選擇器選擇一個元素,然后調(diào)用fancybox方法:

<script type="text/javascript">
	$("[data-fancybox]").fancybox({
		// Options will go here
	});
</script>

使用這種方式,只有被選中的元素才可以觸發(fā)點擊事件。

為了可以現(xiàn)在或之后存在的元素都可以觸發(fā)點擊事件,使用selector選項。例如:

3.3 手動調(diào)用 fancyBox

fancyBox 允許使用 JavaScrip t以任意形式觸發(fā),因此不必需要通過某一個元素觸發(fā)。下面例子為展示一段簡單的信息:

$.fancybox.open('<div class="message"><h2>Hello!</h2><p>You are awesome!</p></div>');

3.4 分組

如果你有一組元素,組內(nèi)元素使用相同的?data-fancybox?值就可以組成一個相冊。不同的組應(yīng)該使用不同的屬性值加以區(qū)分。

<a href="image_1.jpg" data-fancybox="group" data-caption="Caption #1">
	<img src="thumbnail_1.jpg" alt="" />
</a>

<a href="image_2.jpg" data-fancybox="group" data-caption="Caption #2">
	<img src="thumbnail_2.jpg" alt="" />
</a>

注意

fancyBox根據(jù)給定的url自己嘗試檢測內(nèi)容的類型。如果無法檢測,該類型可以使用data-type屬性手動添加。

<a href="images.php?id=123" data-type="image" data-caption="Caption">
	Show image
</a>

4. 媒體類型

4.1 圖片

使用 fancyBox 的標(biāo)準(zhǔn)做法是用小尺寸的圖片鏈接到大尺寸圖片:

默認(rèn)情況下,fancyBox 會在一張圖片展示前進行預(yù)加載。你可以選擇立即顯示圖片,這樣當(dāng)加載完成后會馬上渲染和顯示完整尺寸的圖片。不過,以下屬性是必須添加的:

  • data-width?- 圖片的完整寬度
  • data-height?- 圖片的完整高度
<a href="image.jpg" data-fancybox="images" data-width="2048" data-height="1365">
    <img src="thumbnail.jpg" />
</a>

fancyBox 還支持禁止右鍵下載來保護圖片。當(dāng)然這無法阻止那些下定決心下載的用戶,但是可以讓大多數(shù)想要盜取你文件的用戶打消這個念頭。

 

$('[data-fancybox]').fancybox({
  protect: true
})

4.2 行內(nèi) HTML

對于行內(nèi)元素,你需要創(chuàng)建一個隱藏的元素并添加獨特的?id?屬性:

<div style="display: none;" id="hidden-content">
	<h2>Hello</h2>
	<p>You are awesome.</p>
</div>

然后只需要創(chuàng)建一個帶有?data-src?屬性的超鏈接,該屬性值匹配之前隱藏元素的id(優(yōu)先使用# ):

 

<a data-fancybox data-src="#hidden-content" href="javascript:;">
	Trigger the fancyBox
</a>

這段代碼會產(chǎn)生一個關(guān)閉按鈕(如果你沒有通過?smallBtn: false?禁用的話),這個按鈕只設(shè)置了居中。因此你可以很輕松地通過css來自定義樣式。

 

4.3 Ajax

想要通過 Ajax 加載內(nèi)容,需要在超鏈接添加?data-type="ajax"?屬性:

<a data-fancybox data-type="ajax" data-src="my_page.com/path/to/ajax/" href="javascript:;">
	AJAX content
</a>

另外,可以使用?data-filter?屬性定義一個選擇器,來顯示響應(yīng)的一部分。這個選擇器需要是一個合法的 jQuery 選擇器:

 

<a data-fancybox data-type="ajax" data-src="my_page.com/path/to/ajax/" data-filter="#two" href="javascript:;">
	AJAX content
</a>

4.4 Iframe

如果內(nèi)容可以展示在頁面,并且放在 iframe 中不會被腳本或者安全策略禁止,它就可以在 fancyBox 中展示:

<a data-fancybox data-type="iframe" data-src="http://codepen.io/fancyapps/full/jyEGGG/" href="javascript:;">
	Webpage
</a>

<a data-fancybox data-type="iframe" data-src="https://mozilla.github.io/pdf.js/web/viewer.html" href="javascript:;">
	Sample PDF
</a>

如果嵌入了 iframe,可以從父容器中訪問和控制 fancyBox:

// 根據(jù)內(nèi)容調(diào)整 iframe 的高度
parent.jQuery.fancybox.getInstance().update();

// 關(guān)閉當(dāng)前的 fancyBox 實例
parent.jQuery.fancybox.getInstance().close();

Iframe 尺寸可以通多 CSS 調(diào)整:

 

.fancybox-slide--iframe .fancybox-content {
	width  : 800px;
	height : 600px;
	max-width  : 80%;
	max-height : 80%;
	margin: 0;
}

如果需要的話,CSS 樣式可以被 JS 覆蓋:

$("[data-fancybox]").fancybox({
	iframe : {
		css : {
			width : '600px'
		}
	}
});

如果你沒有禁止 iframe 的預(yù)加載(使用preload),那么fancyBox會嘗試計算內(nèi)容的尺寸,并且會根據(jù)內(nèi)容來調(diào)整 iframe 的寬高。注意,這依賴于同源策略,因此會有一些限制。

下面這個例子禁止了 iframe 的預(yù)加載,并且用取消按鈕代替了工具欄。

$('[data-fancybox]').fancybox({
	toolbar  : false,
	smallBtn : true,
	iframe : {
		preload : false
	}
})

5. 嵌入

支持的網(wǎng)站可以展示在 fancyBox 中,只需要提供頁面的地址即可:

<a data-fancybox >
  YouTube video
</a>

<a data-fancybox >
  Vimeo video
</a>

<a data-fancybox >
	Google Map
</a>

<a data-fancybox  data-caption="<span title=&quot;Edited&quot;>balloon rides at dawn ??<br>was such a magical experience floating over napa valley as the golden light hit the hills.<br><a href=&quot;https://www.instagram.com/jamesrelfdyer/&quot;>@jamesrelfdyer</a></span>">
	Instagram photo
</a>

5.1 視頻尺寸

通過 CSS 調(diào)整視頻的顯示大?。?/p>

.fancybox-slide--video .fancybox-content {
	width  : 800px;
	height : 600px;
	max-width  : 80%;
	max-height : 80%;
}

5.2 視頻參數(shù)

通過 url 中的參數(shù)控制視頻

<a data-fancybox >
  YouTube video - hide controls and info
</a>

<a data-fancybox >
  Vimeo video - custom color
</a>

通過 JavaScript 控制視頻:

$('[data-fancybox]').fancybox({
	youtube : {
		controls : 0,
		showinfo : 0
	},
	vimeo : {
		color : 'f00'
	}
});

6. 選項

默認(rèn)選項值快速參考:

var defaults = {

    // 相冊循環(huán)瀏覽
    loop : false,

    // 圖片周圍的margin,如果視口(viewport)寬度小于800px則忽略
    margin : [44, 0],

    // Horizontal space between slides
    gutter : 50,

    // 鍵盤瀏覽
    keyboard : true,

    // 是否在屏幕邊緣顯示箭頭
    arrows : true,

    // 是否顯示infobar (頂部的counter and arrows)
    infobar : true,

    // 是否顯示頂部的toolbar
    toolbar : true,

    // 控制頂部toolbar里顯示的圖表
  	// 通過`btnTpl`選項的模板創(chuàng)建按鈕,并被放置在toolbar(class="fancybox-toolbar"`的元素)中
    buttons : [
        'slideShow',
        'fullScreen',
        'thumbs',
        'share',
        //'download',
        //'zoom',
        'close'
    ],

    // 探測"idle"的時間(秒)
    idleTime : 3,

    // 是否在右上角顯示關(guān)閉按鈕
  	// 如果設(shè)置為'auto',遇到內(nèi)容類型為html,inline,ajax時顯示
    // Use template from `btnTpl.smallBtn` for customization
    smallBtn : 'auto',

    // 保護文件,禁止右鍵下載
    protect : false,

    // Shortcut to make content "modal" - 禁止鍵盤瀏覽,隱藏按鈕等
    modal : false,

    image : {
      	// 預(yù)加載
      	// 需要預(yù)定義圖片的尺寸
      	// 設(shè)置為'auto',自動在預(yù)覽圖中縮放
        preload : "auto"

    },

    ajax : {

        // 請求 ajax 的配置
        settings : {
          	// 表明請求是從模態(tài)框中發(fā)起,名字可改
            data : {
                fancybox : true
            }
        }

    },

    iframe : {

        // Iframe 模板
        tpl : '<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen allowtransparency="true" src=""></iframe>',

        // 預(yù)加載
        // 由于同源策略,不能加載跨域數(shù)據(jù)
        preload : true,

      	// 自定義包裹 iframe 的元素的 CSS 樣式
      	// 這樣就可以自定義 iframe 的尺寸
        css : {},

        // iframe 標(biāo)簽屬性
        attr : {
            scrolling : 'auto'
        }

    },

    // 如果內(nèi)容類型不能自動檢測出來,默認(rèn)值為'image'
    defaultType : 'image',

    // 打開/關(guān)閉動畫類型
    // 可用的值:
    //   false            - disable
    //   "zoom"           - zoom images from/to thumbnail
    //   "fade"
    //   "zoom-in-out"
    //
    animationEffect : "zoom",

    // 打開/關(guān)閉動畫使用的時間,ms
    animationDuration : 500,

    // 圖片縮放時是夠改變透明度
  	// 如果透明度為'auto',那么圖片和縮略圖比例不一致時透明度將會發(fā)生改變
    zoomOpacity : "auto",

    // 滑塊動畫
    //
    // 可用的值:
    //   false            - disable
    //   "fade'
    //   "slide'
    //   "circular'
    //   "tube'
    //   "zoom-in-out'
    //   "rotate'
    //
    transitionEffect : "fade",

    // 動畫持續(xù)時間,ms
    transitionDuration : 366,

    // 自定義的滑塊的 class 值
    slideClass : '',

    // 自定義的布局的 class 值
    baseClass : '',

    // 布局的模板
    baseTpl	:
        '<div class="fancybox-container" role="dialog" tabindex="-1">' +
            '<div class="fancybox-bg"></div>' +
            '<div class="fancybox-inner">' +
                '<div class="fancybox-infobar">' +
                    '<span data-fancybox-index></span>&nbsp;/&nbsp;<span data-fancybox-count></span>' +
                '</div>' +
                '<div class="fancybox-toolbar">{{buttons}}</div>' +
                '<div class="fancybox-navigation">{{arrows}}</div>' +
                '<div class="fancybox-stage"></div>' +
                '<div class="fancybox-caption-wrap"><div class="fancybox-caption"></div></div>' +
            '</div>' +
        '</div>',

    // 加載中時的模板
    spinnerTpl : '<div class="fancybox-loading"></div>',

    // 錯誤時的模板
    errorTpl : '<div class="fancybox-error"><p>{{ERROR}}<p></div>',

    btnTpl : {

        download : '<a download data-fancybox-download class="fancybox-button fancybox-button--download" title="{{DOWNLOAD}}">' +
                    '<svg viewBox="0 0 40 40">' +
                        '<path d="M20,23 L20,8 L20,23 L13,16 L20,23 L27,16 L20,23 M26,28 L13,28 L27,28 L14,28" />' +
                    '</svg>' +
                '</a>',

        zoom : '<button data-fancybox-zoom class="fancybox-button fancybox-button--zoom" title="{{ZOOM}}">' +
                    '<svg viewBox="0 0 40 40">' +
                        '<path d="M 18,17 m-8,0 a 8,8 0 1,0 16,0 a 8,8 0 1,0 -16,0 M25,23 L31,29 L25,23" />' +
                    '</svg>' +
                '</button>',

        close : '<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}">' +
                    '<svg viewBox="0 0 40 40">' +
                        '<path d="M10,10 L30,30 M30,10 L10,30" />' +
                    '</svg>' +
                '</button>',

      	// 如果'smallBtn'沒有設(shè)置為 false,默認(rèn)關(guān)閉按鈕將會被放置在你的 html/inline/ajax 內(nèi)容中
        smallBtn   : '<button data-fancybox-close class="fancybox-close-small" title="{{CLOSE}}"></button>',

        // 箭頭
        arrowLeft : '<button data-fancybox-prev class="fancybox-button fancybox-button--arrow_left" title="{{PREV}}">' +
                        '<svg viewBox="0 0 40 40">' +
                          '<path d="M10,20 L30,20 L10,20 L18,28 L10,20 L18,12 L10,20"></path>' +
                        '</svg>' +
                      '</button>',

        arrowRight : '<button data-fancybox-next class="fancybox-button fancybox-button--arrow_right" title="{{NEXT}}">' +
                      '<svg viewBox="0 0 40 40">' +
                        '<path d="M30,20 L10,20 L30,20 L22,28 L30,20 L22,12 L30,20"></path>' +
                      '</svg>' +
                    '</button>'
    },

    // 模態(tài)框放置在哪個節(jié)點中
    parentEl : 'body',


    // 焦點處理
    // ==============

    // 打開后焦點在第一個支持焦點的元素上
    autoFocus : false,

    // 關(guān)閉后焦點回到 active 的元素上
    backFocus : true,

    // 不讓用戶焦點放在模態(tài)框外的內(nèi)容中
    trapFocus : true,


    // 模態(tài)框配置
    // =======================

    fullScreen : {
        autoStart : false,
    },

    // 設(shè)置 `touch: false` 來禁止拖拽/手指滑動
    touch : {
        vertical : true,  // 允許垂直方向拖拽
        momentum : true   // Continue movement after releasing mouse/touch when panning
    },

    // 手動初始化時的 hash 值,
    // 設(shè)為 `false` 不改變 hash 
    hash : null,

    // 自定義或者添加媒體類型
    // 例如:
    /*
    media : {
        youtube : {
            params : {
                autoplay : 0
            }
        }
    }
    */
    media : {},

    slideShow : {
        autoStart : false,
        speed     : 4000
    },

    thumbs : {
        autoStart   : false,                  // 打開的時候展示縮略圖
        hideOnClose : true,                   // 關(guān)閉動畫開始時隱藏縮略圖輪廓
        parentEl    : '.fancybox-container',  // Container is injected into this element
        axis        : 'y'                     // 垂直 (y) or 水平 (x) 滾動
    },

    // 使用鼠標(biāo)滾輪來瀏覽相冊
    // 設(shè)為 'auto' - 只對圖片啟用
    wheel : 'auto',

    // 毀掉函數(shù)
    //==========

    // 更多信息請查看 API
    // 例如:
    /*
        afterShow: function( instance, current ) {
             console.info( 'Clicked element:' );
             console.info( current.opts.$orig );
        }
    */

    onInit       : $.noop,  // 實例初始化完成

    beforeLoad   : $.noop,  // 側(cè)欄的內(nèi)容正在被加載
    afterLoad    : $.noop,  // 側(cè)欄的內(nèi)容加載完成后

    beforeShow   : $.noop,  // 打開動畫開始前
    afterShow    : $.noop,  // 內(nèi)容加載完成,進行動畫的時候

    beforeClose  : $.noop,  // 實例準(zhǔn)備關(guān)閉的時候,返回 false 值取消關(guān)閉
    afterClose   : $.noop,  // 實例關(guān)閉后

    onActivate   : $.noop,  // 實例激活的時候
    onDeactivate : $.noop,  // 其他實例被激活的時候


    // 交互
    // ===========

    // 使用一下選項自定義用戶單擊雙擊等事件
    // 每個選項可以是字符串,或者有返回值的方法
    //
    // 可用的值:
    //   "close"           - close instance
    //   "next"            - move to next gallery item
    //   "nextOrClose"     - move to next gallery item or close if gallery has only one item
    //   "toggleControls"  - show/hide controls
    //   "zoom"            - zoom image (if loaded)
    //   false             - do nothing

    // 內(nèi)容被點擊
    clickContent : function( current, event ) {
        return current.type === 'image' ? 'zoom' : false;
    },

    // 側(cè)邊欄被點擊
    clickSlide : 'close',

    // 點擊模態(tài)框外的北京時
    clickOutside : 'close',

    // 同之前的兩個一樣,只是是雙擊的時候
    dblclickContent : false,
    dblclickSlide   : false,
    dblclickOutside : false,


    // 移動端事件
    // =============================================

    mobile : {
        idleTime : false,
        margin   : 0,

        clickContent : function( current, event ) {
            return current.type === 'image' ? 'toggleControls' : false;
        },
        clickSlide : function( current, event ) {
            return current.type === 'image' ? 'toggleControls' : 'close';
        },
        dblclickContent : function( current, event ) {
            return current.type === 'image' ? 'zoom' : false;
        },
        dblclickSlide : function( current, event ) {
            return current.type === 'image' ? 'zoom' : false;
        }
    },


    // 國際化
    // ============

    lang : 'en',
    i18n : {
        'en' : {
            CLOSE       : 'Close',
            NEXT        : 'Next',
            PREV        : 'Previous',
            ERROR       : 'The requested content cannot be loaded. <br/> Please try again later.',
            PLAY_START  : 'Start slideshow',
            PLAY_STOP   : 'Pause slideshow',
            FULL_SCREEN : 'Full screen',
            THUMBS      : 'Thumbnails',
            DOWNLOAD    : 'Download',
            SHARE       : 'Share',
            ZOOM        : 'Zoom'
        },
        'de' : {
            CLOSE       : 'Schliessen',
            NEXT        : 'Weiter',
            PREV        : 'Zurück',
            ERROR       : 'Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es sp?ter nochmal.',
            PLAY_START  : 'Diaschau starten',
            PLAY_STOP   : 'Diaschau beenden',
            FULL_SCREEN : 'Vollbild',
            THUMBS      : 'Vorschaubilder',
            DOWNLOAD    : 'Herunterladen',
            SHARE       : 'Teilen',
            ZOOM        : 'Ma?stab'
        }
    }

};

通過傳入?fancybox?方法一個對象來設(shè)置一個實例:

$("[data-fancybox]").fancybox({
	thumbs : {
		autoStart : true
	}
});

可以通過?$.fancybox.defaults?命名空間修改 fancyBox 的默認(rèn)選項:

$.fancybox.defaults.animationEffect = "fade";

對于單獨的元素可以通過?data-options?屬性進行自定義。這個屬性值要求JSON格式的對象:

<a data-fancybox data-options='{"caption" : "My caption", "src" : "https://codepen.io/about/", "type" : "iframe"}' href="javascript:;" class="btn">
	Open external page
</a>

7. API

API 提供了一系列的方法來控制 fancyBox。這些方法幫助你擴展插件,整合到其他的 web 應(yīng)用中。

7.1 核心方法

操作實例的核心方法:

// 只關(guān)閉當(dāng)前 active 狀態(tài)或者所有的 fancyBox 實例
$.fancybox.close( true );

// 打開 fancyBox
$.fancybox.open( items, opts, index );

通過 jQuery 將相冊中的元素變?yōu)?jQuery 對象或者包含純對象的數(shù)組,進行更多操作如創(chuàng)建定義點擊事件。

var $links = $('.fancybox');

$links.on('click', function() {

	$.fancybox.open( $links, {
		// 自定義內(nèi)容
	}, $links.index( this ) );

	return false;
});

手動創(chuàng)建一組對象時,組內(nèi)元素應(yīng)該遵循以下規(guī)則:

{
  	src  : '' // 資源
	type : '' // 類型: image|inline|ajax|iframe|html (optional)
	opts : {} // 選項 (optional)
}

下面是一個通過 JavaScrip t打開相冊的例子:

$.fancybox.open([
	{
		src  : '1_b.jpg',
		opts : {
			caption : 'First caption'
		}
	},
	{
		src  : '2_b.jpg',
		opts : {
			caption : 'Second caption'
		}
	}
], {
	loop : false
});

fancyBox 允許只傳一個對象。打開行內(nèi)元素的例子:

$.fancybox.open({
	src  : '#hidden-content',
	type : 'inline',
	opts : {
		afterShow : function( instance, current ) {
			console.info( 'done!' );
		}
	}
});
// 譯者注:行內(nèi)元素如下
<div id="#hidden-content">
  <p>...content</p>
</div>

 

7.2 實例的方法

你需要定義一個實例來使用實例的方法。

var instance = $.fancybox.open(
	// 內(nèi)容和選項
);

從當(dāng)前 active 的實例中獲取信息:

var instance = $.fancybox.getInstance();

回調(diào)函數(shù)的第一個參數(shù)返回實例信息:

$("[data-fancybox]").fancybox({
	afterShow : function( instance, current ) {
		console.info( instance );
	}
});

實例可以調(diào)用以下方法:

// 跳到下一個相冊元素
instance.next( duration );

//跳到上一個相冊元素
instance.previous( duration );

// 調(diào)到選中的相冊元素
instance.jumpTo( index, duration );

// 檢測當(dāng)前尺寸是否小于實際尺寸
instance.isScaledDown();

// 縮放到實際尺寸
instance.scaleToActual( x, y, duration );

// 檢測尺寸是否超過父元素
instance.canPan();

// 縮放適應(yīng)父元素尺寸
instance.scaleToFit( duration );

// 更新滑塊的內(nèi)容和位置
instance.update();

// 更新側(cè)邊欄的位置, 縮放內(nèi)容來適應(yīng)
instance.updateSlide( slide );

// 更新 infobar 的值, 導(dǎo)航按鈕的狀態(tài), 和展示標(biāo)題
instance.updateControls( force );

// 在側(cè)邊欄中加載自定義內(nèi)容
instance.setContent( slide, content );

// 在側(cè)邊欄中加載loading效果
instance.showLoading( slide );

// 從側(cè)邊欄中去除loading效果
instance.hideLoading( slide );

// 找到和把焦點放在第一個可以放置焦點的元素
instance.focus();

// 激活當(dāng)前 active 的實例,顯示在最前面
instance.activate();

// 關(guān)閉實例
instance.close();

7.3 事件

fancyBox 支持觸發(fā)以下事件:

beforeLoad   : 滑塊的內(nèi)容加載前
afterLoad    : 滑塊內(nèi)容加載后

beforeShow   : 打開動畫開始前
afterShow    : 內(nèi)容或者動畫加載完成

beforeClose  : 實例準(zhǔn)備關(guān)閉前,染回`false`取消關(guān)閉
afterClose   : 實例關(guān)閉后

onInit       : 實例初始化完成
onActivate   : 實例active狀態(tài)
onDeactivate : 其他實例變?yōu)閍ctive狀態(tài)

事件可以作為一個對象的函數(shù)屬性,該對象作為參數(shù)傳入到 fancyBox 初始化方法中:

<script type="text/javascript">
	$("[data-fancybox]").fancybox({
		afterShow: function( instance, slide ) {

			// Tip: Each event passes useful information within the event object:

			// Object containing references to interface elements
			// (background, buttons, caption, etc)
			// console.info( instance.$refs );

			// Current slide options
			// console.info( slide.opts );

			// Clicked element
			// console.info( slide.opts.$orig );

			// Reference to DOM element of the slide
			// console.info( slide.$slide );

		}
	});
</script>

每一個回調(diào)函數(shù)接收兩個參數(shù) —— 當(dāng)前的 fancyBox 實例和當(dāng)前的相冊對象(如果它們存在)。

fancyBox也支持觸發(fā)所有的實例事件。為了防止和其他的腳本產(chǎn)生干擾,這些事件命名為.fb結(jié)尾。這些事件函數(shù)接收3個參數(shù)—事件(event),當(dāng)前的 fancyBox 實例和當(dāng)前的相冊對象。

下面例子是綁定afterShow事件:

$(document).on('afterShow.fb', function( e, instance, slide ) {
	// Your code goes here
});

如果你想阻止當(dāng)前彈窗的關(guān)閉(例如在表單提交之后),可以使用beforeClose。只需要返回false即可:

beforeClose : function( instance, current, e ) {
	if ( $('#my-field').val() == '' ) {
		return false;
	}
}

8. 模塊

fancyBox 代碼被分成幾個擴展核心功能的文件(模塊)。你可以通過去除不必要的模塊來構(gòu)建你自己的 fancyBox 版本。如果需要,每一個模塊有自己的.js.css文件。

// 自定義、添加新的媒體類型
// 例如:
/*
media : {
	youtube : {
		params : {
			autoplay : 0
		}
	}
}
*/
media : {},

slideShow : {
	autoStart : false,
	speed     : 4000
},

thumbs : {
	autoStart   : false,                  // 打開時顯示縮略圖
	hideOnClose : true,                   // Hide thumbnail grid when closing animation starts
	parentEl    : '.fancybox-container',  // Container is injected into this element
	axis        : 'y'                     // Vertical (y) or horizontal (x) scrolling
}

Example (show thumbnails on start):

開始時展示縮略圖的例子:

$('[data-fancybox="images"]').fancybox({
	thumbs : {
		autoStart : true
	}
})

如果你查看了 fancyBox 的實例對象,你會發(fā)現(xiàn)一些key的值是大寫的 —— 他們關(guān)聯(lián)著其他模塊的對象。當(dāng)然,你也會發(fā)現(xiàn) fancyBox 使用和 jQuery 一直的前綴?$?。

下面例子為如何拿到縮略圖柵格元素:

$.fancybox.getInstance().Thumbs.$grid

下面例子為如何調(diào)用切換縮略圖的方法:

$.fancybox.getInstance().Thumbs.toggle();

可使用的方法列表:

Thumbs.focus()
Thumbs.update();
Thumbs.hide();
Thumbs.show();
Thumbs.toggle();

FullScreen.request( elem );
FullScreen.exit();
FullScreen.toggle( elem );
FullScreen.isFullscreen();
FullScreen.enabled();

SlideShow.start();
SlideShow.stop();
SlideShow.toggle();

如果你想禁止 hash 模塊,使用下面代碼片段(引用 JS 之后):

$.fancybox.defaults.hash = false;

9. FAQ

1. 打開、關(guān)閉導(dǎo)致固定定位的元素移動

在固定定位的元素的class中加入compensate-for-scrollbar。例子為使用Bootstrap的navbar組件:

<nav class="navbar navbar-inverse navbar-fixed-top compensate-for-scrollbar">
	<div class="container">
		..
	</div>
</nav>

上個例子中,腳本會測量滾動條的寬度,創(chuàng)建compensate-for-scrollbar樣式并將寬度值復(fù)制到該樣式的margin-right屬性。因此,如果你的元素寬度設(shè)置為width:100%,你應(yīng)該同時使用leftright定位,例如:

.navbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
}

2. 如何自定義標(biāo)題

你可以使用caption選項,它接收一個函數(shù),并且被組內(nèi)的每個元素調(diào)用。例子為增加圖片下載鏈接:

$( '[data-fancybox="images"]' ).fancybox({
    caption : function( instance, item ) {
        var caption = $(this).data('caption') || '';

        if ( item.type === 'image' ) {
            caption = (caption.length ? caption + '<br />' : '') + '<a href="' + item.src + '">Download image</a>' ;
        }

        return caption;
    }
});

在標(biāo)題右邊增加當(dāng)前圖片的序號和圖片總數(shù):

$( '[data-fancybox="images"]' ).fancybox({
    infobar : false,
    caption : function( instance, item ) {
        var caption = $(this).data('caption') || '';

        return ( caption.length ? caption + '<br />' : '' ) + 'Image <span data-fancybox-index></span> of <span data-fancybox-count></span>';
    }
});

caption方法里面,this指向被點擊的元素。例子為使用不同的標(biāo)題:

$( '[data-fancybox]' ).fancybox({
	caption : function( instance, item ) {
		return $(this).find('figcaption').html();
	}
});

3. 如何在tool上創(chuàng)建自定義按鈕

創(chuàng)建可重復(fù)使用的按鈕例子:

// 創(chuàng)建按鈕模板
$.fancybox.defaults.btnTpl.fb = '<button data-fancybox-fb class="fancybox-button fancybox-button--fb" title="Facebook">' +
    '<svg viewBox="0 0 24 24">' +
        '<path d="M22.676 0H1.324C.594 0 0 .593 0 1.324v21.352C0 23.408.593 24 1.324 24h11.494v-9.294h-3.13v-3.62h3.13V8.41c0-3.1 1.894-4.785 4.66-4.785 1.324 0 2.463.097 2.795.14v3.24h-1.92c-1.5 0-1.793.722-1.793 1.772v2.31h3.584l-.465 3.63h-3.12V24h6.115c.733 0 1.325-.592 1.325-1.324V1.324C24 .594 23.408 0 22.676 0"/>' +
    '</svg>' +
'</button>';

// 使用時間代理使按鈕可點擊
$('body').on('click', '[data-fancybox-fb]', function() {
  window.open("https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(window.location.href)+"&t="+encodeURIComponent(document.title), '','left=0,top=0,width=600,height=300,menubar=no,toolbar=no,resizable=yes,scrollbars=yes');
});

// 自定義按鈕
$( '[data-fancybox="images"]' ).fancybox({
  buttons : [
    'fb',
    'close'
  ]
});

4. 如何重置縮略圖柵格的位置

這里沒有 JS 選項去改變縮略圖柵格的位置,但是 fancyBox 允許你使用 CSS 來改變每個塊元素的位置或者尺寸(例如:內(nèi)容區(qū)域,標(biāo)題或者縮略圖柵格)。這使你很自由的改變彈框窗口的外觀和樣式。

5. 如何禁止touch操作

當(dāng)你想內(nèi)容可選擇或者可點擊,有兩個選項:

  • 設(shè)置touch:false完全禁止 touch 操作
  • 添加data-selectable="true"屬性到你的 html 元素
上一篇 CSS3 Flex 布局詳解文檔
下一篇 ES6中的異步詳解
目錄
applek

applek管理員

個人說明在個人中心里面設(shè)置

本月創(chuàng)作熱力圖

最新評論
chinacnd
chinacnd
6月26日
這個主題是怎么做到加載速度那么快的?
風(fēng)起云涌
風(fēng)起云涌
6月17日
前臺投稿現(xiàn)在有點太抽象了 希望可以弄成那種分區(qū)填寫的 標(biāo)題,內(nèi)容,圖片,目錄,標(biāo)簽,這樣的
評論于留言建議
風(fēng)起云涌
風(fēng)起云涌
6月17日
希望加個開關(guān)去掉頁腳的站點身份,還有自定義頁腳居中文字
評論于留言建議
卡卡
卡卡
5月31日
倒是放個演示地址啊
av素人天堂_free性亚洲_久久亚洲国产视频_国产网红在线_午夜av在线播放_欧美成人精品福利网站_热99在线观看_国产在线观看免费麻豆_日本高清在线观看_亚洲免费网站观看视频
中文在线第一页| 91精品国产自产在线丝袜啪| 77777_亚洲午夜久久多人| 中文字幕在线观看欧美| 中文字幕亚洲一区在线观看| 国产黄色在线| 国产在线一区二区视频| 亚洲黄色片在线观看| 91精品观看| 中文字幕国产在线| 成人xxxx| 午夜一区二区三区视频| 日韩欧美在线影院| 欧美三级在线播放| 中文字幕第一页在线| 欧美区高清在线| 日韩精品在线第一页| 在线一区av| 欧美国产小视频| 欧美日韩国产在线播放| 精品国产网站在线观看| 亚洲高清视频一区| 亚洲深夜福利| 国内激情久久| 国产黄色在线网站| 中文字幕日韩在线观看| 中文字幕4区| 日韩亚洲国产欧美| 欧美日韩综合视频| 日韩不卡一区二区| 久久综合九色欧美综合狠狠| 黄色一区二区在线| 91精品久久久久久久久久入口| 中文字幕日韩第一页| 久久婷婷亚洲| 日韩一级中文字幕| 午夜国产视频| 人妻一区二区三区免费| 日韩欧美在线影院| 91精品国产色综合久久不卡蜜臀| 激情婷婷亚洲| 日韩在线不卡| 一区二区91| 成人精品视频一区| 欧美日韩三级一区| 日韩国产欧美三级| 日韩欧美中文字幕在线播放| 91精品在线看V| 国产激情三区| 国产一区在线不卡| 精品欧美日韩精品| 二区视频在线观看| 国产高清大尺度一区二区不卡| 在线视频第一页| 人成免费在线视频| 精品乱人伦一区二区三区| 国产小视频在线观看| 久久婷婷亚洲| 日韩欧美一级精品久久| 一级特黄大欧美久久久| 国产一级免费在线观看| 久久精品www| 中文字幕日韩精品在线| 久久视频在线免费观看| 国产不卡视频在线| 日韩在线视频二区| 美日韩精品免费视频| 日韩在线视频中文字幕| 91精品国产综合久久精品app| 亚洲一区在线观看网站| 国产视频二区| 精品国产31久久久久久| 91精品国产自产91精品| 亚洲第一中文字幕| 国产乱国产乱老熟300部视频| 91精品婷婷国产综合久久竹菊| 亚洲成年人在线播放| 欧美日韩国产在线| 国产三级免费观看| 亚洲一区资源| 欧美日韩亚洲国内综合网俺| 中文字幕精品在线播放| 中文国产字幕在线观看| 国产在线视频不卡| 亚洲va久久久噜噜噜久久| 国产中文在线观看| 国产日韩精品在线看| 99久久精品国产成人一区二区| 久久蜜桃精品| 日韩精品免费观看视频| 精品久久久91| 久久精品国产视频| 自拍日韩亚洲一区在线| 蜜桃久久久久| 精品成人久久久| 成年人黄国产| 日韩视频免费直播| 精品国产不卡一区二区| 国产成人精品三级| www.尤物.com| 久久精品久久精品亚洲人| 91亚洲欧美| 亚洲一区日韩精品中文字幕| 国产一区久久| 欧美日韩精品欧美日韩精品一| 日韩欧美在线视频| 日韩亚洲一区中文字幕| 91精品国产乱码久久蜜臀| 亚洲成在线观看| 国产欧美日韩中文久久| 日韩精品在线播放| 国产欧美日韩视频在线| 中文字幕在线中文字幕二区| 91精品国产自产观看在线| 欧美日韩国产高清| 久久网站免费观看| 精品国内自产拍在线视频| 欧美久久久网站| 日韩欧美中文字幕一区| 久久久精品免费免费| 99日韩精品| 欧美日韩国产大片| 国产在线观看色| 久久久水蜜桃| 顶级网黄在线播放| 国产第一页在线播放| 日韩中文字幕二区| 国产一区不卡在线| 欧美高清一级片在线| 欧美日韩国产影片| 在线观看国产一级片| 精品欧美不卡一区二区在线观看| 亚洲第一福利视频在线| 亚洲黄在线观看| 欧洲精品二区| 国产在线视频不卡| 欧美在线视频第一页| 日韩欧美在线视频日韩欧美在线视频| 拍真实国产伦偷精品| 黄色精品在线观看| 日本不卡免费高清视频| 欧美日韩国产观看视频| 精品久久久三级| 91精品国产综合久久精品app| 日韩在线观看一区| 亚洲综合中文字幕在线| 欧美一级二级三级区| 99视频精品全国免费| 青青久在线视频免费观看| 免费在线播放av| 国产成人精品免费网站| 亚洲开心激情| 国产成人精品网址| 日韩高清不卡一区| 91精品在线观看入口| 亚洲校园欧美国产另类| 国产乱国产乱老熟300| 国产免费永久在线观看| av三级在线观看| 精品视频久久| 亚洲日本欧美日韩高观看| 天堂中文在线视频| 国产一二三四| 亚洲乱码一区av黑人高潮| 亚洲三级欧美| 欧美1234区| 日韩在线三区| 91精品久久久久久久久久入口| 偷窥国产亚洲免费视频| 国产九九在线| 欧美日韩中文字幕在线观看| 日韩三级精品| 精品欧美日韩精品| 国产91久久久久蜜臀青青天草二| 国产999精品在线观看| 久久婷婷亚洲| 日韩精品在线免费观看视频| 欧美激情视频一区二区三区在线播放| 精品网站999www| 国产卡1卡2卡三卡在线| 精品福利二区三区| 中文字幕人成乱码在线观看| 国产啊啊啊视频在线观看| 中文字幕亚洲区| 欧美日韩国产在线看| 欧美色视频一区二区三区在线观看| 亚洲一区在线视频观看| 日韩亚洲欧美中文三级| 日韩av一区二区在线| 欧美日韩日本视频| 精品视频1区2区3区| 国产久卡久卡久卡久卡视频精品| 精品三级在线| 国产高清精品二区| 伊人国产视频| 欧美日韩中文字幕在线| 欧美日韩三级在线观看| 亚洲精品欧美二区三区中文字幕| 日韩视频精品在线观看| 欧美日韩免费不卡视频一区二区三区| √天堂资源中文www| 日韩国产在线不卡视频| 中文字幕精品视频在线| 日韩美女视频一区二区在线观看| 欧美日韩在线精品一区二区三区激情综| 日韩欧美中文| 国产精品福利视频一区二区三区| 91精品国产自产在线丝袜啪| 日韩亚洲欧美中文三级| 久久久99免费| 欧美日韩国产在线播放| 最近免费中文字幕在线第一页| 国产午夜精品视频免费不卡69堂| 国产小视频在线观看| 日韩中文在线中文网三级| 日韩在线视频网| 一级片在线免费看| 久久69成人| 一区视频在线播放| 国产美女主播视频一区| 91欧美日韩在线| 成人久久在线| 亚洲欧美999| 亚洲一区在线观看网站| 欧美日韩国产一区中文午夜| 久久精品在线观看| 国产v日产∨综合v精品视频| 欧美中文字幕视频在线观看| 欧美久久在线| 久久综合九色欧美综合狠狠| 久久精品女人| 在线欧美一级视频| 亚洲免费看av| 日韩欧美在线视频日韩欧美在线视频| 欧美日韩精品三区| 久久91精品视频| 日韩精品大片| 欧美不卡一二三| 亚洲国内精品视频| 亚洲a中文字幕| 在线中文字幕视频观看| 国产激情99| 在线视频观看日韩| 久久人人88| 日韩a一区二区| 欧美不卡123| 国产三级在线播放| 日韩精品在线播放| 久久精品日韩欧美| 亚洲欧美中文字幕在线一区| 黄色片免费看| 亚洲黄色片在线观看| 亚洲国产欧美日韩在线| 亚洲视频在线观看三级| 日韩精品首页| 国产裸舞福利在线视频合集| 欧美日韩国产首页在线观看| 亚洲永久免费视频| 欧美日韩亚洲综合在线| 欧美日韩久久久| 欧美日韩中文字幕精品| 国产不卡一区二区在线观看| 欧美日韩亚洲国产综合| 午夜国产视频| 日韩手机在线观看视频| 91精品国产丝袜白色高跟鞋| 国产中文在线播放| 日韩国产成人精品| 亚洲狠狠婷婷综合久久久久图片| 午夜亚洲一区| 在线亚洲免费| 日韩三级免费观看| 日本不卡免费高清视频| 国产亚洲污的网站| 阿v免费在线观看| 国产一卡2卡3卡四卡网站| 日韩视频一区在线观看| 欧美性极品xxxx做受| 亚洲专区一二三| 不卡视频一区二区三区| 亚洲va韩国va欧美va精品| 亚洲小说春色综合另类电影| 亚洲免费看av| 免费高清视频日韩| 中文字幕日韩精品在线| 午夜少妇久久久久久久久| www.精品av.com| 日韩高清不卡一区二区| 精品日韩欧美| 综合图区亚洲白拍在线| 国产一级视频在线播放| 日韩精品不卡一区二区| 国产日韩av一区| 日韩欧美国产成人一区二区| 日韩精品福利一区二区三区| 亚洲视频在线观看日本a| 久久99久久久久| 国产日韩中文字幕| 免费精品国产自产拍在| 天天综合天天综合| 欧美黄页在线免费观看| 国产 日韩 欧美 综合 一区| 日韩精品免费视频一区二区三区| 国产成免费视频| 国产一级片播放| 日韩在线视频二区| 中文字幕在线播放一区| 久久久综合精品| 免费视频中文字幕| 日韩欧美字幕| 国产欧美日韩综合| 久久久99久久精品欧美| 亚洲乱码视频| 国产第一页在线播放| 欧美日韩亚洲综合在线| 亚洲成年人在线播放| 91精品国产91综合久久蜜臀| 精品国自产在线观看| 日韩精品首页| 午夜国产视频| 国产91大片| 午夜视频在线观看一区| 中文字幕亚洲高清| 欧美日韩亚洲综合在线| 中文字幕日韩亚洲| 天堂在线一区二区三区| 精品网站999www| 日韩中文字幕| 国产无遮挡在线视频免费观看| 91精品视频国产| 亚洲娇小xxxx欧美娇小| 999精品视频在线观看播放| 日韩欧美国产成人精品免费| 一区二区精品免费| 日韩国产一区久久| 91久久大香伊蕉在人线| 一区二区精品区| 日韩在线观看精品| 成人精品视频一区| 日韩视频在线一区二区三区| 精品在线网站观看| 中文字幕欧美日韩在线| 国产在线播放一区二区| av中文天堂在线| 国产日韩在线亚洲字幕中文| 国产日韩精品在线观看| 亚洲第一中文字幕在线观看| 国产欧美日韩第一页| 欧美wwww| 99国产成 人 综合 亚洲欧美| 激情五月综合| 老司机久久99久久精品播放免费| 999精品在线| 日韩欧美国产不卡| 欧美日韩国产高清一区| 国产欧美在线观看| 国产v日产∨综合v精品视频| 日本黄色一区二区| 国产色在线视频| 欧美一级免费在线观看| 中文字幕中文字幕精品| 国产乱码午夜在线视频| 91精品国产91久久久| 精品日韩视频在线观看| 欧美日韩综合视频| 日韩中文在线中文网三级| 日韩中文字幕精品视频| 精品一区二区三区中文字幕| 亚洲v中文字幕| 精品日韩欧美在线| 一区二区三区在线免费| 国产手机视频一区二区| 欧美国产综合视频| 欧美一级二级三级区| 国产资源在线观看入口av| 国产95在线|亚洲| 日韩中文字幕视频在线| 亚洲综合视频一区| 亚洲乱码一区av黑人高潮| 国产91欧美| 亚洲狠狠婷婷综合久久久久图片| 亚洲视频在线观看日本a| av中文天堂在线| 二区视频在线观看| 精品久久在线| a视频免费在线观看| 国产日韩中文在线| 91精品在线视频观看| 日韩精品视频在线观看视频| 国产99在线 | 亚洲| 欧美日韩国产大片| 欧美日韩中文在线| 欧美 日韩 国产 高清| 日韩视频在线一区二区三区| 国产无遮挡在线视频免费观看| 中文字幕精品亚洲| www.中文字幕在线观看| 亚洲欧美999| 亚洲专区一区| 亚洲一二三不卡|