products页面和cart页面

  • 1、商品页面解构
  • 2、购物车页面解构

1、商品页面解构

  • 修改数量这里使用picker组件;
  • 加入购物车动画,使用css动画中的贝塞尔曲线作为运动速率,从点击起始位置运动到固定的购物车中;
  • 底部是一个tab栏。

这里给出动画效果实现。需要在页面的js文件中获取起始点位置。运动结束后恢复并且更新购物车数字

/*加入购物车动效*/_flyToCartEffect:function(events){//获得当前点击的位置,距离可视区域左上角var touches=events.touches[0];var diff={x:'25px',y:25-touches.clientY+'px'},style='display: block;-webkit-transform:translate('+diff.x+','+diff.y+') rotate(350deg) scale(0)';  //移动距离// 2s移动时间   this.setData({isFly:true,translateStyle:style});var that=this;setTimeout(()=>{that.setData({isFly:false,translateStyle:'-webkit-transform: none;',  //恢复到最初状态isShake:true,});setTimeout(()=>{var counts=that.data.cartTotalCounts+that.data.productCounts;that.setData({isShake:false,cartTotalCounts:counts});},200);},1000);},
.small-top-img{height: 160rpx;width: 160rpx;right:6rpx;position: absolute;opacity: 0;
}.small-top-img.animate{opacity: 1;/* 贝塞尔曲线的移动速率 *//*-webkit-transition:all 1000ms cubic-bezier(.4,.46,.3,1.31);*/-webkit-transition:all 2000ms cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

固定购物车数字的样式:

.fiexd-cart view{font-size: 24rpx;background-color: #AB956D;color: white;position: absolute;right: 64rpx;top: 0rpx;height: 36rpx;width: 36rpx;line-height: 36rpx;border-radius: 36rpx;text-align: center;
}

2、购物车页面解构

  • 选择按钮和全选按钮的状态更新,随之data数据更新,本地缓存更新。使用商品类型数量,来控制全选按钮和选择按钮的关系;
  • 使用三个img简要实现计数器组件;
  • 删除按钮更新data和本地缓存;
  • 根据商品的选择状态更新全选(4)数据;
  • 动态更新价格,注意数据的精度。
<!--pages/cart/cart.wxml-->
<view class="container cart-container"><!-- 购物车存在商品 --><block wx:if="{{cartData.length>0}}"><!-- 商品栏 --><view class="cart-box"><block wx:for="{{cartData}}"><view class="cart-item"><view class="cart-item-main"> <!-- 选择按钮点击事件 --><view class="cart-item-checkbox" bindtap="toggleSelect" data-id="{{item.id}}" data-status="{{item.selectStatus}}"><image wx:if="{{item.selectStatus}}" src="../resource/images/cart/circle@selected.png"></image><image wx:else src="../resource/images/cart/circle@noselected.png"></image></view><!-- 图片点击事件 --><view class="cart-item-img" bindtap="onProductsItemTap" data-id="{{item.id}}"><image class="good-image" src="{{item.main_img_url}}"></image></view><view class="cart-item-word"><view class="title-box"><text class="title">{{item.name}}</text><text>¥{{item.price}}</text></view><view class="bottom-box"><view class="cart-item-counts"><!-- 简单的数量选择器 --><view class="btns {{item.counts==1?'disabled':''}}"bindtap="changeCounts" data-id="{{item.id}}" data-type="cut">-</view><view class="counts">{{item.counts}}</view><view class="btns" bindtap="changeCounts" data-id="{{item.id}}" data-type="add">+</view></view><view class="delete" data-id="{{item.id}}" bindtap="delete">×</view></view></view></view></view></block></view><!-- 底部计数栏 --><view class="footer-account-box all-accounts-box"><!-- 全选按钮 --><view class="all-select" ontap="toggleSelectAll" data-status="{{selectedTypeCounts==cartData.length?'true':'false'}}"><image wx:if="{{selectedTypeCounts==cartData.length}}"class="title-icon" src="../resource/images/cart/all@selected.png"></image><image wx:else class="title-icon" src="../resource/images/cart/all.png"></image><text>全选({{selectedCounts}})</text></view><!-- 下单按钮 --><view class="all-price-submit {{account==0?'disabled':''}}" bindtap="submitOrder"><view class="accounts-btn">下单</view><view class="price-text">¥{{account}}</view><view class="arrow-icon"><image wx:if="{{account==0}}" src="../resource/images/cart/arrow@grey.png"></image><image wx:else src="../resource/images/cart/arrow.png"></image></view></view></view></block><!-- 购物车没有商品 wx:if的标签可以不同 --><view  wx:else class="no-data">您还没有添加任何商品</view><loading hidden="{{loadingHidden}}">加载中...</loading>
</view>

微信小程序|开发实战篇之十一---商品页面和购物车页面相关推荐

  1. 微信小程序|开发实战篇之二

    开发实战篇之二 前言 1.零碎知识点和优化点 1.1 ES6模板字符串 1.2 ES6扩展运算符 1.3 独立更新like组件状态 1.4 自定义组件支持hidden 2.音乐music组件开发 2. ...

  2. 微信小程序|开发实战篇之一

    开发实战篇之一 前言 1.通用方法的封装 2.数据获取方法的封装 2.1 抽离classic.js中的request()方法 2.2 组件数据传递 3.movie组件的创建 3.1 组件代码开发 3. ...

  3. 微信小程序|开发实战篇之四

    开发实战篇之四 前言 1.用户页面my的开发 1.1 my.wxml骨架文件 1.2 my页面的布局和样式分析 1.2.1 从原型页面来分析: 1.2.2 继续分析每个大组件中的小组件布局: 1.3 ...

  4. 微信小程序|开发实战篇之三

    开发实战篇之三 前言 1.使用Promise获取多个异步方法的结果 2.高阶组件-search 2.1 search组件的基本结构 2.1.1 search组件的骨架index.wxml文件 2.1. ...

  5. 微信小程序|开发实战篇之七-steps进度条组件

    开发实战篇之七 前言 0.知识点补充 0.1 $emit()函数 0.2 wxs 0.3 ⚡组件间关系 1.steps进度条组件 1.1.step进度条单元的骨架文件wxml 1.2.step进度条单 ...

  6. 微信小程序|开发实战篇之六-pagination分页组件

    开发实战篇之六 前言 1.分页组件pagination 2.pagination代码分析 2.1 wxml骨架文件 2.2 wxss样式 2.3 pagination的逻辑文件 前言 实战篇内容参考: ...

  7. 微信小程序|开发实战篇之五-slide-view滑动菜单组件

    开发实战篇之五 前言 1.微信小程序操作dom元素 1.1 slide-view组件的wxml骨架文件 1.1.1 涉及movable-view组件属性 1.2 slide-view组件的js文件 1 ...

  8. 微信小程序|开发实战篇之request请求(单个、多个参数,json对象,header)

    开发实战篇之request请求 前言 1.发送单个.多个参数的request 2.发送JSON对象的request 3.发送header的request 前言 小程序发送网络请求常会遇到的问题: 请求 ...

  9. 微信小程序|开发实战篇之九-image-picker图片选择器组件及其子组件

    开发实战篇之九 前言 1.grid格子组件 1.1 grid骨架文件wxml 1.2 grid的js文件分析 1.3 grid-item的wxml文件分析 1.4 grid-item的wxss文件分析 ...

最新文章

  1. RGB-D相机视觉SLAM
  2. Elasticsearch学习笔记-04修改数据
  3. 运行时修改数据库连接字符串(ConnectionString)
  4. [轉]資料庫讀寫分離
  5. PTA c语言 统计单词的长度
  6. qml入门学习(二):引入js文件
  7. Muse-UI +Vue2.0框架开发环境搭建
  8. Python多态、鸭子类型
  9. redis安装、配置和启动
  10. destoon php os,destoon运行流程二次开发必看
  11. 27-1/x+1/y=1/n
  12. opencv实现图像目标对象区域挖掘
  13. mysql 循环_MySQL存储过程中的3种循环【转载】
  14. 中国无线电频率分配表
  15. 软件概要设计与详细设计
  16. 软件工程之软件开发方法、软件工具和开发环境
  17. printf用法之打印二进制,八进制,十进制,十六进制
  18. Tensorflow Saver
  19. java求圆的面积和周长
  20. 如何准备测试数据?用 DbUnit 和 Anthill 控制测试环境

热门文章

  1. python log模块_Python日志模块-logging
  2. Linux内核分析(八) 设备驱动
  3. AT1219 歴史の研究 解题报告
  4. PreparedStatement是如何防止SQL注入的?
  5. Excel数据批量导入到数据库
  6. php/js互传cookie中文乱码的问题
  7. Meteor 加入账户系统
  8. 清除sqlserver日志方法(不适合always on)
  9. WordPress Citizen Space插件跨站请求伪造漏洞
  10. RestartOnCrash一个监控进程的小工具,可用于监控iis/apache/mysql等程序