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在线观看_国产在线观看免费麻豆_日本高清在线观看_亚洲免费网站观看视频
黄色欧美日韩| 欧美三级网址| 国产成人日日夜夜| 日韩欧美视频一区二区三区四区| 一区二区不卡在线| 国产99亚洲| 日韩欧美999| 中文字幕日韩欧美在线视频| 欧美日韩一级视频| 精品久久九九| 亚洲综合在线中文字幕| www高清在线视频日韩欧美| 日本亚洲欧美天堂免费| 国产区日韩欧美| 99久久精品国产成人一区二区| 视频一区二区精品的福利| 国产欧美中文在线| 亚洲成年网站在线观看| 欧美 日韩 国产 在线观看| 国产久卡久卡久卡久卡视频精品| 国产95在线|亚洲| 欧美日韩高清一区二区| 中文字幕在线观看精品| 国产一二三精品| 久久久精品99| 免费在线视频一级不卡| 一级片在线播放| 国产欧美高清在线| 日韩欧美一级二级三级久久久| 日韩国产一区久久| 91吃瓜在线观看| 久久中文免费视频| 亚州福利视频| 久久久精品国产99久久精品芒果| 最近中文字幕在线中文高清版| 欧美午夜精品在线| 欧美日韩一级视频| 欧美日韩在线第一页| 日韩欧美色综合网站| 欧美日韩高清| 99精品视频99| 中文字幕 欧美 日韩| 精品日韩视频在线观看| 日韩在线视频在线观看| 日韩精品视频免费| 国内国产区免费视频| 中文字幕在线日韩| 国产在线看一区| 91精品国产综合久久久蜜臀粉嫩| 欧美日韩国产一中文字不卡| 综合激情一区| 亚洲视频日韩| 精品色蜜蜜精品视频在线观看| 最近中文字幕在线中文视频| 精品网站999www| 久久精品人妻一区二区三区| 不卡视频一区二区| 偷窥国产亚洲免费视频| 欧美日韩在线观看成人| 日韩视频中文字幕| www在线播放| 欧美日韩激情一区| 国产一区深夜福利| 一区二区高清视频| 国产导航在线| 国产成人一区二区精品非洲| 国产一区三区三区| 国产不卡一区| 国产不卡一区二区在线观看| 伊人国产视频| 国产乱国产乱300精品| 一区二区在线看| 国产中文在线播放| 免费高清特黄a大片| av一区在线观看| 一区二区三区精品久久久| 精品成人久久av| 亚洲成人7777| 国产在线日韩精品| а√天堂中文在线资源8| 日韩中文字幕视频网| 日本亚洲欧美天堂免费| 国产欧美中文在线| 又黄又www的网站| 最近中文字幕在线中文视频| 日韩欧美在线1卡| 欧美日韩在线精品一区二区三区激情综| 精品国产91乱高清在线观看| av手机天堂| 亚洲视频在线观看日本a| 日韩精品―中文字幕| 中文字幕 欧美日韩| 国产一级片播放| 日韩欧美色综合网站| 中文国产字幕在线观看| 欧美 中文字幕| 一区二区三区视频网站| 欧美高清视频一区二区三区| 日韩精品视频在线观看免费| 一区二区三区四区五区视频在线观看| 欧美日韩国产首页在线观看| 天天综合天天添夜夜添狠狠添| 日韩精品在线观看视频| 亚洲免费专区| 久久久精品免费免费| a在线观看免费视频| 91精品无人成人www| 日韩色在线观看| 国产v日产∨综合v精品视频| 国产福利一区在线观看| 阿v免费在线观看| 中文天堂在线一区| 色一区在线观看| 久久精品免费在线观看| 中文字幕日韩第一页| 日韩精品久久久| 天天综合天天综合| 99国内精品| 粉嫩粉嫩芽的虎白女18在线视频| 91精品国产91| 91精品久久久久久久91蜜桃| 在线视频第一页| 精品国内自产拍在线视频| 免费在线国产| 美女黄a一级视频| 一区在线免费| 一二三区精品福利视频| 视频在线一区二区| 欧美国产亚洲一区| 精品视频999| 91精品在线观看入口| 在线视频三区| 国产99在线 | 亚洲| 日韩亚洲一区中文字幕| 国产综合成人久久大片91| 日韩在线不卡| 欧美日韩在线国产| 国产福利免费在线观看| 精品色蜜蜜精品视频在线观看| 精品av中文字幕在线毛片| 亚洲综合三区| 国内精品露脸在线视频播放| 久久精品国产2020观看福利| 欧美日韩亚洲综合| 日韩中文字幕亚洲| 天天综合色天天| 午夜国产欧美理论在线播放| 日本一级一片免费视频| 国产黄色在线网站| 高清一区二区| 国产成人精品网址| 亚洲女人天堂色在线7777| 久久久久久自在自线| 在线观看免费国产小视频| 精品久久人人做人人爽| av首页在线| 一级片在线免费看| 日韩欧美一二三四区| 中文字幕视频在线观看| 在线一区av| 精品久久在线观看| 中文字幕在线观看亚洲| 欧美日韩国产综合视频在线观看中文| 热久久精品国产| 久久精品99国产国产精| 在线一区免费| 999精品色在线播放| 精品色蜜蜜精品视频在线观看| 日韩在线高清| 婷婷久久综合九色国产成人| 亚洲中文字幕一区| av中文资源在线| 黄色片免费在线| 欧美日韩中国免费专区在线看| 欧美中文字幕在线观看视频| 欧美日韩精品免费| 一区二区三区在线播放视频| 精品对白一区国产伦| 欧美日韩国产一区中文午夜| 日韩国产亚洲欧美| 国产综合精品在线| 午夜一区二区三区| 欧美日韩亚洲国内综合网俺| 欧美日韩精品是欧美日韩精品| 日韩在线观看视频一区| 亚洲欧美中文字幕在线观看| 中文字幕在线观看精品| 亚洲女人天堂a在线播放| 中文字幕在线视频网| 中文字幕在线日韩| 二区中文字幕| 中文字幕第一页在线| 久久99久久99精品中文字幕| 二区三区中文字幕| 欧美一级在线免费| 欧美熟妇乱码在线一区| 欧美久久在线| 欧美日韩色综合| 国产黄色片大全| 国产中文在线视频| 日韩av一区二区在线观看| 一区二区欧美国产| 日本xxxwww免费视频| 日韩久久久精品| 日韩精品视频免费| 欧美一级在线观看| 欧美日韩综合不卡| 日韩欧美综合视频| 久久91精品国产91久久小草| 欧美日韩高清在线一区| 欧美成人vr18sexvr| 中文字幕欧美日韩va免费视频| 欧美日韩国产免费观看视频| 在线视频国产三级| 日韩免费高清一区二区| 中文亚洲免费| 日韩欧美不卡视频| 日本一级一片免费视频| 99精品视频国产| 日韩欧美亚洲区| 日韩欧美一二三| 久久久久久久久99精品| 伊人国产视频| 日韩欧美999| 日本精品二区| 中文在线一区| 精产国产伦理一二三区| 亚洲三级网站| 免费看黄资源大全高清| 日韩免费精品视频| 精品福利一区二区三区| 日韩久久久精品| 在线观看中文字幕一区| 99久热re在线精彩视频| 国产不卡在线观看视频| va中文字幕| 日韩欧美中文在线视频| 日韩不卡中文字幕| 欧美日韩高清一区二区不卡| 久久综合九色欧美综合狠狠| 日韩欧美中文字幕公布| 国产欧美日韩精品在线| 亚洲综合视频一区| 日韩精品视频在线观看免费| 欧美日本精品在线| 国产乱一区二区| 欧美日韩国产免费观看| 拍真实国产伦偷精品| 91精品国产91久久久| 国产91大片| 日韩欧美在线视频日韩欧美在线视频| 91蜜桃在线视频| 91精品国产色综合久久久蜜香臀| 二区视频在线观看| 在线视频观看日韩| 欧美中文字幕在线观看视频| 久久精品久久精品国产大片| 亚洲综合日韩欧美| 91精品国产入口| 欧美日韩亚洲视频| 午夜av一区二区| 国产一级网站视频在线| 欧美日韩国产中文| 欧美日韩国产观看视频| 国产一级片在线| 91蜜桃婷婷狠狠久久综合9色| 中文字幕欧美日韩va免费视频| 国产不卡在线| 在线观看区一区二| 日韩中文字幕视频在线| 精品国产不卡一区二区| 中文字幕日韩亚洲| 国产成人精品av久久| 午夜福利一区二区三区| 在线精品日韩| 日韩欧美色综合| 久久精品在线免费观看| 久久综合久久综合九色| 91精品国产91久久久久| 日韩欧美国产黄色| 欧美日韩国产免费观看| 91精品国产亚洲| www高清在线视频日韩欧美| 中文字幕精品www乱入免费视频| 亚洲一区资源| 91久久大香伊蕉在人线| 久久久99精品久久| 日韩不卡中文字幕| 欧美日韩夫妻久久| 国产日产一区二区| 国产伦精品免费视频| 在线日韩中文字幕| 中文在线一区二区| 蜜桃精品视频| 欧美日韩激情在线一区二区三区| 日韩视频精品在线观看| 国产区日韩欧美| 99国产成 人 综合 亚洲欧美| 一区二区三区四区五区视频在线观看| 91精品国产色综合久久久蜜香臀| 亚洲一区资源| 国产精品一区二区三区免费观看| 欧美日韩国产高清| 日韩手机在线观看视频| 91精品国产99| 樱花草www在线观看| 日韩中文字幕视频网| 婷婷精品视频| 日韩中文字幕在线视频播放| 中文字幕在线导航| 日韩中文字幕视频网| 日韩欧美高清在线| 国产在线一区二区视频| 中文字幕在线观看精品| 精品一区二区三区中文字幕| 国产三级视频在线| 欧美日韩在线播放三区四区| 欧美日韩乱国产| 精品乱子伦一区二区| 国产福利免费在线观看| 欧美日韩久久不卡| 国产午夜精品视频| 欧美三级在线播放| 亚洲国产91精品在线观看| 日韩三级视频在线播放| 日韩久久精品网| 久久精品国产成人一区二区三区| 久精品在线观看| 日本一欧美一欧美一亚洲视频| 国产福利一区在线观看| 欧美日韩在线看| 国产三级第一页| 国产1卡2卡三卡四卡网站| 美女在线视频一区| 亚洲高清免费一级二级三级| 欧美日韩在线视频首页| 色综合久久六月婷婷中文字幕| 欧美 日韩 国产在线观看| 色综合久久88色综合天天免费| 亚洲永久字幕| 国产免费不卡av| 福利一区二区| 天堂在线视频中文网| 91精品国产91久久久久久三级| 日韩精品福利视频| 日韩欧美国产视频| 欧美日韩国产第一页| 一区在线免费| 国产一卡2卡3卡4卡网站免费| 日韩免费视频一区二区视频在线观看| 日韩精品视频免费播放| 精品国产99| 欧美日韩中国免费专区在线看| 黄色片网站在线| 国产不卡一区二区在线观看| 日韩中文字幕精品视频| 中文字幕综合在线| 老司机久久99久久精品播放免费| 91精品在线观看视频| 欧美精品一区二区三区在线播放| 国产成人精品免费在线| 日韩视频在线观看一区| 久久视频www| 国产资源中文字幕| 欧美日韩三级视频| 在线观看中文字幕一区| 国产中文伊人| 中文字幕国产亚洲| 一区二区三区在线不卡| 一区二区精品区| 欧美三级一区二区三区| 亚洲成a人片在线www| 日韩免费不卡avV| 久久99精品久久久久婷婷| 樱花草www在线观看| av亚洲免费| 香蕉视频亚洲一级| 国产在线日韩精品| 欧美日韩一区二区在线视频| 欧美日韩综合色| 日韩欧美一级在线| 日韩精品资源二区在线| 国产成人精品三级| 欧美1234区| 欧美日韩精品高清| 国产福利久久| 欧美1234区| 精品视频在线导航| 在线视频观看日韩| 亚洲一卡二卡在线观看| 美日韩精品免费视频| av最新网址| 国产一级网站视频在线| 免费高清特黄a大片| 成人一区二区不卡免费| 国产婷婷精品| 日韩中文字幕观看| 91精品国产自产在线| 91久久久久久久久| 日韩在线观看视频一区二区|