Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

vue-img-viewr

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vue-img-viewr

vue图片查看组件(vue image viewer component),with vue@3.x

  • 2.0.11
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
15
increased by7.14%
Maintainers
1
Weekly downloads
 
Created
Source

vue-img-viewr

npm package

❗ vue图片查看组件(vue image viewer component),2.x版本为vue@3.x组件

❗ 如需在vue@2.x中使用,请使用 vue-img-viewr@1.0.9,Github v1.x地址 github 1.x
yarn add vue-img-viewr@^1.0.9
npm i vue-img-viewr@^1.0.9 -S

示例

demo展示

vue-img-viewr

用法

# 安装依赖
yarn add vue-img-viewr
# or
npm i vue-img-viewr -S

使用,SPA,非SSR

/**
 * 一、推荐🔥全局js方式引入
 */
import Vue from 'vue'
import { showImages } from 'vue-img-viewr'
import 'vue-img-viewr/styles/index.css'

const app = createApp(App)
app.config.globalProperties.$showImages = showImages
app.mount('#app')

/** 使用 **/
const appContext = getCurrentInstance()?.appContext as AppContext
const showImagesByJs: (i: number) => void = i => {
  appContext.config.globalProperties.$showImages({
    urls: images,
    index: i,
    onSwitch: (i: number) => void = i => {
      console.log(`current image index: ${i}`)
    },
    onShow: (isShow: boolean) => void = isShow => {
      console.log(`component is show: ${isShow}`)
    },
    onClose: () => {
      console.log('closed')
    }
  })
}

/** 
 * 注册全局组件
 */
import ImgViewr from 'vue-img-viewr'
import 'vue-img-viewr/styles/index.css'

const app = createApp(App)

// 等同于
// app.component('ImgViewr', ImgViewr)
// app.config.globalProperties.$showImages = showImages
app.use(ImgViewr)

app.mount('#app')

/**
 * 二、按需引入使用
 */
// lang="ts"
import { ref } from 'vue'
import ImgViewr, { showImages } from 'vue-img-viewr'
import 'vue-img-viewr/styles/index.css'

const images = [
  'https://s.gravatar.com/avatar/221f86a573320174bad7a62886a6d4b4?size=100&default=retro',
  'https://s.gravatar.com/avatar/221f86a573320174bad7a62886a6d4b4',
  'https://static.npmjs.com/attachments/ck3uwf5d872zb8874c3ayi1pj-icon-pro-wombat-3x.png'
]
export default {
  name: 'App',
  components: { ImgViewr },
  setup () {
    const urls = ref(images)
    const index = ref(0)
    const visible = ref(false)
    const showImagesByComponent: (i: number) => void = i => {
      visible.value = true
      index.value = i
    }
    const showImagesByJs: (i: number) => void = i => {
      // or
      // ImgViewr.showImages({ ... })
      showImages({
        urls: images,
        index: i,
        onSwitch: changeHandle,
        onClose: () => {
          console.log('closed js')
        },
        onShow: showHandle
      })
    }
    const changeHandle: (i: number) => void = i => {
      console.log(`current image index: ${i}`)
    }
    const closeHandle = () => {
      console.log('closed component')
      visible.value = false
    }
    const showHandle: (isShow: boolean) => void = isShow => {
      console.log(`component is show: ${isShow}`)
    }
    return {
      urls,
      index,
      visible,
      showImagesByComponent,
      showImagesByJs,
      closeHandle,
      changeHandle,
      showHandle
    }
  }
}

服务端渲染(SSR)中使用,以Nuxtjs为例

// TODO
// 后期测试后再进行补充

示例组件使用

<!-- 使用组件 -->
<div class="demo">
  <h3>通过组件方式</h3>
  <div class="imgs">
    <div v-for="(url, i) in urls" class="img" :key="`c_${i}`" @click="() => showImagesByComponent(i)">
      <img :src="url" />
    </div>
  </div>
  <ImgViewr :visible="visible" :urls="urls" :initial-index="index" @close="closeHandle" @switch="changeHandle" @show="showHandle" />
  <h3>通过js方法调用</h3>
  <div class="imgs">
    <div v-for="(url, i) in urls" class="img" :key="i" @click="() => showImagesByJs(i)">
      <img :src="url" />
    </div>
  </div>
</div>

示例样式

/* 示例样式 */
.imgs {
  display: flex;
}
.img {
  width: 150px;
  height: 100px;
  border: 1px solid #EEE;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 20px;
}
.img img {
  max-width: 100%;
  max-height: 100%;
  cursor: pointer;
}

CDN引用

vue@2.x中使用请参照
vue@3.x中使用请参照

参数

Attributes
参数说明类型可选值默认值
urls需要展示的图片url数组(必须参数)array<string>[]
visible是否显示组件(仅限于通过组件方式参数)booleantrue / false
initialIndex初始显示的图片索引(仅限于通过组件方式参数)number0
index显示的图片索引(仅限于通过js方法调用参数)number0
onSwitch图片切换回调函数 Function (index)function
onClose关闭回调函数function
onShow组件显示关闭监听 Function(isShow) (主要用于js方式调用)function
zIndex层级number3000
lockScroll是否在查看图片时将 body 滚动锁定booleantrue / falsetrue
closeOnClickMask点击蒙层关闭booleantrue / falsetrue
Events

仅用于组件方式

参数说明参数
close关闭事件,将 visible 设为 false 关闭窗口-
switch图片切换事件index
show组件显示关闭监听(主要用于js方式调用)isShow

Keywords

FAQs

Package last updated on 23 Aug 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc