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 相关文章推荐
JS 弹出层 定位至屏幕居中示例
May 21 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
Jun 06 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
Mar 13 Javascript
Sea.JS知识总结
May 05 Javascript
JavaScript实现无刷新上传预览图片功能
Aug 02 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
Jan 03 Javascript
跨域解决之JSONP和CORS的详细介绍
Nov 21 Javascript
VUE引入第三方js包及调用方法讲解
Mar 01 Javascript
详解vue-cli3多环境打包配置
Mar 28 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
Jul 27 Javascript
微信小程序轮播图swiper代码详解
Dec 01 Javascript
微信小程序自定义支持图片的弹窗
Dec 21 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
php不用正则验证真假身份证
2013/11/06 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
CI框架装载器Loader.php源码分析
2014/11/04 PHP
深入php内核之php in array
2015/11/10 PHP
php实现中文转数字
2016/02/18 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
对javascript的一点点认识总结《javascript高级程序设计》读书笔记
2011/11/30 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
AngularJS入门教程之迭代器过滤详解
2016/08/18 Javascript
jQuery中的insertBefore(),insertAfter(),after(),before()区别介绍
2016/09/01 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
如何在js代码中消灭for循环实例详解
2018/07/29 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
2014/11/19 Python
python递归计算N!的方法
2015/05/05 Python
python一键升级所有pip package的方法
2017/01/16 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
wxpython+pymysql实现用户登陆功能
2019/11/19 Python
python实现用户名密码校验
2020/03/18 Python
Python读写压缩文件的方法
2020/07/30 Python
一套Java笔试题
2016/08/20 面试题
英文简历中的自荐信范文
2013/12/14 职场文书
建议书怎么写
2014/03/12 职场文书
个人租房协议书
2014/04/09 职场文书
《泉水》教学反思
2014/04/11 职场文书
挂职学习心得体会
2014/09/09 职场文书
领导干部群众路线剖析材料
2014/10/09 职场文书
商务代表岗位职责
2015/02/15 职场文书
Python利器openpyxl之操作excel表格
2021/04/17 Python
利用Python读取微信朋友圈的多种方法总结
2021/08/23 Python
A22国内电台短波广播频率表
2022/05/10 无线电
SpringBoot Http远程调用的方法
2022/08/14 Java/Android