基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果


Posted in Javascript onJanuary 09, 2018

效果图如下所示:

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果 

在线地址: github.czero.cn/fancy 

点击下载安卓apk安装包

源码地址: github.com/czero1995/f…

项目主架构

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果 

使用的库

  • vue-cli (vue+webpack脚手架)
  • vue-router(路由跳转)
  • vuex(状态管理)
  • axios(数据请求)
  • mock.js(模拟后台数据)
  • vue-touch(手势判断)
  • fastclick(解决移动端浏览器 300 毫秒点击延迟问题)
  • vue-lazyload(图片懒加载)
  • swiper(轮播)

设计布局:

将页面的固定布局 position:fixed (比如Header,Footer)全部改为绝对布 局position:absolute ;

因为fixed会出现莫名其妙的兼容性问题,比如在ios11或ios8下会失效,输入框软键盘激活之后会把底部的固定定位弹出去,导致布局错乱。

用absolute实现fixed细节可以参考这篇

  • HTML5
  • CSS3
  • Less
  • rem(阿里用的那套rem算法)
  • Flex(弹性布局)
  • vue-touch(用于实现购物车左滑删除功能) *动画(vue原生transition实现原生app的效果)

数据请求:

  • Mock(模拟后台数据)
  • Axios(请求数据)

逻辑交互:

  • vue(数据渲染,各个组件间的数值传递)
  • vue-router(组件间的路由跳转)
  • vuex(全局状态的管理)

优化方案:

  • 腾讯智图(压缩图片,减少图片的体积)
  • vue-lazyload(图片懒加载,缓解加载数据,提高网页性能)
  • fastclick(解决移动端300ms延迟,提高页面交互流畅度)
  • vue-rouer(路由懒加载,分离app的js为多个js文件,到对应的页面再执行对应的js)
  • webpack(config/index.js文件内的productionSourceMap改为false,这样打包出来的文件可以没有.map结尾的js文件,且文件体积减少至少一半)

实现细节

媲美原生的页面前进和后退的动画实现:

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果 

指定transition:name

在data中声明默认的进出动画

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果 

在mounted()数据渲染初始化完成之后进行判断

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果 

拿到vuex的状态值

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果 

然后进行判断

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果 

最后将当前的组件名字传给vuex,实现不同的组件进去就有不同的切换动画。

下一页动画

.slide-go-enter-active,
.slide-go-leave-active {
 transition: all .5s;
 opacity: .8;
}
.slide-go-enter,
.slide-go-leave-to {
 transition: all .5s;
 transform: translate3d(100%, 0, 0);
 opacity: .8;
}

返回上一页动画

.slide-back-enter-active,
.slide-back-leave-active {
 transition: all .5s;
}
.slide-back-enter,
.slide-back-leave-to {
 transition: all .5s;
 transform: translate3d(-100%, 0, 0);
}

购物车左滑删除

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果 

v-touch

在css中设置好删除按钮的偏移量

-webkit-transform: translate(-12%, 0);
-webkit-transition: all 0.3s linear;

左右滑方法

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果 

滑动的时候触发select样式,进行绑定

让当前的列表项==购物车的列表,样式会被激活,出现左滑删除

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果

注意页面的盒子使用盒子之后会和原生页面出现冲突,导致滑动不流畅

因此,需要在main.js指定默认的滑动方式为横向滑动触发

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果 

订单页面,点击顶部导航和左右滑动进行组件的切换以及动画样式的判断

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果 

也是使用的v-touch组件,实现方式和组件切换类似。 我给每个订单状态的组件一个不同的数字,根据这个数字,判断组件是左滑动的动画还是又滑动的动画

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果

基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果

总结

以上所述是小编给大家介绍的基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
Jul 17 Javascript
js动态为代码着色显示行号
May 29 Javascript
JS对HTML标签select的获取、添加、删除操作
Oct 17 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
Jul 10 Javascript
jQuery标签替换函数replaceWith()的使用例子
Aug 28 Javascript
JavaScript中的方法重载实例
Mar 16 Javascript
JQ技术实现注册页面带有校验密码强度
Jul 27 Javascript
jquery 追加元素append、prepend、before、after用法与区别分析
Dec 02 Javascript
vue-cli配置全局sass、less变量的方法
Jun 06 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
Oct 11 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
Dec 04 Javascript
利用 JavaScript 实现并发控制的示例代码
Dec 31 Javascript
10个经典的网页鼠标特效代码
Jan 09 #Javascript
旺旺在线客服代码 旺旺客服代码生成器
Jan 09 #Javascript
JavaScript实现多重继承的方法分析
Jan 09 #Javascript
webpack多入口文件页面打包配置详解
Jan 09 #Javascript
Vue项目组件化工程开发实践方案
Jan 09 #Javascript
详解webpack之scss和postcss-loader的配置
Jan 09 #Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
Jan 09 #Javascript
You might like
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
PHP取整函数:ceil,floor,round,intval的区别详细解析
2013/08/31 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
仿微博字符限制效果实现代码
2012/04/20 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
jQuery插件Timelinr 实现时间轴特效
2015/10/04 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
jquery在vue脚手架中的使用方式示例
2017/08/29 jQuery
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
python判断无向图环是否存在的示例
2019/11/22 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
django ajax发送post请求的两种方法
2020/01/05 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
2020/09/28 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
英国领先品牌手动工具和电动工具供应商:Tooled Up
2018/11/24 全球购物
介绍一下OSI七层模型
2012/07/03 面试题
小学毕业感言150字
2014/02/05 职场文书
《乌塔》教学反思
2014/02/17 职场文书
幽默导游词开场白
2015/05/29 职场文书
2015大学迎新标语
2015/07/16 职场文书
数学复习课教学反思
2016/02/18 职场文书
pytorch model.cuda()花费时间很长的解决
2021/06/01 Python