最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue實現(xiàn)電商網站商品放大鏡效果示例

 更新時間:2022年10月24日 15:13:48   作者:雩風十六  
這篇文章主要為大家介紹了Vue實現(xiàn)電商網站商品放大鏡效果示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

效果圖

各部分代碼

HTML部分

    <div id="goodsPics">
        <!--當前查看商品圖區(qū)域-->
        <div id="imgPre" style="position: relative;"
         @mouseleave="seeEnd">
         <div ref="imgPre">
          <img :src="url" alt="picNow">
         </div>
            <div class="topMask" @mouseenter="seeBegin($event)" @mousemove="move($event)"></div>
            <!--鼠標放大鏡模塊-->
            <div ref="move" v-show="isShow"
              class="move"
              :style="cursorMask">
            </div>
        </div>
        <!--商品圖總覽 —— 就是一排的小圖-->
        <ul class="imgNow">
            <li  v-for='(item,index) in goodsImgs' :key='item.id' @mouseover="seeThis(index)" :id="urlIndex == index?'sign':''">
              <img style="width: 54px; height: 54px;" :src="item.src" alt="pics">
            </li>
        </ul>
            <!--放大鏡區(qū)域 —— 查看商品圖放大后的效果-->
            <div v-if="isShow" id="seeDetail" ref="bigImg">
              <img :src="Bigurl" alt="" :style="imgMove">
            </div>
    </div>

CSS部分

#page{
  position: relative;
  height: 700px;
  width: 1246px;
  left: 19.3%;
  top: 111px;
  background-color: aqua;
}
/*商品圖*/
#goodsPics{
  width: 452px;
  height: 626px;
  background-color: blue;
  position: relative;
  top: 10px;
}
/*當前所查看的圖片,也即所需要局部放大查看的圖片*/
.imgNow{
  position: relative;
  top: 15px;
  left: 37px;
}
.imgNow li{
/*CSS3給盒子:hover添加border時,盒子發(fā)生抖動的解決方案之一: 給盒子設置初始透明邊框*/
  display: block;
  float: left;
  height: 54px;
  width: 54px;
  margin-left: 15px;
  border: 2px solid transparent
}
.imgNow li:hover, #sign{
  border: 2px solid red;
}
#seeDetail{
 /*注意定位,父相子絕*/
  position: absolute;
  background-color: aliceblue;
  width: 600px;
  height: 600px;
  top: 0%;
  left: 101%;
  overflow: hidden;/*隱藏圖片溢出查看框之外的部分*/
  border: 2px solid #f90;
  background-position: 0 0;
  background-repeat: no-repeat;
}
#seeDetail img{
  position: absolute;
  /*這里注意下,初始時候將查看框內待放大圖的左上角定位與查看框的左頂點處,也即其定位原點處*/
  top: 0;
  left: 0;
  background-repeat: no-repeat;
  /*我自己的圖片設置的寬高是450×450,所以這里放大部分的圖片的寬高設置為原圖的四倍*/
  /*這個倍數(shù)需要注意,后面進行坐標變換的時候要用上*/
  width: 1800px;
  height: 1800px;
}
/*鼠標查看區(qū)域 —— 也即需要放大局部放大查看的區(qū)域*/
.move{
  position: absolute;
  /*初始定位*/
  left: 0;
  top: 0;
  width: 150px;
  height: 150px;
  cursor: move;
  background: rgba(142, 223, 255, 0.407);
}
.topMask{
/*覆蓋在放大圖的原圖表面上的一個遮罩層*/
  width: 452px;
  height: 454px;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 5;
}

js部分

export default {
  data(){
    return{
      url: require("@/pages/amusement/羅技鼠標廣告2.jpg"),
      Bigurl: require("@/pages/amusement/羅技鼠標廣告2.jpg"),//放大鏡區(qū)域的圖片資源
      //上面兩個是初始值
      urlIndex: -1,//urlIndex用于在圖片列表中
      isShow: 0,
      cursorMask:{transform:''},//使用CSS3控制原圖上鼠標預覽區(qū)域的移動
      imgMove:{transform:''},//使用CSS3控制放大鏡區(qū)域圖片的移動
      goodsImgs:[
        {
          id:0,
          src: require("@/pages/amusement/羅技鼠標廣告2.jpg")
        },
        {
          id: 1,
          src: require("@/pages/amusement/羅技鼠標廣告3.jpg")
        },
        {
          id: 2,
          src: require("@/pages/amusement/羅技鼠標廣告4.jpg")
        },
        {
          id: 3,
          src: require("@/pages/amusement/羅技鼠標廣告5.jpg")
        },
        {
          id: 4,
          src:require("@/pages/amusement/羅技鼠標廣告1.jpg"),
        }
      ]
    }
  },
  methods:{
    seeThis(index){
      this.url = this.goodsImgs[index].src;
      this.urlIndex = index;
    },
    move(e){
     /*  效果實現(xiàn)的核心,計算光標位置的坐標,通過修改鼠標預覽區(qū)域的坐標來實現(xiàn)放大區(qū)域的移動
      *  注意這里使用的 offsetX 和 offsetY,是獲取當前元素相對于其父元素的對應偏移量
      */
      var x = e.offsetX - 75;
      var y = e.offsetY - 75;
      //放置鼠標預覽區(qū)域移動到原圖區(qū)域左邊以外
      if(x<0){
        x = 0;
      }else if(x > 300){ 
          //防止預覽區(qū)域移動到右邊以外
          //300 = 450 - 150
        x = 300;
      }
      if(y < 0){
        y = 0;
      }else if(y > 300){
        y = 300;
      }
      //使用模板字符串和變量拼接
      //這里注意: 根據實際上的效果,我們的預覽區(qū)域左移時,放大鏡查看區(qū)域的大圖相當于等比例地右移,所以我們這里應當設置大圖的移動方向與預覽區(qū)相反,移動距離與預覽區(qū)成比例
      //比例計算:放大倍數(shù) = 大圖所在div的寬高 / 原圖所在div的寬高
      this.cursorMask.transform = `translate(${x}px, ${y}px)`;
      this.imgMove.transform = `translate(-${4*x}px, -${4*y}px)`;//向反方向成比例移動
    },
    seeBegin(e) {
      //move(e); 這里也可以不用
      this.Bigurl = this.url;
      this.isShow = 1;
    },
    seeEnd(){
      //鼠標移出原圖區(qū)域時,清空相關信息
      this.Bigurl = "";
      this.left = 0;
      this.top = 0;
      this.isShow = 0;
    }
  },
}

總結

放大鏡功能的核心實現(xiàn)思路就是兩張圖,一大一小,計算光標預覽區(qū)域左上角的坐標,然后根據兩張圖所在div的對應寬高比,等比反方向移動大圖,溢出部分設置overflow: hidden,從而實現(xiàn)放大鏡的效果

需要的知識點:

  • 在css3的實現(xiàn)方法中,可以使用transform: translate(),來設置圖片的移動,此外還可以使用js獲取標簽進行對應屬性的更改。
  • 這里面主要是對pageX、pageY、offsetX、offsetY、offsetLeft、offsetTop、clientX、clientY等的區(qū)分使用

以上就是Vue實現(xiàn)電商網站商品放大鏡效果示例詳解的詳細內容,更多關于Vue 網站商品放大鏡的資料請關注腳本之家其它相關文章!

相關文章

  • 詳解vue項目中使用token的身份驗證的簡單實踐

    詳解vue項目中使用token的身份驗證的簡單實踐

    這篇文章主要介紹了vue項目中使用token的身份驗證的簡單實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • vue項目中使用rem,在入口文件添加內容操作

    vue項目中使用rem,在入口文件添加內容操作

    這篇文章主要介紹了vue項目中使用rem,在入口文件添加內容操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • iphone劉海屏頁面適配方法

    iphone劉海屏頁面適配方法

    這篇文章主要介紹了iphone劉海屏頁面適配方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • Vue全局注冊與局部注冊兩種組件注冊的方式

    Vue全局注冊與局部注冊兩種組件注冊的方式

    本文主要介紹了Vue全局注冊與局部注冊兩種組件注冊的方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • Vue使用Pinia輕松實現(xiàn)狀態(tài)管理

    Vue使用Pinia輕松實現(xiàn)狀態(tài)管理

    pinia,一個基于Vue3的狀態(tài)管理庫,它可以幫助開發(fā)人員管理Vue應用程序的狀態(tài),本文主要為大家介紹了Pinia的用法,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-06-06
  • Vue中內置指令與自定義指令語法詳解

    Vue中內置指令與自定義指令語法詳解

    這篇文章主要為大家介紹了Vue中內置指令與自定義指令語法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • 10分鐘帶你上手Vue3中新增的API

    10分鐘帶你上手Vue3中新增的API

    這篇文章主要介紹了10分鐘教你快速上手Vue3中新增的API,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • vue路由 遍歷生成復數(shù)router-link的例子

    vue路由 遍歷生成復數(shù)router-link的例子

    今天小編就為大家分享一篇vue路由 遍歷生成復數(shù)router-link的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • Vue.js devtool插件安裝后無法使用的解決辦法

    Vue.js devtool插件安裝后無法使用的解決辦法

    Vue.js devtool插件最近在開發(fā)人員中很火,這篇文章主要為大家詳細介紹了Vue.js devtool插件安裝后無法使用,出現(xiàn)提示“vue.js not detected”的解決辦法
    2017-11-11
  • Vue計算屬性的使用

    Vue計算屬性的使用

    本篇文章主要介紹了Vue計算屬性的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論

义马市| 司法| 马公市| 锦州市| 项城市| 铅山县| 宜兴市| 寻乌县| 启东市| 启东市| 承德市| 伊宁县| 大渡口区| 诏安县| 洪洞县| 太谷县| 卓尼县| 永兴县| 安国市| 德江县| 华阴市| 漳平市| 清流县| 外汇| 榆社县| 武胜县| 洞头县| 惠东县| 惠水县| 台中县| 弥渡县| 万盛区| 榆树市| 青岛市| 安阳市| 闽侯县| 南岸区| 湘潭县| 新余市| 博乐市| 灌南县|