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功能函数(2009-06-04更新)
Jun 04 Javascript
UpdatePanel和Jquery冲突的解决方法
Apr 01 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
Jan 15 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
Jul 27 Javascript
跨域资源共享 CORS 详解
Apr 26 Javascript
js判断价格,必须为数字且不能为负数的实现方法
Oct 07 Javascript
bootstrap laydate日期组件使用详解
Jan 04 Javascript
微信小程序实现YDUI的ScrollNav组件
Feb 02 Javascript
tween.js缓动补间动画算法示例
Feb 13 Javascript
让Vue也可以使用Redux的方法
May 23 Javascript
vuex刷新后数据丢失的解决方法
Oct 18 Javascript
详解JavaScript 中的批处理和缓存
Nov 19 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分页显示制作详细讲解
2008/11/19 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
2013/06/25 PHP
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
php实现文件下载实例分享
2014/06/02 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
jQuery html()等方法介绍
2009/11/18 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
键盘KeyCode值列表汇总
2013/11/26 Javascript
为何JS操作的href都是javascript:void(0);呢
2015/11/12 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
详解JS浏览器事件循环机制
2019/03/27 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
Python写入数据到MP3文件中的方法
2015/07/10 Python
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
python实现朴素贝叶斯算法
2018/11/19 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
win10安装tensorflow-gpu1.8.0详细完整步骤
2020/01/20 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
Python实现播放和录制声音的功能
2020/08/12 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
Shein英国:女性时尚网上商店
2019/04/10 全球购物
房地产销售员的自我评价分享
2013/12/04 职场文书
给导游的表扬信
2014/01/10 职场文书
保险内勤岗位职责
2014/04/05 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
关于成立领导小组的通知
2015/04/23 职场文书