Vue(小案例_vue+axios仿手机app)_购物车

一、前言

1.购物车

二、主要内容

1、效果演示如下,当我们选择商品数量改变的时候,也要让购物车里面的数据改变

2、具体实现

  (1)小球从上面跳到下面的效果

  (2)当点击上面的“加入购物车按钮”让小球显示出来(这里需要用到vue中的动画过渡)

结构如下(这是在加入购物车这个页面)

//小球

 <transition name=‘ball‘ @after-enter=‘afterEnter‘>
                <div class="ball" v-if="isExist"></div>
</transition>

  样式()

.ball-enter-active {
    /*给1s的时间让小球进入动画效果*/
    animation: bounce-in 1s;
}

.bass-leave{
    /*元素进入以后,透明度0,整个动画都是0*/
    /*元素离开默认是1,所以会闪一下,设置为0*/
    opacity: 0;

}
/*这里是控制小球从上面跳到下面的动画*/
@keyframes bounce-in {
    0% {
        transform: translate3d(0, 0, 0);
    }
    50% {
        transform: translate3d(140px, -50px, 0);
    }
    75% {
        transform: translate3d(160px, 0px, 0);
    }
    100% {
        transform: translate3d(140px, 300px, 0);
    }
}

  (3)点击加入购物车,先让小球显示---->然后进入after-enter这个钩子函数之后隐藏-,

(3.1)给加入购物车按钮,注册点击事件

   <mt-button type="danger" size=‘small‘ @click=‘ballHandler‘>加入购物车</mt-button>

    (3.2)给小球绑定一个@after-enter事件

 <transition name=‘ball‘ @after-enter=‘afterEnter‘>
                <div class="ball" v-if="isExist"></div>
</transition>

    (3.3)定义上面的事件

      data(){
            return{
                url:`getthumImages/${this.$route.params.id}`,
                goodsInfo:{},
                pickNum:1 ,
                isExist:false //让小球默认是隐藏的状态,
            }
        },

        methods:{
            afterEnter(){
                this.isExist=false; //显示出来之后执行这个,又将小球隐藏
            },
            //点击加入购物车执行这个方法,然后让小球显示出来
            ballHandler(){
                this.isExist=true;
           },

  (4)点击加入购物车之后,需要让下面的底部导航也有一个小球,来模拟小球从上到下,然后停在下面的效果

    (4.1)在下面的底部导航(App.vue底部导航是公共组件)添加小球

<router-link :to="tab.routerName">
            <img :src="tab.imgSrc">
            <!--小球-->
            <mt-badge size=‘small‘ color="#FC0107" v-if=‘index===2‘>{{pickNum}}</mt-badge>
            <p>{{tab.title}}</p>
</router-link>

    (4.2)调整样式

.tabBar ul li a.link-active{
  background-color: pink;
  position: relative;
}

/*重写一下小球的样式*/
.mint-bage.is-size-small{
  position: absolute;
  top: 0;
  right: 10px;
}

  (5)接下来点击上面的加入购物车,同时改变下面显示的数值(上面(Goods.vue),下面(App.vue)这是两个兄弟组件,兄弟组件之间的传值用到bus中央处理器

    (5.1)新建一个EventBus.js定义bus

import Vue from ‘vue‘
const EventBus = new Vue();//创建一个公共的bus
export default EventBus;

    (5.2)在main.js中挂载这个公交车

//挂载bus
import EventBus from ‘./EventBus.js‘
Vue.prototype.$bus = EventBus;

    (5.3)在App.vue(需要接收的这个组件) 一开始就让他监听,

created(){
    //当你的组件一创建好了后就挂载这个bus公交车,$on这个事件监听
    this.$bus.$on(`sendPickNum`, (data)=>{  //data是从另一个组件触发传来的值
      this.pickNum=this.pickNum + data;
    })
  }

    (5.4)在Goods.vue(传数据的组件),当点击的时候让他触发那个原生的click事件

            afterEnter(){
                this.isExist=false; //显示出来之后执行这个,又将小球隐藏

                this.$bus.$emit(‘sendPickNum‘,this.pickNum);
            },

            //点击加入购物车执行这个方法,然后让小球显示出来
            ballHandler(){

                this.isExist=true;
              //  this.$bus.$emit(‘sendPickNum‘,this.pickNum); //将当前的pickNum传过去,但是这个不能加在这里,否者一点击“加入购物车就传
            },
            

  (5.5)画图具体实现

  

三、总结

原文地址:https://www.cnblogs.com/xxm980617/p/10705788.html

时间: 2024-10-29 18:52:51

Vue(小案例_vue+axios仿手机app)_购物车的相关文章

VUE小案例--跑马灯效果

自学Vue课程中学到的一个小案例,跑马灯效果 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="

vue小案例--简易评论区

一.小案例(评论区) 1.流程 (1)分析静态页面.(vue项目创建参考https://www.cnblogs.com/l-y-h/p/11241503.html)(2)拆分静态页面,变成一个个组件.(3)对组件编码,生成动态页面. 2.静态页面 参考来源:https://www.bilibili.com/video/av49099807/?p=22&t=1223 [举例:] <!DOCTYPE html> <html> <head> <meta char

VUE项目用hbuilder 打包为手机APP

一.测试项目是否可以正确运行    指令:npm run dev 首先我们先建立一个vue的项目,本人用的是vue-cli随便建立的,然后运行项目 不必非得是像我这样的,这一步的目的只是测试一下咱们的vue项目是否可以运行 二.修改路径(assetsPublicPath: './') 打开我们config中的js文件,修改assetsPublicPath的路径为"./"(下图的右下角位置) 三.打包文件  指令:npm run build 打包后会生成dist文件 四.把dist文件变

vue小案例(跑马灯)

html模块!! <div id="app"> <h4> {{msg}} </h4> //开始跑马状态 <input type="button" value="飘" @click='lang'> //停止 <input type="button" value="定住" @click='stop'> </div>  script模块 va

Vue(小案例)底部tab栏和顶部title栏的实现

---恢复内容开始--- 一.前言 1.底部tab栏实现 2.顶部title栏实现 二.主要内容   1.底部tab栏实现(将底部导航提取到公共的组件中) 具体效果:当点击切换不同的tab的时候,对应的显示高亮,并且切换到对应的页面中 (1)html/css代码 <template> <div> <footer class="footer_guide border-1px"> <a href="#" class="

Vue小案例 之 商品管理------创建页面与部分数据

logo的路径: 页面的初始布局: 初始的HTML: <div id="container"> <!--logo title--> <div class="header"> <img :src="imgUrl+imgName" class="logo" height="200px" width="150px" style="paddin

本app(仿手机支付宝界面)ios源码

本app(仿手机支付宝界面)主要演示了: 动态显示splashimage如何控制手势密码(AES加密保存数据)如何控制viewcontroller之间的跳转,viewcontroller的代理控制.TabbarController与navigationControlle结合使用动态显示splashimage定制tableViewController自定义UIButton 效果图本app已打包发布到蒲公英平台,网址:http://www.pgyer.com/syD6.可直接安装(无需越狱)查看效果

微信小程序和手机APP之间的对比

微信小程序不是一个独立的应用程序.微信计划上线后,微信将向更大的平台移动.它可以成为PC网络导航等移动电话应用的新里程碑.在这里,我们将回答微信小程序和手机APP游戏之间的区别,以及它们的优缺点.只有当你理解清楚,你才能知道是开发一个独立的应用程序还是直接使用微信小程序. 哪个更好,威查应用还是独立应用? 除了公共开发成本低,采集成本低,无需下载外,小程序大大改善了服务请求延迟和用户体验,使其能够承载复杂的服务功能.并为用户提供更好的用户体验. 与本机应用程序applet相比,它的使用体验几乎相

PC软件/web网站/小程序/手机APP产品如何增加个人收款接口

接入前准备 通过 XorPay 注册个人收款接口,原理是帮助你签约支付宝和微信(不需要营业执照)支持个人支付宝和个人微信支付接口,大概几分钟可以开通,开通后即可永久使用 PC 网站接入 效果:用户点击支付后,前端ajax 请求你的后台,你后台再请求 xorpay 支付接口返回支付二维码到前台,页面展示微信或者支付宝二维码,用户用手机微信或支付宝扫码支付 接口:可以使用 JSAPI / Native / 收银台 / 支付宝当面付 支付接口 JSAPI 支付,通过构造二维码,用户微信扫码后在打开自己