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发布错误的详细介绍
Aug 02 Javascript
再探JavaScript作用域
Sep 24 Javascript
jQuery 处理页面的事件详解
Jan 20 Javascript
JavaScript判断是否为数字的4种方法及效率比较
Apr 01 Javascript
JS平滑无缝滚动效果的实现代码
May 06 Javascript
JS采用绝对定位实现回到顶部效果完整实例
Jun 20 Javascript
浅谈javascript中执行环境(作用域)与作用域链
Dec 08 Javascript
Angular 输入框实现自定义验证功能
Feb 19 Javascript
关于javascript作用域的常见面试题分享
Jun 18 Javascript
使用Angular CLI生成 Angular 5项目教程详解
Mar 18 Javascript
js中split()方法得到的数组长度问题
Jul 19 Javascript
Vue.js实现开发购物车功能的方法详解
Feb 22 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 数组的创建、调用和更新实现代码
2009/03/09 PHP
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
php实现阳历阴历互转的方法
2015/10/28 PHP
php使用curl并发减少后端访问时间的方法分析
2016/05/12 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
使用jquery为table动态添加行的实现代码
2011/03/30 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
react高阶组件经典应用之权限控制详解
2017/09/07 Javascript
Express使用html模板的详细代码
2017/09/18 Javascript
利用Three.js如何实现阴影效果实例代码
2017/09/26 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
layui+jquery支持IE8的表格分页方法
2019/09/28 jQuery
对numpy中的数组条件筛选功能详解
2018/07/02 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
关键字throw与throws的用法差异
2016/11/22 面试题
简历中个人自我评价范文
2013/12/26 职场文书
善意的谎言事例
2014/02/15 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
项目经理任命书
2014/06/04 职场文书
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js