图片浏览器 React 组件

图片浏览器是一个图片浏览器组件,用于显示图片/图像的集合。图片可以放大和缩小(可选)。

图片浏览器 React 组件代表 Framework7 的 图片浏览器 组件。

图片浏览器 React 组件不会渲染任何输出。它可以用于创建 JS 图片浏览器实例并在 React 组件中控制它。

图片浏览器组件

以下组件已包含

图片浏览器属性

您可以将所有参数传递到单个 params 属性中,也可以为每个参数使用单独的属性,通过组件属性指定它们。

属性类型默认值描述
<图片浏览器> 属性
init布尔值true初始化图片浏览器
params对象包含 图片浏览器参数 的对象
photos数组[]包含图片 URL 的数组,或包含 "url"(或 "html")和 "caption" 属性的对象数组。
thumbs数组[]包含缩略图 URL 的数组。如果未指定或为空数组,则不会渲染缩略图
url字符串photos/将设置为当前路由的图片浏览器模态 URL
routableModals布尔值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,
  },
},
virtualSlides布尔值true启用后,Swiper 将使用虚拟幻灯片
closeByBackdropClick布尔值true启用后,点击背景时会关闭图片浏览器弹出窗口
exposition布尔值true点击图片浏览器时启用或禁用曝光模式。
expositionHideCaptions布尔值false如果也希望在曝光模式下隐藏标题,则设置为 true
swipeToClose布尔值true启用此参数后,您可以通过向上/向下滑动来关闭图片浏览器
type字符串standalone定义图片浏览器如何打开。可以是 standalone(将作为带有自定义过渡效果的叠加层打开)、popup(将作为弹出窗口打开)、page(将被注入到 View 中并作为新页面加载)。
theme字符串light图片浏览器的颜色主题,可以是 lightdark
captionsTheme字符串标题的颜色主题,也可以是 darklight。默认情况下,等于 "theme" 参数
navbar布尔值true设置为 false 以删除图片浏览器的导航栏
toolbar布尔值true设置为 false 以删除图片浏览器的工具栏
pageBackLinkText字符串返回图片浏览器导航栏中返回链接的文字
popupCloseLinkText字符串关闭当以弹出窗口或独立模式打开时,图片浏览器导航栏中关闭链接的文字
navbarShowCount布尔值undefined定义是否在导航栏标题中显示 "3 of 5" 文本。如果没有指定(undefined),则当存在多个项目时会显示此文本
navbarOfText字符串of图片计数器中 "of" 的文本:"3 of 5"
iconsColor字符串以下其中一种 默认颜色

图片浏览器事件

事件描述
<图片浏览器> 事件
photoBrowserOpen事件将在图片浏览器打开时触发。
photoBrowserOpened事件将在图片浏览器完成其打开动画后触发
photoBrowserClose事件将在图片浏览器关闭时触发。
photoBrowserClosed事件将在图片浏览器完成其关闭动画后触发
photoBrowserSwipeToClose当用户通过向上/向下滑动关闭图片浏览器时,将触发此事件。

图片浏览器方法

以下图片浏览器组件方法可用(例如,通过访问 ref 来访问它)

<图片浏览器> 方法
.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>
  );
};