广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue实现商品详情页放大镜功能
  • 482
分享到

vue实现商品详情页放大镜功能

2024-04-02 19:04:59 482人浏览 八月长安
摘要

本文实例为大家分享了Vue实现商品详情页放大镜的具体代码,供大家参考,具体内容如下 templates中内容 <div class="productLeft">

本文实例为大家分享了Vue实现商品详情页放大镜的具体代码,供大家参考,具体内容如下

templates中内容


<div class="productLeft">
   <!-- 左侧中图 -->
     <div class="mdImg">
         <img :src="require('../assets/imgs/details/'+mdImgUrl)" alt="">
     </div>
     <!-- 遮罩层 -->
     <div v-show="isshow" class="marks" :style="{top:top+'px',left:left+'px'}"></ div>
     <!-- 遮罩层 玻璃板 superMarks-->
     <div @mouseenter="enter" @mouseleave="leave"  @mousemove="marks" class="superMarks" ></div>
     <!--左侧小图 -->
     <div class="smImg" >
         <!--左按钮 -->
         <div @click="prev" class="button-prev">
             <img src="../assets/icon/prev.png" >
         </div>
         <div class="smImgUl">
             <ul :style="{'margin-left':marginLeft+'px'}">
                 <li @mouseenter="enterLi(index)" v-for="(item,index) of list" :key="index">
                     < img :src="require('../assets/imgs/details/'+item.sm)" alt="">
                 </li>
             </ul>
         </div>
         <!-- 右按钮 -->
         <div @click="next" class="button-next">
             <img src="../assets/icon/next.png" >
         </div>
     </div>
    <!-- 左侧大图 -->
     <div v-show="isShow" class="lgImg">
         <img :src="require('../assets/imgs/details/'+lgImgUrl)" alt="" :style="{top:topLgImg+'px',left:leftLgImg+'px'}">
     </ div>
</div>

js:


< script>
import headerT from "./common/headerT.vue"
import header from "./common/Header.vue"
export default {
    data() {
        return {
            list:[{"sm":"s1.png","md":"s1.png","lg":"s1.png"},
            {"sm":"s2.png","md":"s2.png","lg":"s2.png"},
            {"sm":"s3.png","md":"s3.png","lg":"s3.png"},
            {"sm":"s4.png","md":"s4.png","lg":"s4.png"},
            {"sm":"s5.png","md":"s5.png","lg":"s5.png"},
            {"sm":"s6.png","md":"s6.png","lg":"s6.png"},
            {"sm":"s7.png","md":"s7.png","lg":"s7.png"},
            {"sm":"s8.png","md":"s8.png","lg":"s8.png"}],
            mdImgUrl:"s1.png",
            lgImgUrl:"s1.png",
            ulIndex:0,//向左移动几个li
            marginLeft:0,  //向左向右移动的距离
            isShow:false,   //控制遮罩层marks和大图片是否显示"
            left:0,       //marks左移位置
            top:0,         //marks下移位置
            leftLgImg:0,       //大图lgImg移动的位置
            topLgImg:0         //大图lgImg移动的位置
        }
    },
    methods: {
        //鼠标进入小图时事件,显示对应的中图
        enterLi(e){
            //e是对应的下标
            //console.log(e);
            this.mdImgUrl=this.list[e].md;
            this.lgImgUrl=this.list[e].lg;
        },

        //点击左右按钮事件ul的li移动,每个li宽74px,ul宽370显示5个li
        prev(){
            //向左移动-
            if(this.ulIndex>-(this.list.length-5)){
                this.ulIndex--;
                this.marginLeft=this.ulIndex*74;
                //console.log(this.ulIndex)
            }
        },
        next(){
            //向右移动++
            if(this.ulIndex<0){
                 this.ulIndex++;
                this.marginLeft=this.ulIndex*74;
                //console.log(this.ulIndex)
            }
        },
        
        //鼠标进入和离开
        enter(){
            this.isShow=true
        },
        leave(){
            this.isShow=false
        },
        //遮罩层放大镜
        marks(e){
            //console.log(e.offsetX,e.offsetY)   //鼠标移入时的位置·
            var marksWidth=200;//marks的宽
            var marksHeight=200;//marks的高
            

            this.left=e.offsetX-marksWidth/2;   
            this.top=e.offsetY-marksHeight/2;
            //console.log(this.left,this.top) 
            if(this.left<0){
                this.left=0;
            }else if(this.left>250){
                this.left=250;
            }
            if(this.top<0){
                this.top=0;
            }else if(this.top>250){
                this.top=250;
            }
            //console.log(this.left,this.top) 
            
            //中图片div宽高450,大图片div宽高800
            this.leftLgImg=-this.left*800/450;
            this.topLgImg=-this.top*800/450;
        }
    },
    computed: {
    },
    components:{
        "headerone":headerT,
        "headertwo":header
    },
    watch: {
    },
}
</ script>

CSS:


<style scoped>

    .content{
        width:1200px;
        margin:0 auto;
    }
    .content>.product{
        display: flex;
        justify-content: space-between;
    }
    
    .productLeft{
        width:450px;
        position: relative;
    }
    
    .mdImg,.mdImg>img{
        width:450px;
        height:450px;
    }
    
    .superMarks{
        width:450px;
        height:450px;
        background-color:rgba(220, 220, 220, 0);
        position:absolute;
        top:0px;
        left:0px;
    }
    
    .marks{
        width:200px;
        height:200px;
        position:absolute;
        background-color:rgba(220, 220, 220, 0.5);
        
    }
    
    .smImg{
        display:flex;
        align-items: center;
        justify-content: space-between;
        overflow:hidden;
    }
    .smImgUl{
        overflow:hidden;
        width:370px;
    }
    .smImg ul{
        display: flex;
        width:370px;
        margin:0;
        padding:0;
    }
    .smImg ul>li{
        padding:0 3px;
    }
    .smImg img{
        height:60px;
        margin:4px;
    }
    
    .lgImg{
        width:400px;
        height:400px;
        overflow: hidden;
        position:absolute;
        top:0px;
        left:450px;
        border:2px solid #aaa;
        background-color:#fff;
    }
    .lgImg img{
        width:800px;
        height:800px;
        position:absolute;
        
    }

    
    .productRight{
        width:700px;
        
    }
    
    .button-prev,.button-next{
        width:35px;
        height:35px;
        line-height: 30px;
        border:1px solid #DDD;
        border-radius:50%;
        text-align:center;
    }
    .button-prev:hover,.button-next:hover{
        background-color:#eee;
    }
    .button-prev>img,.button-next>img{
        width:20px;
        height:20px;
    }
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: vue实现商品详情页放大镜功能

本文链接: https://www.lsjlt.com/news/132922.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue实现商品详情页放大镜功能
    本文实例为大家分享了vue实现商品详情页放大镜的具体代码,供大家参考,具体内容如下 templates中内容 <div class="productLeft"> ...
    99+
    2022-11-12
  • vue如何实现商品详情页功能
    这篇文章将为大家详细讲解有关vue如何实现商品详情页功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。vue是什么Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区别是...
    99+
    2023-06-14
  • vue实现商品详情页功能之商品选项卡
    本文实例为大家分享了vue实现商品详情页功能之商品选项卡的具体代码,供大家参考,具体内容如下 用户点击商品进入商品详情页,默认显示第一个小图对应的大图,然后鼠标滑到小图上,大图也会发...
    99+
    2022-11-12
  • Vue实现商品放大镜效果
    本文实例为大家分享了Vue实现商品放大镜效果的具体代码,供大家参考,具体内容如下 一、前言 在这个鼎盛的电商时代各种直播带货或者自主逛宝购物,我们对商品的认知和了解进一步查看详情,发...
    99+
    2022-11-12
  • 基于Vue如何实现商品主图放大镜功能
    这篇文章主要介绍基于Vue如何实现商品主图放大镜功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实现原理放大镜的原理用一句话概括,就是根据小图上的鼠标位置去定位大图。图1 原理图(...
    99+
    2022-10-19
  • vue3封装京东商品详情页放大镜效果组件
    本文实例为大家分享了vue3封装类似京东商品详情页放大镜效果组件的具体代码,供大家参考,具体内容如下 首先先完成基本布局 完成图片的切换效果,通过 mouseenter 事件切...
    99+
    2022-11-12
  • JavaScript实现商品放大镜效果
    本文实例为大家分享了JavaScript实现商品放大镜的具体代码,供大家参考,具体内容如下 HTML+CSS部分: <style> .small{ ...
    99+
    2022-11-12
  • Vue实现电商网站商品放大镜效果示例
    目录效果图各部分代码总结效果图 各部分代码 HTML部分 <div id="goodsPics"> <!--当前查看商品图区域-->...
    99+
    2022-11-13
    Vue 网站商品放大镜 Vue 放大镜
  • Vue模仿实现京东商品大图放大镜效果
    效果如下: 首先,有一个放大镜的DOM结构 <template> <div class="spec-preview"> <!-- 展示的原...
    99+
    2022-12-27
    Vue放大镜效果 Vue模仿京东放大镜
  • 微信小程序如何实现商品列表跳转商品详情页功能
    目录引言1.1实现首页页面2.1实现调跳转到手机详情页总结引言 模仿京东小程序,实现下列功能 首页包含了手机图片,手机的描述,手机的价格,购物车图标首页显示两行文字,多余的文字隐藏,...
    99+
    2022-11-13
  • 微信小程序怎么实现商品列表跳转商品详情页功能
    这篇文章主要介绍“微信小程序怎么实现商品列表跳转商品详情页功能”,在日常操作中,相信很多人在微信小程序怎么实现商品列表跳转商品详情页功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序怎么实现商品列表...
    99+
    2023-06-30
  • jQuery实现天猫商品放大镜效果
    本文实例为大家分享了jQuery实现天猫商品放大镜效果的具体代码,供大家参考,具体内容如下 思路: 1、分四部分:产品主图,用来定位的小框,放大图,和产品不同侧面的小图2、定位的小框...
    99+
    2022-11-13
  • 原生js如何实现商品放大镜效果
    这篇文章将为大家详细讲解有关原生js如何实现商品放大镜效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现原理大图上的放大镜:小图的显示区域=大图片大小:小图片大小=大...
    99+
    2022-10-19
  • js实现购物网站商品放大镜效果
    本文实例为大家分享了js实现购物网站商品放大镜效果的具体代码,供大家参考,具体内容如下 首先说一下原理,以天猫某商品放大镜效果为例: 所谓的放大镜效果,其实也是欺骗我们眼球的一种效...
    99+
    2022-11-12
  • jQuery如何实现天猫商品放大镜效果
    这篇“jQuery如何实现天猫商品放大镜效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“jQuery如何实现天猫商品放大镜...
    99+
    2023-06-29
  • vue实现商品多选功能
    本文实例为大家分享了vue实现商品多选功能的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <he...
    99+
    2022-11-13
  • html5如何实现放大镜功能
    今天小编给大家分享一下html5如何实现放大镜功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。html5实现放大镜功能的方...
    99+
    2023-07-05
  • 买菜系统中如何实现商品详情页的展示与管理功能?
    随着生活水平的提高,人们对于食品安全和品质的要求也越来越高。因此,线上购买菜品已经成为现代人的首选。而在买菜系统中,商品详情页的展示与管理功能是十分重要的。首先,买菜系统的商品详情页应该包含以下内容:商品图片、商品名称、商品价格、商品产地、...
    99+
    2023-11-01
    管理功能 商品详情页 展示功能
  • js怎么模拟实现淘宝网商品放大镜效果
    小编给大家分享一下js怎么模拟实现淘宝网商品放大镜效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果图:(实例图片由自己添加...
    99+
    2022-10-19
  • vue实现商品规格选择功能
    本文实例为大家分享了vue实现商品规格选择的具体代码,供大家参考,具体内容如下 动手之前要先确定自己的商品数据结构,下面是我的商品数据结构 dataInfo: {         ...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作