フォトブラウザ Vue コンポーネント

フォトブラウザは、写真/画像のコレクションを表示するためのフォトブラウザコンポーネントです。写真はズームとパンできます(オプション)。

フォトブラウザ Vue コンポーネントは、Framework7 の フォトブラウザ コンポーネントを表します。

フォトブラウザ Vue コンポーネントは、出力データをレンダリングしません。JS フォトブラウザインスタンスを作成し、Vue コンポーネント内で制御するために使用できます。

フォトブラウザコンポーネント

以下のコンポーネントが含まれています

フォトブラウザのプロパティ

すべての parameters を単一の params プロパティで渡すか、各 parameter に個別の props を使用してコンポーネントプロパティを介して指定できます。

プロパティデフォルト説明
<f7-photo-browser> プロパティ
initブール値trueフォトブラウザを初期化します
paramsオブジェクトフォトブラウザのパラメータを含むオブジェクト
photos配列[]写真のURLの配列、または "url"(または "html")と "caption" プロパティを持つオブジェクトの配列。
thumbs配列[]サムネイル画像のURLの配列。指定されていない場合、または空の配列の場合は、サムネイルはレンダリングされません。
url文字列photos/現在のルートとして設定されるフォトブラウザモーダルのURL
routable-modalsブール値false開いたフォトブラウザをルーター履歴に追加します。これにより、ルーター履歴を戻ることでフォトブラウザを閉じることができ、現在のルートをフォトブラウザモーダルに設定できます。
swiperオブジェクトSwiperパラメータを含むオブジェクト。デフォルトでは以下の通りです。
swiper: {
  initialSlide: 0,
  spaceBetween: 20,
  speed: 300,
  loop: false,
  preloadImages: true,
  keyboard: {
    enabled: true,
  },
  navigation: {
    nextEl: '.photo-browser-next',
    prevEl: '.photo-browser-prev',
  },
  zoom: {
    enabled: true,
    maxRatio: 3,
    minRatio: 1,
  },
  lazy: {
    enabled: true,
  },
},
virtual-slidesブール値true有効にすると、Swiperはバーチャルスライドを使用します。
close-by-backdrop-clickブール値true有効にすると、バックドロップをクリックするとフォトブラウザポップアップが閉じられます。
expositionブール値trueフォトブラウザをクリックしたときの露出モードを有効/無効にします。
exposition-hide-captionsブール値false露出モードでキャプションも非表示にする場合はtrueに設定します。
swipe-to-closeブール値trueこのパラメータが有効になっている場合、上/下へスワイプしてフォトブラウザを閉じることができます。
type文字列standaloneフォトブラウザを開く方法を定義します。standalone(カスタムトランジション効果でオーバーレイとして開かれます)、popup(ポップアップとして開かれます)、page(ビューに挿入され、新しいページとしてロードされます)。
theme文字列lightフォトブラウザのカラースキーム。lightまたはdarkです。
captions-theme文字列キャプションのカラースキーム。darkまたはlightです。デフォルトでは "theme" パラメータと同じです。
navbarブール値trueフォトブラウザのナビゲーションバーを削除するにはfalseに設定します。
toolbarブール値trueフォトブラウザのツールバーを削除するにはfalseに設定します。
page-back-link-text文字列戻るフォトブラウザのナビゲーションバーの戻るリンクのテキスト
popup-close-link-text文字列閉じるポップアップまたはスタンドアロンとして開いた場合のフォトブラウザのナビゲーションバーの閉じるリンクのテキスト
navbar-show-countブール値未定義ナビゲーションバーのタイトルに「5枚中3枚」というテキストを表示するかどうかを定義します。指定されていない場合(未定義)、アイテムが1つ以上ある場合はこのテキストが表示されます。
navbar-of-text文字列写真のカウンターの「の」のテキスト:「5枚中3枚」
icons-color文字列デフォルトの色のいずれか

フォトブラウザのイベント

イベント説明
<f7-photo-browser> イベント
photobrowser:openフォトブラウザが開かれたときにトリガーされるイベント。
photobrowser:openedフォトブラウザが開くアニメーションが完了した後にトリガーされるイベント。
photobrowser:closeフォトブラウザが閉じられたときにトリガーされるイベント。
photobrowser:closedフォトブラウザが閉じるアニメーションが完了した後にトリガーされるイベント。
photobrowser:swipetocloseユーザーが上/下へスワイプしてフォトブラウザを閉じるときにトリガーされるイベント。

フォトブラウザのメソッド

以下のフォトブラウザコンポーネントのメソッドが使用できます(例:$refsを介してアクセス)。

<f7-photo-browser> メソッド
.open(index)"index" パラメータに等しいインデックス番号の写真でフォトブラウザを開きます。"index" パラメータが指定されていない場合、最後に閉じられた写真で開きます。
.close()フォトブラウザを閉じます。
.expositionToggle()露出モードを切り替えます。
.expositionEnable()露出モードを有効にします。
.expositionDisable()露出モードを無効にします。

photo-browser.vue
<template>
  <f7-page>
    <f7-navbar title="Photo Browser"></f7-navbar>
    <f7-block strong-ios 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>
    </f7-block>
    <f7-block strong-ios 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">
        <div>
          <f7-photo-browser ref="standalone" :photos="photos" :thumbs="thumbs" />
          <f7-button fill @click="$refs.standalone.open()">Standalone</f7-button>
        </div>
        <div>
          <f7-photo-browser ref="popup" :photos="photos" :thumbs="thumbs" type="popup" />
          <f7-button fill @click="$refs.popup.open()">Popup</f7-button>
        </div>
        <div>
          <f7-photo-browser
            ref="page"
            :photos="photos"
            :thumbs="thumbs"
            type="page"
            page-back-link-text="Back"
          />
          <f7-button fill @click="$refs.page.open()">Page</f7-button>
        </div>
      </div>
    </f7-block>
    <f7-block strong-ios 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">
        <div>
          <f7-photo-browser ref="standaloneDark" :photos="photos" :thumbs="thumbs" theme="dark" />
          <f7-button fill @click="$refs.standaloneDark.open()">Standalone</f7-button>
        </div>
        <div>
          <f7-photo-browser
            ref="popupDark"
            :photos="photos"
            :thumbs="thumbs"
            theme="dark"
            type="popup"
          />
          <f7-button fill @click="$refs.popupDark.open()">Popup</f7-button>
        </div>
        <div>
          <f7-photo-browser
            ref="pageDark"
            :photos="photos"
            :thumbs="thumbs"
            theme="dark"
            type="page"
            page-back-link-text="Back"
          />
          <f7-button fill @click="$refs.pageDark.open()">Page</f7-button>
        </div>
      </div>
    </f7-block>
  </f7-page>
</template>
<script>
import { f7Navbar, f7Page, f7PhotoBrowser, f7Block, f7Button } from 'framework7-vue';

export default {
  components: {
    f7Navbar,
    f7Page,
    f7PhotoBrowser,
    f7Block,
    f7Button,
  },
  data() {
    return {
      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',
        },
      ],
      thumbs: [
        'img/beach.jpg',
        'http://placekitten.com/1024/1024',
        'img/lock.jpg',
        'img/monkey.jpg',
        'img/mountains.jpg',
      ],
    };
  },
};
</script>