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入门教程(7) History历史对象
Jan 31 Javascript
基于Jquery的实现回车键Enter切换焦点
Sep 14 Javascript
jquery 学习之二 属性 文本与值(text,val)
Nov 25 Javascript
JavaScript二维数组实现的省市联动菜单
May 08 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
May 20 Javascript
Bootstrap学习笔记之css组件(3)
Jun 07 Javascript
jQuery中的一些常见方法小结(推荐)
Jun 13 Javascript
vue.js学习笔记之绑定style样式和class列表
Oct 31 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
Mar 25 Javascript
vue中eventbus被多次触发以及踩过的坑
Dec 02 Javascript
利用React Router4实现的服务端直出渲染(SSR)
Jan 07 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
Jun 01 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 ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
ThinkPHP5框架实现简单的批量查询功能示例
2018/06/07 PHP
jQuery toggle()设置CSS样式
2009/11/05 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
[02:14]2016国际邀请赛中国区预选赛Ehome晋级之路
2016/07/01 DOTA
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
详解Python多线程Selenium跨浏览器测试
2017/04/01 Python
详解Python if-elif-else知识点
2018/06/11 Python
python 统计列表中不同元素的数量方法
2018/06/29 Python
Python操作redis和mongoDB的方法
2019/12/19 Python
Keras自动下载的数据集/模型存放位置介绍
2020/06/19 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
施华洛世奇美国官网:SWAROVSKI美国
2018/02/08 全球购物
办公室文秘自我评价
2013/09/21 职场文书
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
企业环保标语
2014/06/10 职场文书
家长反馈意见及建议
2015/06/03 职场文书
导游词之襄阳古城
2019/09/27 职场文书
纯CSS实现一个简单步骤条的示例代码
2022/07/15 HTML / CSS