vue实现页面切换滑动效果


Posted in Javascript onJune 29, 2020

本文实例为大家分享了vue实现页面切换滑动的具体代码,供大家参考,具体内容如下

试着用Vue做了个页面切换时滑动的效果,如下示例,源码

vue实现页面切换滑动效果

这里使用了Vue的transition组件,具体可见文档

直接看实现过程

先在本机安装vue-cli

npm install -g @vue/cli

初始化一个项目

vue create hello-world

创建完毕后安装vue-router和vuex,现在vue-cli3支持图形化界面,可以直接在项目目录用ui启动,在管理页面点击安装

vue ui

然后建立这样一个项目结构

vue实现页面切换滑动效果

store.js

首先在vuex的仓库里存储页面切换的状态

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
 state: {
 states: 'turn-left'
 },
 mutations: {
 setTransition(state, states) {
 state.states = states
 }
 },
 actions: {

 }
})

建立四个切换用的页面

A,B,C,D换个颜色就行,记得在router.js里配置下路由,有问题可以去我的仓库看源码。

<template>
 <div class="A">
 <top title="a"></top>
 <bottom bg="red"></bottom>
 </div>
</template>

<script>
 import top from "../components/top.vue";
 import bottom from "../components/bottom.vue";
 export default {
 data() {
 return {};
 },
 components: {
 top,
 bottom
 }
 };
</script>

<style scoped>
 .A {
 width: 100%;
 height: 100%;
 background-color: blue;
 position: fixed;
 }

</style>

顶部标题和底部颜色都通过props传给子组件

top.vue

<template>
 <div class="header">
 <div class="left" @click="back">
 back
 </div>
 <div class="center">
 {{title}}
 </div>
 </div>
</template>

<script>
 export default {
 data() {
 return {};
 },
 props: ["title"],
 methods: {
 back() {
 this.$store.commit("setTransition", "turn-right");
 this.$router.back(-1);
 }
 }
 };
</script>

<style scoped>
 .header {
 position: fixed;
 width: 100%;
 height: 40px;
 line-height: 40px;
 background-color: rgb(100, 231, 60);
 }
 .clearfix {
 overflow: auto;
 }
 .left {
 position: fixed;
 left: 0;
 width: 60px;
 }
 .center {
 left: 50%;
 position: fixed;
 }
</style>

bottom.vue

<template>
 <div class="bottom" :style="'top:'+ num + 'px;background-color: '+ bg + ';'">
 bottom
 </div>
</template>

<script>
 export default {
 name: "bottom",
 data() {
 return {
 num:0,
 test:1,
 };
 },
 props: ["bg"],
 mounted() {
 let screenH = document.documentElement.clientHeight || window.innerHeight;
 window.console.log(screenH);
 this.num = screenH - 50 - 50;
 }
 }
</script>

<style scoped>
 .bottom {
 width: 100%;
 height: 50px;
 line-height: 50px;
 position: absolute;
 }
</style>

过程中遇到的问题

原本底部是使用fixed定位的,但fixed在transition的动画中会出现一些奇怪的抖动,原因不明,有大佬知道的话希望能留言告知下。

这里使用absolute替代了fixed,进页面时获取页面高度,然后计算出top值。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 学习笔记 选择器之二
Jul 23 Javascript
js实现瀑布流的一种简单方法实例分享
Nov 04 Javascript
简单实用的反馈表单无刷新提交带验证
Nov 15 Javascript
js select option对象小结
Dec 20 Javascript
js实现俄罗斯方块小游戏分享
Jan 31 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
Aug 22 Javascript
javascript设置连续两次点击按钮时间间隔的方法
Oct 28 Javascript
12种JavaScript常用的MVC框架比较分析
Nov 16 Javascript
json与jsonp知识小结(推荐)
Aug 16 Javascript
js中this对象用法分析
Jan 05 Javascript
简述pm2常用命令集合及配置文件说明
May 30 Javascript
keep-alive不能缓存多层级路由菜单问题解决
Mar 10 Javascript
微信小程序实现导航栏和内容上下联动功能代码
Jun 29 #Javascript
Vue.js中Line第三方登录api的实现代码
Jun 29 #Javascript
vue实现列表滚动的过渡动画
Jun 29 #Javascript
element跨分页操作选择详解
Jun 29 #Javascript
vue实现数字滚动效果
Jun 29 #Javascript
js实现从右往左匀速显示图片(无缝轮播)
Jun 29 #Javascript
Vue实现可移动水平时间轴
Jun 29 #Javascript
You might like
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
PHP命名空间和自动加载类
2016/04/03 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
js传值 判断
2006/10/26 Javascript
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
jQuery获取css z-index在各种浏览器中的返回值
2010/09/15 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
Node.js中文件系统fs模块的使用及常用接口
2020/03/06 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
Python编码爬坑指南(必看)
2016/06/10 Python
Python变量和数据类型详解
2017/02/15 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
解决python运行效率不高的问题
2020/07/20 Python
使用Python pip怎么升级pip
2020/08/11 Python
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
文职个人求职信范文
2013/09/23 职场文书
《两个铁球同时着地》教学反思
2014/02/13 职场文书
党支部遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
自我检讨书范文
2015/01/28 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技