# ImagePreview 图片预览 ### 介绍 支持全屏预览视频和图片,可函数式调用 ### 安装 ```javascript import { createApp, reactive, toRefs } from 'vue'; import { ImagePreview } from '@nutui/nutui'; const app = createApp(); app.use(ImagePreview); ``` ### 基础用法 ```html ``` ```javascript setup() { const resData = reactive({ showPreview: false, imgData: [ { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/18629/34/3378/144318/5c263f64Ef0e2bff0/0d650e0aa2e852ee.jpg', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/26597/30/4870/174583/5c35c5d2Ed55eedc6/50e27870c25e7a82.png', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/9542/17/12873/201687/5c3c4362Ea9eb757d/60026b40a9d60d85.jpg', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/30042/36/427/82951/5c3bfdabE3faf2f66/9adca782661c988c.jpg', }, ] }); const showFn = () => { resData.showPreview = true; } const hideFn = () => { resData.showPreview = false; } return { ...toRefs(resData), showFn, hideFn }; }, ``` ### 设置初始页码 ```html ``` ```javascript setup() { const resData = reactive({ showPreview: false, imgData: [ { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/18629/34/3378/144318/5c263f64Ef0e2bff0/0d650e0aa2e852ee.jpg', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/26597/30/4870/174583/5c35c5d2Ed55eedc6/50e27870c25e7a82.png', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/9542/17/12873/201687/5c3c4362Ea9eb757d/60026b40a9d60d85.jpg', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/30042/36/427/82951/5c3bfdabE3faf2f66/9adca782661c988c.jpg', }, ] }); const showFn = () => { resData.showPreview = true; } const hideFn = () => { resData.showPreview = false; } return { ...toRefs(resData), showFn, hideFn }; }, ``` ### 设置轮播指示器及颜色 ```html ``` ```javascript setup() { const resData = reactive({ showPreview: false, imgData: [ { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/18629/34/3378/144318/5c263f64Ef0e2bff0/0d650e0aa2e852ee.jpg', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/26597/30/4870/174583/5c35c5d2Ed55eedc6/50e27870c25e7a82.png', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/9542/17/12873/201687/5c3c4362Ea9eb757d/60026b40a9d60d85.jpg', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/30042/36/427/82951/5c3bfdabE3faf2f66/9adca782661c988c.jpg', }, ] }); const showFn = () => { resData.showPreview = true; } const hideFn = () => { resData.showPreview = false; } return { ...toRefs(resData), showFn, hideFn }; }, ``` ### 视频、图片预览 ```html ``` ```javascript setup() { const resData = reactive({ showPreview: false, imgData: [ { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/18629/34/3378/144318/5c263f64Ef0e2bff0/0d650e0aa2e852ee.jpg', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/26597/30/4870/174583/5c35c5d2Ed55eedc6/50e27870c25e7a82.png', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/9542/17/12873/201687/5c3c4362Ea9eb757d/60026b40a9d60d85.jpg', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/30042/36/427/82951/5c3bfdabE3faf2f66/9adca782661c988c.jpg', }, ], videoData: [ { source: { src: 'https://storage.jd.com/about/big-final.mp4?Expires=3730193075&AccessKey=3LoYX1dQWa6ZXzQl&Signature=ViMFjz%2BOkBxS%2FY1rjtUVqbopbJI%3D', type: 'video/mp4' }, options: { muted: true, controls: true } }, { source: { src: 'https://storage.jd.com/about/big-final.mp4?Expires=3730193075&AccessKey=3LoYX1dQWa6ZXzQl&Signature=ViMFjz%2BOkBxS%2FY1rjtUVqbopbJI%3D', type: 'video/mp4' }, options: { muted: true, controls: true } } ], }); const showFn = () => { resData.showPreview = true; } const hideFn = () => { resData.showPreview = false; } return { ...toRefs(resData), showFn, hideFn }; }, ``` ### 函数式调用 ```html ``` ```javascript import { ImagePreview } from '@nutui/nutui'; export default { setup() { const resData = reactive({ imgData: [ { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/18629/34/3378/144318/5c263f64Ef0e2bff0/0d650e0aa2e852ee.jpg', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/26597/30/4870/174583/5c35c5d2Ed55eedc6/50e27870c25e7a82.png', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/9542/17/12873/201687/5c3c4362Ea9eb757d/60026b40a9d60d85.jpg', }, { src: '//m.360buyimg.com/mobilecms/s750x366_jfs/t1/30042/36/427/82951/5c3bfdabE3faf2f66/9adca782661c988c.jpg', }, ] }); const onClose = () => { console.log('imagepreview closed'); }; const fnShow = () => { ImagePreview({ show: true, images: resData.imgData, onClose }) }; return { ...toRefs(resData), fnShow }; }, } ``` ### Props | 字段 | 说明 | 类型 | 默认值 |----- | ----- | ----- | ----- | show | 是否展示预览图片 | Boolean | false | videos | 预览的视频数组(视频自动放到图片之前) | Array<`Object`> | [] | images | 预览图片数组 | Array<`String`> | [] | autoplay | 自动轮播时长,0表示不会自动轮播 | Number、String | 3000 | | init-no | 初始页码 | Number | 1 | pagination-visible | 分页指示器是否展示 | Boolean | false | | pagination-color | 分页指示器选中的颜色 | String | '#fff' | | content-close | 点击图片可以退出预览 | Boolean | false | ### Events |字段|说明|回调参数| |--|--|--| |close|点击遮罩关闭图片预览时触发|无|