照片浏览器 Svelte 组件

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

照片浏览器 Svelte 组件代表 Framework7 的 照片浏览器 组件。

照片浏览器 Svelte 组件不渲染任何输出。它可用于创建 JS 照片浏览器实例并在您的 Svelte 组件中对其进行控制。

照片浏览器组件

以下组件包括在内

照片浏览器属性

您可以在单个 params 属性中传递所有参数,或者为每个参数使用单独的 props 通过组件属性指定它们

属性类型默认值描述
<PhotoBrowser> 属性
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(将注入视图并作为新页面加载)。
theme字符串light照片浏览器颜色主题,可以是 lightdark
captionsTheme字符串标题颜色主题,也可以是 darklight。默认情况下,等于 "theme" 参数
navbar布尔值true设置为 false 以移除照片浏览器的导航栏
toolbar布尔值true设置为 false 以移除照片浏览器的工具栏
pageBackLinkText字符串返回照片浏览器导航栏中返回链接上的文本
popupCloseLinkText字符串关闭在弹出窗口或独立打开时,照片浏览器导航栏中关闭链接上的文本
navbarShowCount布尔值未定义定义是否在导航栏标题中显示 "3 of 5" 文本。如果未指定(未定义),则将在有多于 1 个项目时显示此文本
navbarOfText字符串of照片计数器中 "of" 的文本:"3 of 5"
iconsColor字符串其中一种 默认颜色

照片浏览器事件

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

照片浏览器方法

以下照片浏览器组件方法可用(例如,通过访问 bind:this 来访问)

<PhotoBrowser> 方法
.open(index)在索引号等于 "index" 参数的照片上打开照片浏览器。如果未指定 "index" 参数,它将在最后关闭的照片上打开。
.close()关闭照片浏览器
.expositionToggle()切换曝光模式
.expositionEnable()启用曝光模式
.expositionDisable()禁用曝光模式

访问照片浏览器实例

您可以通过调用 .instance() 组件方法来访问初始化的照片浏览器实例。例如

<PhotoBrowser bind:this={component}>...</PhotoBrowser>

<script>
  let component;

  // to get instance in some method
  component.instance()
</script>

示例

photo-browser.svelte
<script>
  import { Navbar, Page, PhotoBrowser, Block, Button } from 'framework7-svelte';

  let standalone;
  let popup;
  let page;

  let standaloneDark;
  let popupDark;
  let pageDark;

  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',
  ];
</script>

<Page>
  <Navbar title="Photo Browser" />
  <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 class="grid grid-cols-3 grid-gap">
      <div>
        <PhotoBrowser {photos} {thumbs} bind:this={standalone} />
        <Button fill onClick={() => standalone.open()}>Standalone</Button>
      </div>
      <div>
        <PhotoBrowser {photos} {thumbs} type="popup" bind:this={popup} />
        <Button fill onClick={() => popup.open()}>Popup</Button>
      </div>
      <div>
        <PhotoBrowser {photos} {thumbs} type="page" pageBackLinkText="Back" bind:this={page} />
        <Button fill onClick={() => page.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 class="grid grid-cols-3 grid-gap">
      <div>
        <PhotoBrowser {photos} {thumbs} theme="dark" bind:this={standaloneDark} />
        <Button fill onClick={() => standaloneDark.open()}>Standalone</Button>
      </div>
      <div>
        <PhotoBrowser {photos} {thumbs} theme="dark" type="popup" bind:this={popupDark} />
        <Button fill onClick={() => popupDark.open()}>Popup</Button>
      </div>
      <div>
        <PhotoBrowser
          {photos}
          {thumbs}
          theme="dark"
          type="page"
          pageBackLinkText="Back"
          bind:this={pageDark}
        />
        <Button fill onClick={() => pageDark.open()}>Page</Button>
      </div>
    </div>
  </Block>
</Page>