安装组件
npm install vue-product-zoomer
配置文件nuxt.config.js配置
{
src: '@/plugins/product-zoomer.js',
ssr: false
}
build: {
transpile: [/^element-ui/],
vendor:[ 'vue-product-zoomer'],
},
添加 product-zoomer.js
在plugins 目录添加 product-zoomer.js
import Vue from 'vue'
import ProductZoomer from 'vue-product-zoomer'
Vue.use(ProductZoomer);
封装组件
在components/photo目录添加文件Zoomer.vue
<template>
<div class="product-zoomer">
<client-only>
<ProductZoomer
:base-images="images"
:base-zoomer-options="zoomerOptions"
v-if="showImg"
></ProductZoomer>
</client-only>
</div>
</template>
<script>
export default {
props: {
url: {
type: String,
default: '',
},
},
data() {
return {
images: {
thumbs: [
{
id: 1,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/thumbs/1.jpeg"
},
{
id: 2,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/thumbs/2.jpeg"
},
{
id: 3,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/thumbs/3.jpeg"
},
{
id: 4,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/thumbs/4.jpeg"
},
{
id: 5,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/thumbs/5.jpeg"
},
{
id: 6,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/thumbs/6.jpeg"
},
{
id: 7,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/thumbs/7.jpeg"
},
{
id: 8,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/thumbs/8.jpeg"
},
{
id: 9,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/thumbs/9.jpeg"
}
],
normal_size: [
{
id: 1,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/normal_size/1.jpeg"
},
{
id: 2,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/normal_size/2.jpeg"
},
{
id: 3,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/normal_size/3.jpeg"
},
{
id: 4,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/normal_size/4.jpeg"
},
{
id: 5,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/normal_size/5.jpeg"
},
{
id: 6,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/normal_size/6.jpeg"
},
{
id: 7,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/normal_size/7.jpeg"
},
{
id: 8,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/normal_size/8.jpeg"
},
{
id: 9,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/normal_size/9.jpeg"
}
],
large_size: [
{
id: 1,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/large_size/1.jpeg"
},
{
id: 2,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/large_size/2.jpeg"
},
{
id: 3,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/large_size/3.jpeg"
},
{
id: 4,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/large_size/4.jpeg"
},
{
id: 5,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/large_size/5.jpeg"
},
{
id: 6,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/large_size/6.jpeg"
},
{
id: 7,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/large_size/7.jpeg"
},
{
id: 8,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/large_size/8.jpeg"
},
{
id: 9,
url:
"https://yoohooworld.com/assets/images/vue_product_zoomer/large_size/9.jpeg"
}
]
},
'zoomerOptions': {
zoomFactor: 3, // scale for zoomer
pane: 'pane', // three type of pane ['pane', 'container-round', 'container']
hoverDelay: 300, // how long after the zoomer take effect
namespace: 'zoomer', // add a namespace for zoomer component, useful when on page have mutiple zoomer
move_by_click:false, // move image by click thumb image or by mouseover
scroll_items: 5, // thumbs for scroll
choosed_thumb_border_color: "#bbdefb", // choosed thumb border color
scroller_button_style: "line",
scroller_position: "left",
zoomer_pane_position: "right"
}
};
},
computed:{
},
methods: {
},
mounted() {
},
created(){
if (process.client) {
this.showImg = true
}
},
};
</script>
<style lang="scss" scoped>
.product-zoomer{
width: 400px;
}
</style>
使用组件
import Zoomer from "@/components/photo/Zoomer";
components: { Zoomer },
<div>
<zoomer></zoomer>
</div>
注意:该组件在ie下不兼容