一、前言

1.购物车

二、主要内容

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

2、具体实现

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

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

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

  1. //小球
  2.  
  3. <transition name='ball' @after-enter='afterEnter'>
  4. <div class="ball" v-if="isExist"></div>
  5. </transition>

  样式()

  1. .ball-enter-active {
  2. /*给1s的时间让小球进入动画效果*/
  3. animation: bounce-in 1s;
  4. }
  5.  
  6. .bass-leave{
  7. /*元素进入以后,透明度0,整个动画都是0*/
  8. /*元素离开默认是1,所以会闪一下,设置为0*/
  9. opacity:;
  10.  
  11. }
  12. /*这里是控制小球从上面跳到下面的动画*/
  13. @keyframes bounce-in {
  14. 0% {
  15. transform: translate3d(0, 0, 0);
  16. }
  17. 50% {
  18. transform: translate3d(140px, -50px, 0);
  19. }
  20. 75% {
  21. transform: translate3d(160px, 0px, 0);
  22. }
  23. 100% {
  24. transform: translate3d(140px, 300px, 0);
  25. }
  26. }

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

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

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

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

  1. <transition name='ball' @after-enter='afterEnter'>
  2. <div class="ball" v-if="isExist"></div>
  3. </transition>

    (3.3)定义上面的事件

  1. data(){
  2. return{
  3. url:`getthumImages/${this.$route.params.id}`,
  4. goodsInfo:{},
  5. pickNum:1 ,
  6. isExist:false //让小球默认是隐藏的状态,
  7. }
  8. },
  9.  
  10. methods:{
  11. afterEnter(){
  12. this.isExist=false; //显示出来之后执行这个,又将小球隐藏
  13. },
  14. //点击加入购物车执行这个方法,然后让小球显示出来
  15. ballHandler(){
  16. this.isExist=true;
  17. },

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

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

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

    (4.2)调整样式

  1. .tabBar ul li a.link-active{
  2. background-color: pink;
  3. position: relative;
  4. }
  5.  
  6. /*重写一下小球的样式*/
  7. .mint-bage.is-size-small{
  8. position: absolute;
  9. top:;
  10. right: 10px;
  11. }

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

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

  1. import Vue from 'vue'
  2. const EventBus = new Vue();//创建一个公共的bus
  3. export default EventBus;

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

  1. //挂载bus
  2. import EventBus from './EventBus.js'
  3. Vue.prototype.$bus = EventBus;

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

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

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

  1. afterEnter(){
  2. this.isExist=false; //显示出来之后执行这个,又将小球隐藏
  3.  
  4. this.$bus.$emit('sendPickNum',this.pickNum);
  5. },
  6.  
  7. //点击加入购物车执行这个方法,然后让小球显示出来
  8. ballHandler(){
  9.  
  10. this.isExist=true;
  11. // this.$bus.$emit('sendPickNum',this.pickNum); //将当前的pickNum传过去,但是这个不能加在这里,否者一点击“加入购物车就传
  12. },

  (5.5)画图具体实现

  

三、总结

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

  1. Vue(小案例_vue+axios仿手机app)_购物车(二模拟淘宝购物车页面,点击加减做出相应变化)

    一.前言 在上篇购物车中,如果用户刷新了当前的页面,底部导航中的数据又会恢复为原来的: 1.解决刷新,购物车上数值不变                                         ...

  2. Vue(小案例_vue+axios仿手机app)_购物车(计算商品总金额)

    一.前言                 1.计算总金额                 2.点击删除按钮,删除对应的商品信息                 3.当还没结算的时候,当用户跳到其他页面 ...

  3. Vue(小案例_vue+axios仿手机app)_公共组件(路由组件传参)

    一.前言                    1.公共轮播图的实现                    2.组件传参,公共组件的实现 二.主要内容 1.公共轮播图的实现 (1)分析:当渲染不同的轮 ...

  4. Vue(小案例_vue+axios仿手机app)_上拉加载

    ---恢复内容开始--- 一.前言                                                                                    ...

  5. Vue(小案例_vue+axios仿手机app)_实现用户评论

    一.前言 1.渲染评论列表 2.点击加载按钮,加载更多    3.提交评论 二.主要内容 1.评论列表一般是注册到一个全局的公共组件中 2.请求后台数据,渲染评论列表 (1)数据格式如下 地址 /ap ...

  6. Vue(小案例_vue+axios仿手机app)_图片列表操作

    一.前言 1.让图片还没有被完全加载出来的时候给用户提示                                       2.图片查看器 二.主要内容 1.让图片还没有被完全加载出来的时候 ...

  7. Vue(小案例_vue+axios仿手机app)_首页(底部导航栏+轮播图+九宫格)

    ---恢复内容开始--- 一.前言                        1.底部导航(两种做法)                                         2.轮播图 ...

  8. Vue(小案例_vue+axios仿手机app)_图文列表实现

    一.前言 1.导航滑动实现   2.渲染列表信息时让一开始加载的时候就请求数据 3.根据路由的改变,加载图文的改变(实现用户访问网站时可能执行的三个操作) 二.主要内容 1.导航滑动实现: (1)演示 ...

  9. Vue(小案例_vue+axios仿手机app)_Vuex优化购物车功能

    一.前言         1.用vuex实现加入购物车操作 2.购物车详情页面          3.点击删除按钮,删除购物详情页面里的对应商品 二.主要内容 1.用vuex加入购物车 (1)在src ...

随机推荐

  1. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

  2. Windows server 2008R2远程桌面3389端口修改方法技巧

    windows server的服务器远程桌面默认端口号是3389,在工作中经常使用远程桌面连接服务器,但是这也是常常被黑客利用的端口号,但是如何修改掉默认端口,预防被黑客利用呢? 可以如下操作配置:很 ...

  3. 4.14Python数据处理篇之Matplotlib系列(十四)---动态图的绘制

    目录 目录 前言 (一)需求分析 (二)随机数的动态图 1.思路分析: 2.源代码: 2.输出效果: 目录 前言 学习matplotlib已经到了尾声,没有必要再继续深究下去了,现今只是学了一些基础的 ...

  4. web框架。Django--

    一,DIY一个web框架 1.1什么是web框架 1.2用socket模拟B-S的服务端 1.3,浏览器端的network查看 1.4,request格式 1.5,response格式 1.6,初识w ...

  5. Linux:Day12(上) 进程

    内核的功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能 Process:运行中的程序的一个副本. 存在生命周期 Linux内核存储进程信息的固定格式 :task struct 多个任务 ...

  6. pydensecrf的inference.py代码的学习

    https://github.com/lucasb-eyer/pydensecrf/blob/master/examples/inference.py 1.运行 先运行看看实现的结果: (deeple ...

  7. redis 基本原理及安装

    一:什么是redis? Redis 是一个开源的,高性能的,基于键值对的缓存与存储系统.通过提供多种键值数据类型来适应不同场景下的缓存与存储需求. 二:redis数据库有什么优点? Redis数据库中 ...

  8. Android/Linux Thermal框架分析及其Governor对比

    图表 1 Thermal框架 随着SoC性能的快速提升,功耗也极大提高,带来的负面影响是SoC的温度提高很快,甚至有可能造成物理损坏.同时功耗浪费也降低了电池寿命. 从上图可知,Thermal框架可以 ...

  9. 《App架构实践指南》

    推荐书籍 <App 架构实践指南>

  10. openstack第四章:neutron— 网络服务

    第四篇neutron— 网络服务 一.neutron 介绍:   Neutron 概述 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是 ...