Demo 在线地址: https://sx00xs.github.io/test/40/index.html --------------------------------------------------------------- ide: vscode 文件格式:.vue 解析:(待补) template div div class="box" ul li v- for ="(item,index)
Demo 在线地址:
https://sx00xs.github.io/test/40/index.html
---------------------------------------------------------------
ide: vscode
文件格式:.vue
解析:(待补)
<template>
<div>
<div class="box">
<ul>
<li v-for="(item,index) in lists" :key="item.src" :class="{active:item.isActive}"
@mouseover="handleOver(item,index)"
@mousemove="handleMove"
@mouseout="handleOut"
>
<img :src="item.src">
</li>
</ul>
</div>
<div class="big" v-show="show" ref="myBig">
<div v-show="bigShow"></div>
</div>
</div>
</template>
<script>
export default {
name:‘Navs‘,
data(){
return{
show:false,
bigShow:false,
lists:[
{src:require(‘../assets/lesson5/shirt_1.jpg‘), isActive:false},
{src:require(‘../assets/lesson5/shirt_2.jpg‘), isActive:false},
{src:require(‘../assets/lesson5/shirt_3.jpg‘), isActive:false},
{src:require(‘../assets/lesson5/shirt_4.jpg‘), isActive:false},
],
bigList:[
{src:require(‘../assets/lesson5/shirt_1_big.jpg‘)},
{src:require(‘../assets/lesson5/shirt_2_big.jpg‘)},
{src:require(‘../assets/lesson5/shirt_3_big.jpg‘)},
{src:require(‘../assets/lesson5/shirt_4_big.jpg‘)},
]
}
},
methods:{
handleOver(item,index){
var oImg=document.createElement(‘img‘);
var img= new Image();
img.src=oImg.src=this.bigList[index].src;
this.$refs.myBig.appendChild(oImg);
this.lists[index].isActive=true;
this.show=this.bigShow=true;
img.complete ? this.bigShow=false : ‘‘
},
handleMove(){
var newWidth= document.documentElement.offsetWidth - event.clientX;
this.$refs.myBig.style.top=event.clientY + 20 + ‘px‘;
this.$refs.myBig.style.left = (newWidth < this.$refs.myBig.offsetWidth + 10 ? event.clientX - this.$refs.myBig.offsetWidth - 10 : event.clientX + 10) + ‘px‘;
},
handleOut(){
this.show=false;
this.$refs.myBig.removeChild(this.$refs.myBig.lastChild)
}
}
}
</script>
