照片瀏覽器
相片瀏覽器是一個相片瀏覽器元件,用於顯示相片/影像的集合。相片可以縮放和平移(選用)。
相片瀏覽器使用 Swiper Slider 元件在相片之間滑動。
相片瀏覽器應用程式方法
讓我們看看相關的應用程式方法,以使用相片瀏覽器
app.photoBrowser.create(參數)- 建立相片瀏覽器執行個體
- 參數 - 物件。具有相片瀏覽器參數的物件
方法傳回已建立的相片瀏覽器的執行個體
app.photoBrowser.destroy(el)- 銷毀相片瀏覽器執行個體
- el - HTMLElement 或 字串(帶有 CSS 選擇器)或 物件。要銷毀的相片瀏覽器元素或相片瀏覽器執行個體。
app.photoBrowser.get(el)- 透過 HTML 元素取得相片瀏覽器執行個體
- el - HTMLElement 或 字串(帶有 CSS 選擇器)。相片瀏覽器元素。
方法傳回相片瀏覽器的執行個體
例如
var photoBrowser = app.photoBrowser.create({
photos: [
'path/to/photo-1.jpg',
'path/to/photo-2.jpg'
],
});
相片瀏覽器參數
讓我們看看所有可用的相片瀏覽器參數清單
參數 | 類型 | 預設值 | 描述 |
---|---|---|---|
相片 | 陣列 | [] | 包含相片 URL 的陣列,或包含「url」(或「html」)和「標題」屬性的物件陣列。 |
縮圖 | 陣列 | [] | 包含縮圖影像 URL 的陣列。如果未指定或陣列為空,則不會渲染縮圖 |
展示 | 布林值 | true | 點選相片瀏覽器時啟用或停用展示模式。 |
展示隱藏標題 | 布林值 | false | 如果您也想要在展示模式中隱藏標題,請設定為 true |
向上滑動關閉 | 布林值 | true | 當啟用此參數時,您可以向上/向下滑動來關閉相片瀏覽器 |
快顯推播 | 布林值 | false | 啟用相片瀏覽器快顯視窗,以在開啟時推播後面的檢視/畫面 |
可路由的視窗 | 布林值 | false | 會將開啟的相片瀏覽器新增至路由記錄,這使得能夠透過在路由記錄中返回來關閉相片瀏覽器,並將目前的路由設定為相片瀏覽器視窗 |
網址 | 字串 | 相片/ | 相片瀏覽器視窗網址,將會設定為目前的路由 |
檢視 | 物件 | 如果你想使用「頁面」相片瀏覽器類型,或在啟用 routableModals 時設定路由的位置,請連結到已初始化的檢視實例。預設情況下,如果未指定,它將在主檢視中開啟。 | |
類型 | 字串 | 獨立 | 定義相片瀏覽器開啟的方式。可以是 獨立 (將以自訂轉場效果作為疊加層開啟)、快顯視窗 (將作為 快顯視窗 開啟)、頁面 (將注入檢視並載入為新頁面)。 |
佈景主題 | 字串 | 淺色 | 相片瀏覽器色彩主題,可以是 淺色 或 深色 |
說明文字主題 | 字串 | 說明文字色彩主題,也可以是 淺色 或 深色 。預設情況下,等於 佈景主題 參數 | |
導覽列 | 布林值 | true | 設為 false 以移除相片瀏覽器的導覽列 |
工具列 | 布林值 | true | 設為 false 以移除相片瀏覽器的工具列 |
頁面返回連結文字 | 字串 | 返回 | 相片瀏覽器導覽列中返回連結的文字 |
快顯視窗關閉連結文字 | 字串 | 關閉 | 在快顯視窗中或作為獨立項目開啟時,相片瀏覽器導覽列中關閉連結的文字 |
導覽列顯示計數 | 布林值 | 未定義 | 定義是否在導覽列標題中顯示「5 個中的 3 個」文字。如果未指定(未定義),則在有超過 1 個項目時顯示此文字 |
導覽列「的」文字 | 字串 | 「的」 | 相片計數器中「的」文字:「5 個中的 3 個」 |
圖示顏色 | 字串 | 預設顏色 之一 | |
Swiper | 物件 | Swiper 參數。預設情況下等於
| |
虛擬投影片 | 布林值 | true | 啟用時,Swiper 將使用虛擬投影片 |
按背景關閉 | 布林值 | true | 啟用時,相片瀏覽器快顯視窗將在按一下背景時關閉 |
呈現功能 | |||
呈現導覽列 | 函式 | 呈現導覽列的函式,必須傳回導覽列 HTML 字串 | |
呈現工具列 | 函式 | 呈現工具列的函式,必須傳回工具列 HTML 字串 | |
呈現說明文字 | 函式(說明文字、索引) | 呈現單一說明文字的函式,必須傳回說明文字 HTML 字串 | |
呈現物件 | 函式(相片、索引) | 呈現相片物件的函式,必須傳回相片物件 HTML 字串 | |
呈現延遲載入相片 | 函式(相片、索引) | 呈現延遲載入相片投影片的函式,必須傳回投影片 HTML 字串 | |
呈現相片 | 函式(相片、索引) | 呈現相片為 Swiper 投影片的函式,必須傳回投影片 HTML 字串 | |
呈現頁面 | 函式 | 呈現相片瀏覽器頁面的函式,必須傳回完整頁面 HTML 版面字串 | |
呈現快顯視窗 | 函式 | 呈現相片瀏覽器快顯視窗的函式,必須傳回完整快顯視窗 HTML 版面字串 | |
呈現獨立 | 函式 | 用於呈現獨立模式的照片瀏覽器函數,必須傳回完整的模式 HTML 佈局字串 | |
事件 | |||
on | 物件 | 包含事件處理常式的物件。例如
|
請注意,所有下列參數都可以在 `photoBrowser` 屬性下的全域應用程式參數中使用,以設定所有照片瀏覽器的預設值。例如
var app = new Framework7({
photoBrowser: {
type: 'popup',
}
});
照片陣列
當我們初始化照片瀏覽器時,我們需要在 `photos` 參數中傳遞包含照片/影片的陣列。讓我們看看這個陣列的不同變化
// If we need photo browser with just photos we may pass array with string urls:
var photos = [
'image1.jpg',
'image2.jpg',
'image3.jpg',
'image4.jpg',
];
//If we need to use caption for some of photos then each photo should be presented as object:
var photos = [
{
url: 'image1.jpg',
caption: 'Caption 1'
},
{
url: 'image2.jpg',
caption: 'Second Caption'
},
// This one will be without caption
{
url: 'image3.jpg',
},
// This one will be also without caption
'image4.jpg'
];
//If we need to use videos in some slides we need to pass HTML element of video element or iframe within "html" property:
var photos = [
{
url: 'image1.jpg',
caption: 'Caption 1'
},
// Video element with caption
{
html: '<video src="video1.mp4"></video>',
caption: 'Video Caption'
},
// This one is embedded video without caption
{
html: '<iframe src="..."></iframe>',
},
// This one will be also video without caption
'<video src="video2.mp4"></video>'
];
照片瀏覽器方法和屬性
初始化照片瀏覽器後,我們在變數中擁有其初始化的執行個體(如上面範例中的 `photoBrowser` 變數),包含有用的方法和屬性
屬性 | |
---|---|
photoBrowser.app | 連結到全域應用程式執行個體 |
photoBrowser.el | 照片瀏覽器 HTML 元素 |
photoBrowser.$el | 包含照片瀏覽器 HTML 元素的 Dom7 執行個體 |
photoBrowser.activeIndex | 目前活動照片投影片的索引編號 |
photoBrowser.exposed | 如果照片瀏覽器處於展示模式,則為 `true` |
photoBrowser.opened | 如果照片瀏覽器目前已開啟,則為 `true` |
photoBrowser.url | 照片瀏覽器 URL(在 `url` 參數中傳遞) |
photoBrowser.view | 照片瀏覽器檢視(在 `view` 參數中傳遞)或找到父檢視 |
photoBrowser.swiper | 包含已初始化的 Swiper 執行個體,以及所有可用的 Swiper 方法和屬性 |
photoBrowser.params | 包含初始化參數的物件 |
方法 | |
photoBrowser.open(index) | 在索引編號等於「index」參數的照片上開啟照片瀏覽器。如果未指定「index」參數,它將在最後一次關閉的照片上開啟。 |
photoBrowser.close() | 關閉照片瀏覽器 |
photoBrowser.expositionToggle() | 切換展示模式 |
photoBrowser.expositionEnable() | 啟用展示模式 |
photoBrowser.expositionDisable() | 停用展示模式 |
photoBrowser.destroy() | 銷毀照片瀏覽器執行個體 |
photoBrowser.on(event, handler) | 新增事件處理常式 |
photoBrowser.once(event, handler) | 新增事件處理常式,它將在觸發後移除 |
photoBrowser.off(event, handler) | 移除事件處理常式 |
photoBrowser.off(event) | 移除指定事件的所有處理常式 |
photoBrowser.emit(event, ...args) | 在執行個體上觸發事件 |
照片瀏覽器事件
相片瀏覽器將在相片瀏覽器元素上觸發下列 DOM 事件,以及在應用程式和相片瀏覽器實例上觸發事件
DOM 事件
事件 | 目標 | 描述 |
---|---|---|
photobrowser:open | 相片瀏覽器元素 | 當相片瀏覽器開始其開啟動畫時,將觸發事件 |
photobrowser:opened | 相片瀏覽器元素 | 當相片瀏覽器完成其開啟動畫後,將觸發事件 |
photobrowser:close | 相片瀏覽器元素 | 當相片瀏覽器開始其關閉動畫時,將觸發事件 |
photobrowser:closed | 相片瀏覽器元素 | 當相片瀏覽器完成其關閉動畫後,將觸發事件 |
photobrowser:beforedestroy | 相片瀏覽器元素 | 在相片瀏覽器實例即將被銷毀之前,將觸發事件 |
應用程式和相片瀏覽器實例事件
相片瀏覽器實例在自身實例和應用程式實例上發出事件。應用程式實例事件具有相同名稱,並加上 photoBrowser
前綴。
事件 | 目標 | 描述 |
---|---|---|
向上滑動關閉 | photoBrowser | 當使用者以向上/向下滑動的方式關閉相片瀏覽器時,將觸發事件。 |
tap | photoBrowser | Swiper 事件。當使用者點選/輕觸 Swiper 時,將觸發事件。接收「touchend」事件作為引數。 |
click | photoBrowser | Swiper 事件。當使用者點選/輕觸 Swiper 時,將觸發事件。接收「touchend」事件作為引數。 |
doubleTap | photoBrowser | Swiper 事件。當使用者在 Swiper 的容器上雙擊時,將觸發事件。接收「touchend」事件作為引數 |
doubleClick | photoBrowser | Swiper 事件。當使用者在 Swiper 的容器上雙擊時,將觸發事件。接收「touchend」事件作為引數 |
slideChange | photoBrowser | Swiper 事件。當目前活動的投影片變更時,將觸發事件 |
transitionStart | photoBrowser | Swiper 事件。在轉場開始時,將觸發事件。 |
transitionEnd | photoBrowser | Swiper 事件。在轉場後,將觸發事件。 |
slideChangeTransitionStart | photoBrowser | Swiper 事件。在動畫開始到其他投影片(下一個或上一個)時,將觸發事件。 |
slideChangeTransitionEnd | photoBrowser | Swiper 事件。在動畫到其他投影片(下一個或上一個)後,將觸發事件。 |
lazyImageLoad | photoBrowser | Swiper 事件。在圖像的延遲載入開始時,將觸發事件 |
lazyImageReady | photoBrowser | Swiper 事件。當延遲載入的圖像載入時,將觸發事件 |
touchStart | photoBrowser | Swiper 事件。當使用者觸控 Swiper 時觸發事件。接收 'touchstart' 事件作為參數。 |
touchMoveOpposite | photoBrowser | Swiper 事件。當使用者觸控並將手指在與 direction 參數相反的方向上移動 Swiper 時觸發事件。接收 'touchmove' 事件作為參數。 |
touchEnd | photoBrowser | Swiper 事件。當使用者釋放 Swiper 時觸發事件。接收 'touchend' 事件作為參數。 |
open | photoBrowser | 當相片瀏覽器開始其開啟動畫時觸發事件。事件處理常式接收相片瀏覽器實例作為參數 |
photoBrowserOpen | app | |
opened | photoBrowser | 當相片瀏覽器完成其開啟動畫後觸發事件。事件處理常式接收相片瀏覽器實例作為參數 |
photoBrowserOpened | app | |
close | photoBrowser | 當相片瀏覽器開始其關閉動畫時觸發事件。事件處理常式接收相片瀏覽器實例作為參數 |
photoBrowserClose | app | |
closed | photoBrowser | 當相片瀏覽器完成其關閉動畫後觸發事件。事件處理常式接收相片瀏覽器實例作為參數 |
photoBrowserClosed | app | |
beforeDestroy | photoBrowser | 當相片瀏覽器實例即將被銷毀之前觸發事件。事件處理常式接收相片瀏覽器實例作為參數 |
photoBrowserBeforeDestroy | app |
CSS 變數
以下是相關 CSS 變數 (CSS 自訂屬性) 清單。
:root {
--f7-photobrowser-bg-color: #fff;
--f7-photobrowser-bars-bg-color: rgba(var(--f7-bars-bg-color-rgb), 0.95);
--f7-photobrowser-bars-text-color: var(--f7-bars-text-color);
--f7-photobrowser-bars-link-color: var(--f7-bars-link-color);
--f7-photobrowser-caption-font-size: 13px;
--f7-photobrowser-caption-font-weight: 500;
--f7-photobrowser-caption-light-text-color: #000;
--f7-photobrowser-caption-dark-text-color: #fff;
--f7-photobrowser-exposed-bg-color: #000;
--f7-photobrowser-dark-bg-color: #000;
--f7-photobrowser-dark-bars-bg-color: rgba(27, 27, 27, 0.8);
--f7-photobrowser-dark-bars-text-color: #fff;
--f7-photobrowser-dark-bars-link-color: #fff;
}
範例
photo-browser.html
<template>
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner sliding">
<div class="title">Photo Browser</div>
</div>
</div>
<div class="page-content">
<div class="block block-strong-ios block-outline-ios">
<p>Photo Browser is a standalone and highly configurable component that allows to open window with photo viewer
and navigation elements with the following features:</p>
<ul>
<li>Swiper between photos</li>
<li>Multi-gestures support for zooming</li>
<li>Toggle zoom by double tap on photo</li>
<li>Single click on photo to toggle Exposition mode</li>
</ul>
</div>
<div class="block block-strong-ios block-outline-ios">
<p>Photo Browser could be opened in a three ways - as a Standalone component (Popup modification), in Popup, and
as separate Page:</p>
<div class="grid grid-cols-3 grid-gap">
<a class="button button-fill" @click=${openStandalone}>Standalone</a>
<a class="button button-fill" @click=${openPopup}>Popup</a>
<a class="button button-fill" @click=${openPage}>Page</a>
</div>
</div>
<div class="block block-strong-ios block-outline-ios">
<p>Photo Browser supports 2 default themes - default Light (like in previous examples) and Dark theme. Here is a
Dark theme examples:</p>
<div class="grid grid-cols-3 grid-gap">
<a class="button button-fill" @click=${openStandaloneDark}>Standalone</a>
<a class="button button-fill" @click=${openPopupDark}>Popup</a>
<a class="button button-fill" @click=${openPageDark}>Page</a>
</div>
</div>
</div>
</div>
</template>
<script>
export default (props, { $f7, $on }) => {
const photos = [
{
url: 'img/beach.jpg',
caption: 'Amazing beach in Goa, India'
},
'http://placekitten.com/1024/1024',
'img/lock.jpg',
{
url: 'img/monkey.jpg',
caption: 'I met this monkey in Chinese mountains'
},
{
url: 'img/mountains.jpg',
caption: 'Beautiful mountains in Zhangjiajie, China'
}
];
const thumbs = [
'img/beach.jpg',
'http://placekitten.com/1024/1024',
'img/lock.jpg',
'img/monkey.jpg',
'img/mountains.jpg'
]
let standalone;
let popup;
let page;
let standaloneDark;
let popupDark;
let pageDark;
const openStandalone = () => {
standalone.open();
}
const openPopup = () => {
popup.open();
}
const openPage = () => {
page.open();
}
const openStandaloneDark = () => {
standaloneDark.open();
}
const openPopupDark = () => {
popupDark.open();
}
const openPageDark = () => {
pageDark.open();
}
$on('pageInit', () => {
// Create PBs when page init
standalone = $f7.photoBrowser.create({
photos: photos,
thumbs: thumbs,
});
popup = $f7.photoBrowser.create({
photos: photos,
thumbs: thumbs,
type: 'popup',
});
page = $f7.photoBrowser.create({
photos: photos,
thumbs: thumbs,
type: 'page',
backLinkText: 'Back',
});
standaloneDark = $f7.photoBrowser.create({
photos: photos,
thumbs: thumbs,
theme: 'dark',
});
popupDark = $f7.photoBrowser.create({
photos: photos,
thumbs: thumbs,
type: 'popup',
theme: 'dark',
});
pageDark = $f7.photoBrowser.create({
photos: photos,
thumbs: thumbs,
type: 'page',
backLinkText: 'Back',
theme: 'dark',
});
});
$on('pageBeforeRemove', () => {
// Destroy PBs on page remove
standalone.destroy();
popup.destroy();
page.destroy();
standaloneDark.destroy();
popupDark.destroy();
pageDark.destroy();
});
return $render;
};
</script>