尚品汇前端项目总结3(P60-P90)

本文详细介绍了使用Vue.js开发电商系统的一些关键模块,包括路由的滚动行为定制、产品属性值的排他选择、实现放大镜效果、购买数量正则验证、加入购物车功能、购物车组件开发、游客身份的UUID管理、购物车数据动态展示、商品数量修改以及删除操作。同时,涵盖了注册与登录过程中的验证码、用户信息管理等方面的技术实现。
摘要由CSDN通过智能技术生成

目录

detail模块开发

路由的滚动行为

产品售卖属性值排他思想

放大镜

购买产品个数的操作(正则表达式)

 加入购物车

shopCart组件开发 

游客身份uuid

购物车动态展示数据

修改购物车中商品数量 

删除全部选中的商品以及全选

注册与登录界面

注册业务

 验证码

注册

登录业务

token

登录后header状态的改变

退出登录


 

detail模块开发

路由的滚动行为

使用前端路由,当页面切换新路由时,想要页面滚到顶部,或者保持原先的滚动位置,可以自定义路由切换时页面的滚动行为

let router = new VueRouter({
    routes
    scrollBehavior(to,before,savedPosition) {
        //return 期望滚动到哪个位置
        //滚动到顶部
        return { y: 0 }
    }
})

to和from表示路由对象savedPosition当且仅当popstate(通过浏览器的前进后退按钮触发)导航时才可用

return的信息格式为{x:number,y:number}

产品售卖属性值排他思想

点击的标签加上样式: 要获得被点击的属性值以及属性值列表,当发生点击事件的时候,先将属性列表中所有的属性都清除样式,然后再给被点击的属性加上样式

      changeClass(spuSaleAttrValueList,spuSaleAttrValue){
        for(let i=0;i<spuSaleAttrValueList.length;i++){
          spuSaleAttrValueList[i].isChecked=0;
        }
        spuSaleAttrValue.isChecked=1;
      }

放大镜

放大镜结构如下,下面为轮播图,与之前的轮播图不同的就是再swiper里面设置了一次展示几张【slidesPerView:3】

<div class="spec-preview">
    <!-- 背景图片 -->
    <img :src=" imgObj.imgUrl"  />
    <!-- 触发事件的地方 -->
    <div class="event" @mousemove="small" ref="box"></div>
    <!-- 放大的部分 -->
    <div class="big" ref="big">
      <img :src=" imgObj.imgUrl" ref="img" />
    </div>
    <!-- 覆盖层 -->
    <div class="mask" ref="mask"></div>
  </div>

event.offsetX,event.offsetY:鼠标相对于父盒子的位置

offsetWidth,offsetHeight

style.top,style.left:元素相对于父盒子的定位

逻辑部分:首先要判断mask的位置是否超出边界,如果超出就做相应处理,img的移动部分主要是利用公式

img移动距离/mask移动距离=-img可移动最大距离/mask可移动最大距离

因为img和mask移动方向相反,所以有一个负号 

    small(event){
      let mask=this.$refs.mask;
      let box=this.$refs.box;
      let big=this.$refs.big;
      let img=this.$refs.img;
      let left=event.offsetX-mask.offsetWidth/2;
      let top=event.offsetY-mask.offsetHeight/2;
      if(event.offsetX-mask.offsetWidth/2<0){
        left=0
      } 
      if(event.offsetX-mask.offsetWidth/2>box.offsetWidth-mask.offsetWidth){
        left=box.offsetWidth-mask.offsetWidth
      }
      if(event.offsetY-mask.offsetHeight/2<0){
        top=0
      }
       if(event.offsetY-mask.offsetHeight/2>=box.offsetHeight-mask.offsetHeight){
        top=box.offsetHeight-mask.offsetHeight
      }
      mask.style.top=top+'px';
      mask.style.left=left+'px';
      //最大偏移量的比
      img.style.left=-((img.offsetWidth-big.offsetWidth)/(box.offsetWidth-mask.offsetWidth))*left+'px'
      img.style.top=-((img.offsetHeight-big.offsetHeight)/(box.offsetHeight-mask.offsetHeight))*top+'px'
      
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值