Nhảy tới nội dung
Phiên bản: 1.8.0

Bắt đầu hỗ trợ ở phiên bản:

  • zmp-ui: 1.7.0

ImageViewer component: Component giúp tạo một gallery để xem hình ảnh với kích thước của màn hình, người dùng có thể tương tác thu phóng, chuyển hình,...

Properties

Swiper

NameTypeDefaultDescription
imagesArray<ImageType>Mảng các hình cần xem
activeIndexnumber0Hình sẽ được hiển thị khi mở ImageViewer
visiblebooleanfalseMở/Tắt ImageViewer
maskStyleCSSPropertiesThêm inline style, tuỳ chỉnh style cho lớp overlay
maskClassNamestringThêm class cho element overlay
onClosefunctionCallback function khi đóng ImageViewer

ImageType

NameTypeDefaultDescription
srcstringImage source
altstringVăn bản thay thế (alt text) cho hình ảnh

Example

import React, { useState } from "react";
import { Page, ImageViewer, Box, Text } from "zmp-ui";

const images = [
  {
    src: "https://stc-zmp.zadn.vn/zmp-zaui/images/e2e10aa1a6087a5623192.jpg",
    alt: "img 1",
    key: "1"
  },
  {
    src: "https://stc-zmp.zadn.vn/zmp-zaui/images/fee40cbea0177c4925061.jpg",
    alt: "img 2",
    key: "2"
  },
  {
    src: "https://stc-zmp.zadn.vn/zmp-zaui/images/82ca759bd932056c5c233.jpg",
    alt: "img 3",
    key: "3"
  },
  {
    src: "https://stc-zmp.zadn.vn/zmp-zaui/images/77f5b8cd1464c83a91754.jpg",
    alt: "img 4",
    key: "4"
  }
];

export default function HomePage() {
  const [visible, setVisible] = useState(false);
  const [activeIndex, setActiveIndex] = useState(0);
  return (
    <Page className='section-container'>
      <Text.Title size='small'>ImageViewer</Text.Title>
      <Box mt={6}>
        <Box>
          <Text.Title size='small'>Usage</Text.Title>
        </Box>
        <Box mt={2}>
          <Text size='xSmall' className='input-desc'>
            Khi cần xem và tương tác với hình ảnh trên kích thước lớn hơn
          </Text>
        </Box>
        <Box mt={6}>
          <Text.Title size='small'>Example</Text.Title>
        </Box>
        <Box mt={2}>
          <Box flex flexDirection='row' flexWrap='nowrap'>
            {images.map((img, index) => (
              <Box
                mr={1}
                key={img.key}
                style={{
                  width: "68px",
                  height: "69px",
                  borderRadius: "8px",
                  overflow: "hidden"
                }}
              >
                <img
                  style={{ width: "100%", height: "100%", objectFit: "cover" }}
                  role='presentation'
                  onClick={() => {
                    setActiveIndex(index);
                    setVisible(true);
                  }}
                  src={img.src}
                  alt={img.alt}
                />
              </Box>
            ))}
          </Box>
          <ImageViewer
            onClose={() => setVisible(false)}
            activeIndex={activeIndex}
            images={images}
            visible={visible}
          />
        </Box>
      </Box>
    </Page>
  );
}