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 相关文章推荐
javascript 时间比较实现代码
Oct 28 Javascript
javascript中注册和移除事件的4种方式
Mar 20 Javascript
js判读浏览器是否支持html5的canvas的代码
Nov 18 Javascript
jquery实现简单的全选和反选功能
Jan 02 Javascript
Bootstrap的基本应用要点浅析
Dec 19 Javascript
微信小程序中实现一对多发消息详解及实例代码
Feb 14 Javascript
canvas实现弧形可拖动进度条效果
May 11 Javascript
javaScript封装的各种写法
Aug 14 Javascript
简单的Vue异步组件实例Demo
Dec 27 Javascript
Javascript获取某个月的天数
May 30 Javascript
详解几十行代码实现一个vue的状态管理
Jan 28 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
Apr 09 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在线书签系统分享
2016/01/04 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
jquery随机展示头像代码
2011/12/21 Javascript
jQuery数组处理代码详解(含实例演示)
2012/02/03 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
容易造成JavaScript内存泄露几个方面
2014/09/04 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
详解RequireJs官方使用教程
2017/10/31 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
js实现登录拖拽窗口
2020/02/10 Javascript
JavaScript中layim之整合右键菜单的示例代码
2021/02/06 Javascript
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
使用pandas中的DataFrame数据绘制柱状图的方法
2018/04/10 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
Flask之请求钩子的实现
2018/12/23 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
体育教育专业自荐信范文
2013/12/20 职场文书
微笑服务标语
2014/06/24 职场文书
医院见习总结
2015/06/24 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python