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

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

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

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

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

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

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

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

プロパティデフォルト説明
<PhotoBrowser> プロパティ
initbooleantrueフォトブラウザを初期化します
paramsObjectフォトブラウザパラメータを含むオブジェクト
photosarray[]写真のURLの配列、または "url"(または "html")と "caption" プロパティを持つオブジェクトの配列。
thumbsarray[]サムネイル画像のURLの配列。指定しない場合、または空の配列の場合は、サムネイルはレンダリングされません。
urlstringphotos/現在のルートとして設定されるフォトブラウザモーダルのURL
routableModalsbooleanfalse開いたフォトブラウザをルーター履歴に追加します。これにより、ルーター履歴を戻ることでフォトブラウザを閉じることができ、現在のルートをフォトブラウザモーダルに設定できます。
swiperobjectSwiperパラメータを含むオブジェクト。デフォルトでは以下の通りです。
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,
  },
},
virtualSlidesbooleantrue有効にすると、Swiperは仮想スライドを使用します。
closeByBackdropClickbooleantrue有効にすると、バックドロップをクリックするとフォトブラウザポップアップが閉じます。
expositionbooleantrueフォトブラウザをクリックしたときの露出モードの有効/無効を切り替えます。
expositionHideCaptionsbooleanfalse露出モードでキャプションも非表示にする場合はtrueに設定します。
swipeToClosebooleantrueこのパラメータが有効になっている場合、上下にスワイプしてフォトブラウザを閉じることができます。
typestringstandaloneフォトブラウザを開く方法を定義します。standalone(カスタムトランジション効果でオーバーレイとして開かれます)、popup(ポップアップとして開かれます)、page(ビューに挿入され、新しいページとしてロードされます)のいずれかになります。
themestringlightフォトブラウザのカラースキーム。lightまたはdarkのいずれかになります。
captionsThemestringキャプションのカラースキーム。これもdarkまたはlightになります。デフォルトでは "theme" パラメータと同じです。
navbarbooleantrueフォトブラウザのナビゲーションバーを削除する場合はfalseに設定します。
toolbarbooleantrueフォトブラウザのツールバーを削除する場合はfalseに設定します。
pageBackLinkTextstringBackフォトブラウザのナビゲーションバーの戻るリンクのテキスト
popupCloseLinkTextstringCloseポップアップまたはスタンドアロンとして開かれた場合のフォトブラウザのナビゲーションバーの閉じるリンクのテキスト
navbarShowCountbooleanundefinedナビゲーションバーのタイトルに「3 of 5」などのテキストを表示するかどうかを定義します。指定しない(undefined)場合、アイテムが1つ以上ある場合はこのテキストが表示されます。
navbarOfTextstringof写真のカウンターの「of」のテキスト:「3 of 5」
iconsColorstringデフォルトの色のいずれか

フォトブラウザイベント

イベント説明
<PhotoBrowser> イベント
photoBrowserOpenフォトブラウザが開かれたときにトリガーされるイベント。
photoBrowserOpenedフォトブラウザが開くアニメーションが完了した後にトリガーされるイベント。
photoBrowserCloseフォトブラウザが閉じられたときにトリガーされるイベント。
photoBrowserClosedフォトブラウザが閉じるアニメーションが完了した後にトリガーされるイベント。
photoBrowserSwipeToCloseユーザーが上下にスワイプしてフォトブラウザを閉じるときにトリガーされるイベント。

フォトブラウザメソッド

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

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

photo-browser.jsx
import React, { useRef } from 'react';
import { Navbar, Page, PhotoBrowser, Block, Button } from 'framework7-react';

export default () => {
  const standalone = useRef(null);
  const popup = useRef(null);
  const page = useRef(null);
  const standaloneDark = useRef(null);
  const popupDark = useRef(null);
  const pageDark = useRef(null);
  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',
  ];
  return (
    <Page>
      <Navbar title="Photo Browser"></Navbar>
      <Block strongIos outlineIos>
        <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>
      </Block>
      <Block strongIos outlineIos>
        <p>
          Photo Browser could be opened in a three ways - as a Standalone component (Popup
          modification), in Popup, and as separate Page:
        </p>
        <div className="grid grid-cols-3 grid-gap">
          <div>
            <PhotoBrowser photos={photos} thumbs={thumbs} ref={standalone} />
            <Button fill onClick={() => standalone.current.open()}>
              Standalone
            </Button>
          </div>
          <div>
            <PhotoBrowser photos={photos} thumbs={thumbs} type="popup" ref={popup} />
            <Button fill onClick={() => popup.current.open()}>
              Popup
            </Button>
          </div>
          <div>
            <PhotoBrowser
              photos={photos}
              thumbs={thumbs}
              type="page"
              pageBackLinkText="Back"
              ref={page}
            />
            <Button fill onClick={() => page.current.open()}>
              Page
            </Button>
          </div>
        </div>
      </Block>
      <Block strongIos outlineIos>
        <p>
          Photo Browser supports 2 default themes - default Light (like in previous examples) and
          Dark theme. Here is a Dark theme examples:
        </p>
        <div className="grid grid-cols-3 grid-gap">
          <div>
            <PhotoBrowser photos={photos} thumbs={thumbs} theme="dark" ref={standaloneDark} />
            <Button fill onClick={() => standaloneDark.current.open()}>
              Standalone
            </Button>
          </div>
          <div>
            <PhotoBrowser
              photos={photos}
              thumbs={thumbs}
              theme="dark"
              type="popup"
              ref={popupDark}
            />
            <Button fill onClick={() => popupDark.current.open()}>
              Popup
            </Button>
          </div>
          <div>
            <PhotoBrowser
              photos={photos}
              thumbs={thumbs}
              theme="dark"
              type="page"
              pageBackLinkText="Back"
              ref={pageDark}
            />
            <Button fill onClick={() => pageDark.current.open()}>
              Page
            </Button>
          </div>
        </div>
      </Block>
    </Page>
  );
};