精华内容
下载资源
问答
  • 前端页面切换

    千次阅读 2018-10-11 15:56:02
    在Javaweb开发中,页面切换是必不可少的一个技术,简单模拟一个 工具:Hbuilder 技术:HTML+JQuery 话不多说先看效果图: 目录结构图: 主页:index.html <!DOCTYPE html> <html> ...

    在Javaweb开发中,页面切换是必不可少的一个技术,简单模拟一个

    工具:Hbuilder

    技术:HTML+JQuery

    话不多说先看效果图:

    目录结构图:

    主页:index.html

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title>大前端页面切换</title>
    		<style>
    			body{
    				margin: 0px;
    				padding: 0px;
    				text-align: center;
    				vertical-align: middle;
    			}
    			.container{
    				width: 50%;
    				height: 200px;
    				background: #FFFFE0;
    			}
    			.container div{
    				float: left;
    			} 
    			.top-container{
    				width: 100%;
    				line-height: 40px;
    				border: 1px solid darkgoldenrod;
    			}
    			.left-container{
    				width: 30%;
    				line-height: 160px;
    			}
    			.right-container{
    				width: 69%;
    				line-height: 160px;
    			}
    		</style>
    	</head>
    	<body>
    		<div class="container">
    			<div class="top-container">
    				大前端页面切换
    			</div>
    			<div class="left-container">
    			</div>
    			<div class="right-container">
    			</div>
    		</div>
    	</body>
    	<script type="text/javascript" src="js/jquery.min.js" ></script>
    	<script type="text/javascript" src="js/index.js" ></script>
    </html>
    

    one.html:

    <style>
    	h1{
    		color: purple;
    	}
    </style>
    <h1>Jadeon one</h1>

    two.html

    <style>
    	h1{
    		color: orange;
    	}
    </style>
    <h1>Jadeon two</h1>

    three.html

    <style>
    	h1{
    		color: blue;
    	}
    </style>
    <h1>Jadeon three</h1>

    重要代码:index.js

    var obj_span_href = new Array(
    	'<a href="javascript:void(0);" data-page="page/one.html">one</a>&nbsp;&nbsp;'
    	,'<a href="javascript:void(0);" class="active" data-page="page/two.html">two</a>&nbsp;&nbsp;'
    	,'<a href="javascript:void(0);" data-page="page/three.html">three</a>');
    var contL = $('.left-container');
    contL.append(obj_span_href);
    //全局监听a click事件
    var cont = $('.container');
    var contR = $('.left-container', cont);
    var _loading, page;
    contR.on('click', 'a', function(){
    	if(_loading)
    		return;
    	
    	_loading = true;
    	page = $(this).data('page');
    	
    	if(!page)
    	return;
    	
    	$('a.active', contR).removeClass('active');
    	$(this).addClass('active');
    
    	$('.right-container', cont).empty().load(page, function(){
    		_loading = false;
    	})
    });
    $('a.active').click();
    

     

    展开全文
  • Flutter 页面切换动画

    千次阅读 2019-09-30 15:30:12
    Flutter 页面切换动画 创建两个模拟页面 class LeftPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.blue, appBar: AppBar(title:....

    Flutter 页面切换动画

    创建两个模拟页面

    class LeftPage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          backgroundColor: Colors.blue,
          appBar: AppBar(title: Text("第一页", style: TextStyle(color: Colors.white),),
            elevation: 0,
            backgroundColor: Colors.blue,),
          body: Center(
            child: MaterialButton(onPressed: () {
              Navigator.push(
                  context, MaterialPageRoute(builder: (context) => RightPage()));
            },
            // 页面切换示例
            // Navigator.push(context, SlidePageRouteBuilder(RightPage()));
              child: Icon(
                  Icons.navigate_next,
                  color: Colors.white,
                  size: 64.0
              ),),
          ),
        );
      }
    }
    
    class RightPage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          backgroundColor: Colors.red,
          appBar: AppBar(title: Text("第二页", style: TextStyle(color: Colors.white),),
            elevation: 0,
            backgroundColor: Colors.red,
            // 不显示返回键
            automaticallyImplyLeading: false,
          ),
          body: Center(
            child: MaterialButton(onPressed: () {
              Navigator.pop(context);
            },
              child: Icon(
                  Icons.navigate_before,
                  color: Colors.white,
                  size: 64.0
              ),),
          ),
        );
      }
    }
    

    渐变效果

    /// 自定义页面切换动画 - 渐变切换
    class CustomPageRouteBuilder extends PageRouteBuilder{
      // 跳转的页面
      final Widget widget;
      CustomPageRouteBuilder(this.widget):super(
          transitionDuration:Duration(seconds: 1),
          pageBuilder:(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation){
            return widget;
          },
          transitionsBuilder:(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child){
            return FadeTransition(child:child,
                opacity: Tween(begin: 0.0,end: 1.0)
                    .animate(CurvedAnimation(parent: animation, curve: Curves.fastOutSlowIn))
            );
          }
      );
    }
    

    参数介绍

    • FadeTransition:渐隐渐现过渡效果,主要设置opactiy(透明度)属性,值是0.0-1.0。
    • animate :动画的样式,一般使用动画曲线组件(CurvedAnimation)。
    • curve: 设置动画的节奏,也就是常说的曲线,Flutter准备了很多节奏,通过改变动画取消可以做出很多不同的效果。
    • transitionDuration:设置动画持续的时间,建议再1和2之间。

    缩放切换

    /// 自定义页面切换动画 - 缩放切换
    class ScalePageRouteBuilder extends PageRouteBuilder{
      // 跳转的页面
      final Widget widget;
      ScalePageRouteBuilder(this.widget):super(
          transitionDuration:Duration(seconds: 1),
          pageBuilder:(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation){
            return widget;
          },
          transitionsBuilder:(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child){
            return ScaleTransition(child:child,
                scale: Tween(begin: 0.0,end: 1.0)
                    .animate(CurvedAnimation(parent: animation, curve: Curves.fastOutSlowIn))
            );
          }
      );
    }
    

    旋转&缩放切换

    /// 自定义页面切换动画 - 旋转+缩放切换
    class RotationScalePageRouteBuilder extends PageRouteBuilder {
      // 跳转的页面
      final Widget widget;
    
      RotationScalePageRouteBuilder(this.widget) :super(
          transitionDuration: Duration(seconds: 1),
          pageBuilder: (BuildContext context, Animation<double> animation,
              Animation<double> secondaryAnimation) {
            return widget;
          },
          transitionsBuilder: (BuildContext context, Animation<double> animation,
              Animation<double> secondaryAnimation, Widget child) {
            return RotationTransition(
              turns: Tween(begin: 0.0, end: 1.0)
                  .animate(
                  CurvedAnimation(parent: animation, curve: Curves.fastOutSlowIn)),
              child: ScaleTransition(scale: Tween(begin: 0.0, end: 1.0)
                  .animate(
                CurvedAnimation(parent: animation, curve: Curves.fastOutSlowIn),),
                child: child,),
            );
          }
      );
    }
    ``
    ## 平移切换
    ```dart
    /// 自定义页面切换动画 - 平移切换
    class SlidePageRouteBuilder extends PageRouteBuilder {
      // 跳转的页面
      final Widget widget;
    
      SlidePageRouteBuilder(this.widget) :super(
          transitionDuration: Duration(seconds: 1),
          pageBuilder: (BuildContext context, Animation<double> animation,
              Animation<double> secondaryAnimation) {
            return widget;
          },
          transitionsBuilder: (BuildContext context, Animation<double> animation,
              Animation<double> secondaryAnimation, Widget child) {
            return SlideTransition(
              position: Tween<Offset>(
                  begin: Offset(-1.0, 0.0), end: Offset(0.0, 0.0))
                  .animate(
                  CurvedAnimation(parent: animation, curve: Curves.fastOutSlowIn)),
              child: child,);
          }
      );
    }
    
    展开全文
  • bootstrap实现页面切换

    2015-08-22 15:30:51
    bootstrap实现页面切换 好代码,齐分享!
  • 基于Laya实现ViewPager页面切换效果

    千次阅读 2019-03-10 02:09:32
    页面切换效果,Laya提供了ViewStack组件,可以切换页面,但是效果有些生硬,可以看看官网文档提供的效果。(http://ldc.layabox.com/doc/?nav=zh-as-2-3-16) 我这里提供的效果是通过手势滑动实现页面切换,同时也...

    前言

    页面切换效果,Laya提供了ViewStack组件,可以切换页面,但是效果有些生硬,可以看看官网文档提供的效果。ViewStack组件

    我这里提供的效果是通过手势滑动实现页面切换,同时也可以通过按钮切换。

    效果如下:
    在这里插入图片描述

     

    实现思路

    这里以两个页面切换为例。两个页面切换,每一个页面都是Box容器,都放在一个容器中,通过移动容器,切换显示不同的页面。

    首先是点击按钮切换页面。利用Laya的缓动动画实现即可,缓动移动容器的left值,点击按钮一,使容器缓动移动到最左边;点击按钮二,使容器缓动到最右边。

    其次,监听手势滑动。利用Laya的触摸事件获取当前点击的mouseX位置,向左还是向右滑动,移动容器的left值即可。

    向右滑动,滑动距离超过阈值,则移动到最左边,没有超过阈值,回退到右边。
    向左滑动,滑动距离超过阈值,则移动到最右边,没有超过阈值,回退到左边。

    这里的向右滑动和向左滑动,指的是手指移动的方向。
     

    场景制作

    场景很简单。Box大的容器,里面放两个按钮,一个容器Box,容器Box内部两个页面Box。

    在这里插入图片描述
    mContainer就是页面的容器,移动的就是mContainer。通过调整它的left值,即可实现页面左右切换。
     

    代码逻辑

    情况一 点击按钮切换
    		this.mBtnFirst.on(Laya.Event.CLICK, this, () => {
                if (this._dir == ViewPagerScene.LEFT) {
                    return;
                }
                this.moveToLeft(ViewPagerScene.MOVE_DUR);
            });
    
            this.mBtnSecond.on(Laya.Event.CLICK, this, () => {
                if (this._dir == ViewPagerScene.RIGHT) {
                    return;
                }
                this.moveToRight(ViewPagerScene.MOVE_DUR);
            });
    
    		// 缓动到左边
    		private moveToLeft(dur: number): void {
    	        this._dir = ViewPagerScene.LEFT;
    	        Laya.Tween.to(this.mContainer, {left: ViewPagerScene.CONTAINER_LEFT_MAX},
    	            Math.abs(dur),
    	            Laya.Ease.linearNone,
    	            Laya.Handler.create(this, () => {
    	                this.mContainer.left = ViewPagerScene.CONTAINER_LEFT_MAX;
    	            }, null, false)
    	        );
    	    }
    	
    		// 缓动到右边
    	    private moveToRight(dur: number): void {
    	        this._dir = ViewPagerScene.RIGHT;
    	        Laya.Tween.to(this.mContainer, {left: ViewPagerScene.CONTAINER_LEFT_MIN},
    	            Math.abs(dur),
    	            Laya.Ease.linearNone,
    	            Laya.Handler.create(this, () => {
    	                this.mContainer.left = ViewPagerScene.CONTAINER_LEFT_MIN;
    	            }, null, false)
    	        );
    	    }
    

    监听这两个按钮点击事件,如果页面当前已经显示出来,则直接返回,如果当前显示的页面不是,则通过缓动动画切换页面。

    其中ViewPagerScene.CONTAINER_LEFT_MAX代表容器最左侧页面显示出来的left的最大值。
    ViewPagerScene.CONTAINER_LEFT_MIN代表容器最右侧页面显示出来的left的最小值。

    通过按钮点击切换页面显示,逻辑还是很简单的。
     

    情况二 手势滑动切换

    手势滑动切换需要监听点击触摸移动事件,通过计算手势移动的距离来移动容器mContainer。

    这里监听的对象也需要考虑。不应该监听页面,如果是通过页面监听手指移动,那在移动当前页面时,需要去移动另外一个页面,有点不好。当然是可以实现的,但是有点费劲。

    这里以页面的容器,也就是mContainer为监听对象,监听它的MOUSE_DOWN、MOUSE_MOVE、MOUSE_UP、MOUSE_OUT事件。

    代码如下:

    		this.mContainer.on(Laya.Event.MOUSE_DOWN, this, (event) => {
                this.onMouseXDown(event.target.mouseX);
            });
    
            this.mContainer.on(Laya.Event.MOUSE_MOVE, this, (event) => {
                this.onMouseXMove(event.target.mouseX);
            });
    
            this.mContainer.on(Laya.Event.MOUSE_UP, this, (event) => {
                this.onMouseXUp(event.target.mouseX);
            });
    
            this.mContainer.on(Laya.Event.MOUSE_OUT, this, (event) => {
                this.onMouseXUp(event.target.mouseX);
            });
    
    

    这里虽说事件名字是mouse,但是在微信小游戏里面运行,可以监听手指滑动效果。

    手指滑动触摸事件event对象通过mouseX可以获取到当前点击的位置。

    主要的逻辑在onMouseXDown onMouseXMove onMouseXUp三个方法中。代码如下:

    	private static LEFT: string = 'left';
        private static RIGHT: string = 'right';
        // 缓动持续时间 300毫秒
        private static MOVE_DUR: number = 300;
        // 容器最左侧页面显示时left的位置
        private static CONTAINER_LEFT_MAX: number = 35;
        // 容器最右侧页面显示时left的位置
        private static CONTAINER_LEFT_MIN: number = -650;
        // 容器超过最右侧最左侧页面的阈值
        private static CONTAINER_MOVE_YU: number = 
        									Math.abs(ViewPagerScene.CONTAINER_LEFT_MIN)/5;
        // 容器最右侧最左侧可以移动的距离(最右侧-最左侧的值)
        private static MOVE_DIS: number = (ViewPagerScene.CONTAINER_LEFT_MAX - 
        									ViewPagerScene.CONTAINER_LEFT_MIN);	
    
    
    	// 记录 手指按下的x的位置
    	private _onMouseXDown: number = 0;
        // 记录手指一动的方向 1:代表手指向右滑动  -1代表手指向左滑动
        private _MoveDir: number = 0;
        
        private onMouseXDown(mouseX: number): void {
        	// 当手指按下,清理缓动
            Laya.Tween.clearTween(this.mContainer);
            this._onMouseXDown = mouseX;
        }
    
        private onMouseXMove(mouseX: number): void {
        	// 计算滑动距离
            let moveDis = mouseX - this._onMouseXDown;
            let containerLeft: number = this.mContainer.left;
            // 计算滑动方向
            this._MoveDir = moveDis > 0 ? 1 : -1;
            containerLeft += moveDis;
            // 向右向左滑动 控制最大距离
            if (containerLeft >= ViewPagerScene.CONTAINER_LEFT_MAX + 
            					ViewPagerScene.CONTAINER_MOVE_YU && this._MoveDir == 1) {
                containerLeft -= moveDis;
            } else if (containerLeft <= ViewPagerScene.CONTAINER_LEFT_MIN - 
            					ViewPagerScene.CONTAINER_MOVE_YU && this._MoveDir == -1) {
                containerLeft -= moveDis;
            }
            this.mContainer.left = containerLeft;
        }
    
        private onMouseXUp(mouseX: number): void {
            let containerLeft = this.mContainer.left;
            if (this._MoveDir > 0) {
                if (containerLeft - ViewPagerScene.CONTAINER_LEFT_MIN > 
                							ViewPagerScene.CONTAINER_MOVE_YU) {
                    this.moveToLeft(ViewPagerScene.MOVE_DUR * 
                    			(ViewPagerScene.CONTAINER_LEFT_MAX - containerLeft)
                    			/ViewPagerScene.MOVE_DIS);
    
                } else {
                    this.moveToRight(ViewPagerScene.MOVE_DUR *
                    		 	(containerLeft - ViewPagerScene.CONTAINER_LEFT_MIN)
                    		 	/ViewPagerScene.MOVE_DIS);
                }
    
            } else if (this._MoveDir < 0) {
                if (ViewPagerScene.CONTAINER_LEFT_MAX - containerLeft > 
                							ViewPagerScene.CONTAINER_MOVE_YU) {
                    this.moveToRight(ViewPagerScene.MOVE_DUR *
                    			 	(containerLeft - ViewPagerScene.CONTAINER_LEFT_MIN)
                    				/ViewPagerScene.MOVE_DIS);
    
                } else {
                    this.moveToLeft(ViewPagerScene.MOVE_DUR *
                    				 (ViewPagerScene.CONTAINER_LEFT_MAX - containerLeft)
                    				 /ViewPagerScene.MOVE_DIS);
                }
            }
        }
    
    	// 缓动到最左侧页面
        private moveToLeft(dur: number): void {
            this._dir = ViewPagerScene.LEFT;
            Laya.Tween.to(this.mContainer, {left: ViewPagerScene.CONTAINER_LEFT_MAX},
                Math.abs(dur),
                Laya.Ease.linearNone,
                Laya.Handler.create(this, () => {
                    this.mContainer.left = ViewPagerScene.CONTAINER_LEFT_MAX;
                }, null, false)
            );
        }
    
    	// 缓动到最右侧页面
        private moveToRight(dur: number): void {
            this._dir = ViewPagerScene.RIGHT;
            Laya.Tween.to(this.mContainer, {left: ViewPagerScene.CONTAINER_LEFT_MIN},
                Math.abs(dur),
                Laya.Ease.linearNone,
                Laya.Handler.create(this, () => {
                    this.mContainer.left = ViewPagerScene.CONTAINER_LEFT_MIN;
                }, null, false)
            );
        }
    

     


     
    第一步,手指按下,记录按下的位置,并清空缓动动画。
     
    第二步,手指移动

    	private onMouseXMove(mouseX: number): void {
        	// 计算滑动距离
            let moveDis = mouseX - this._onMouseXDown;
            let containerLeft: number = this.mContainer.left;
            // 计算滑动方向
            this._MoveDir = moveDis > 0 ? 1 : -1;
            containerLeft += moveDis;
            // 向右向左滑动 控制最大距离
            if (containerLeft >= ViewPagerScene.CONTAINER_LEFT_MAX + 
            					ViewPagerScene.CONTAINER_MOVE_YU && this._MoveDir == 1) {
                containerLeft -= moveDis;
            } else if (containerLeft <= ViewPagerScene.CONTAINER_LEFT_MIN - 
            					ViewPagerScene.CONTAINER_MOVE_YU && this._MoveDir == -1) {
                containerLeft -= moveDis;
            }
            this.mContainer.left = containerLeft;
        }
    

    利用当前的点mouseX,减去手指按下时的点,即可得到当前手指移动的距离。

    如果移动距离为正,手指向右移动。
    如果移动距离为负,手指向左移动。

    根据当前容器的left的值,加上手指移动的距离。如果距离超过向左或向右可移动的最大距离,则等于向左或向右可移动的最大距离。通过if判断控制可移动的最大距离。最后更新容器的left的值,使容器跟着手指的移动而移动。

    这里的两行代码

    		if (containerLeft >= ViewPagerScene.CONTAINER_LEFT_MAX + 
            					ViewPagerScene.CONTAINER_MOVE_YU && this._MoveDir == 1) {
                containerLeft -= moveDis;
            } else if (containerLeft <= ViewPagerScene.CONTAINER_LEFT_MIN - 
            					ViewPagerScene.CONTAINER_MOVE_YU && this._MoveDir == -1) {
                containerLeft -= moveDis;
            }
    

    这两行代码可以注释掉。如果注释掉这两行代码,那么移动的效果就是,当容器移动到最右侧时,不能使容器再向右移动;当容器移动到最左侧时,不能使容器再向左移动;

    有了这两行代码,可以使容器达到最右侧或最左侧时,再向右或向左移动CONTAINER_MOVE_YU的距离。
     
    第三步,手指离开屏幕

    	private onMouseXUp(mouseX: number): void {
            let containerLeft = this.mContainer.left;
            if (this._MoveDir > 0) {
                if (containerLeft - ViewPagerScene.CONTAINER_LEFT_MIN > 
                							ViewPagerScene.CONTAINER_MOVE_YU) {
                    this.moveToLeft(ViewPagerScene.MOVE_DUR * 
                    			(ViewPagerScene.CONTAINER_LEFT_MAX - containerLeft)
                    			/ViewPagerScene.MOVE_DIS);
    
                } else {
                    this.moveToRight(ViewPagerScene.MOVE_DUR *
                    		 	(containerLeft - ViewPagerScene.CONTAINER_LEFT_MIN)
                    		 	/ViewPagerScene.MOVE_DIS);
                }
    
            } else if (this._MoveDir < 0) {
                if (ViewPagerScene.CONTAINER_LEFT_MAX - containerLeft > 
                							ViewPagerScene.CONTAINER_MOVE_YU) {
                    this.moveToRight(ViewPagerScene.MOVE_DUR *
                    			 	(containerLeft - ViewPagerScene.CONTAINER_LEFT_MIN)
                    				/ViewPagerScene.MOVE_DIS);
    
                } else {
                    this.moveToLeft(ViewPagerScene.MOVE_DUR *
                    				 (ViewPagerScene.CONTAINER_LEFT_MAX - containerLeft)
                    				 /ViewPagerScene.MOVE_DIS);
                }
            }
        }
    

    这里判断了手指移动的方向。

    _MoveDir 等于1 说明手指向右滑动,如果容器当前的值与最右侧的距离超过了阈值,则通过缓动移动到最左侧,否则回退到最右侧

    _MoveDir 等于-1 说明手指向左滑动,如果容器当前的值与最左侧的距离超过了阈值,则通过缓动移动到最右侧,否则回退到最左侧

    最后需要说明一点的是,缓动持续时间dur,使用了Math.abs()方法,原因是有可能容器超过了最左侧最右侧,容器最左侧最右侧可以超过滑动阈值。当超过滑动阈值dur计算可能为负数,导致缓动立即完成,不顺畅的感觉。经过这样处理就完美了,顺畅了许多。
     

    结束

    给出完整代码:

    export default class ViewPagerScene extends ui.test.ViewPageSceneUI {
    
        private static LEFT: string = 'left';
        private static RIGHT: string = 'right';
        private static MOVE_DUR: number = 300;
        private static CONTAINER_LEFT_MAX: number = 35;
        private static CONTAINER_LEFT_MIN: number = -650;
        private static CONTAINER_MOVE_YU: number =
        									 Math.abs(ViewPagerScene.CONTAINER_LEFT_MIN)/5;
        private static MOVE_DIS: number = 
        			(ViewPagerScene.CONTAINER_LEFT_MAX - ViewPagerScene.CONTAINER_LEFT_MIN);
    
        private _dir: string = ViewPagerScene.LEFT;
        
    
        constructor() {
            super();
        }
    
        onEnable() {
            this.mCloseBtn.on(Laya.Event.CLICK, this, () => {
                Laya.Scene.close(INDEX_SCENE.VIEW_PAGER_PAGE);
            });
    
            this.mBtnFirst.on(Laya.Event.CLICK, this, () => {
                if (this._dir == ViewPagerScene.LEFT) {
                    return;
                }
                this.moveToLeft(ViewPagerScene.MOVE_DUR);
            });
    
            this.mBtnSecond.on(Laya.Event.CLICK, this, () => {
                if (this._dir == ViewPagerScene.RIGHT) {
                    return;
                }
                this.moveToRight(ViewPagerScene.MOVE_DUR);
            });
    
            this.mContainer.on(Laya.Event.MOUSE_DOWN, this, (event) => {
                this.onMouseXDown(event.target.mouseX);
            });
    
            this.mContainer.on(Laya.Event.MOUSE_MOVE, this, (event) => {
                this.onMouseXMove(event.target.mouseX);
            });
    
            this.mContainer.on(Laya.Event.MOUSE_UP, this, (event) => {
                this.onMouseXUp(event.target.mouseX);
            });
    
            this.mContainer.on(Laya.Event.MOUSE_OUT, this, (event) => {
                this.onMouseXUp(event.target.mouseX);
            });
        }
    
        private _onMouseXDown: number = 0;
        private _MoveDir: number = 0;
        private onMouseXDown(mouseX: number): void {
            Laya.Tween.clearTween(this.mContainer);
            this._onMouseXDown = mouseX;
        }
    
        private onMouseXMove(mouseX: number): void {
            let moveDis = mouseX - this._onMouseXDown;
            let containerLeft: number = this.mContainer.left;
            this._MoveDir = moveDis > 0 ? 1 : -1;
            containerLeft += moveDis;
            if (containerLeft >= ViewPagerScene.CONTAINER_LEFT_MAX + 
            					ViewPagerScene.CONTAINER_MOVE_YU && this._MoveDir == 1) {
                containerLeft -= moveDis;
            } else if (containerLeft <= ViewPagerScene.CONTAINER_LEFT_MIN - 
            					ViewPagerScene.CONTAINER_MOVE_YU && this._MoveDir == -1) {
                containerLeft -= moveDis;
            }
            this.mContainer.left = containerLeft;
        }
    
        private onMouseXUp(mouseX: number): void {
            let containerLeft = this.mContainer.left;
            if (this._MoveDir > 0) {
                if (containerLeft - ViewPagerScene.CONTAINER_LEFT_MIN > 
                									ViewPagerScene.CONTAINER_MOVE_YU) {
                    this.moveToLeft(ViewPagerScene.MOVE_DUR *
                    	 	(ViewPagerScene.CONTAINER_LEFT_MAX - containerLeft)
                    	 	/ViewPagerScene.MOVE_DIS);
    
                } else {
                    this.moveToRight(ViewPagerScene.MOVE_DUR *
                    		 (containerLeft - ViewPagerScene.CONTAINER_LEFT_MIN)
                    		 /ViewPagerScene.MOVE_DIS);
                }
    
            } else if (this._MoveDir < 0) {
                if (ViewPagerScene.CONTAINER_LEFT_MAX - containerLeft > 
                									ViewPagerScene.CONTAINER_MOVE_YU) {
                    this.moveToRight(ViewPagerScene.MOVE_DUR *
                    		 (containerLeft - ViewPagerScene.CONTAINER_LEFT_MIN)
                    		 /ViewPagerScene.MOVE_DIS);
    
                } else {
                    this.moveToLeft(ViewPagerScene.MOVE_DUR *
                    		 (ViewPagerScene.CONTAINER_LEFT_MAX - containerLeft)
                    		 /ViewPagerScene.MOVE_DIS);
                }
            }
        }
    
        private moveToLeft(dur: number): void {
            this._dir = ViewPagerScene.LEFT;
            Laya.Tween.to(this.mContainer, {left: ViewPagerScene.CONTAINER_LEFT_MAX},
                Math.abs(dur),
                Laya.Ease.linearNone,
                Laya.Handler.create(this, () => {
                    this.mContainer.left = ViewPagerScene.CONTAINER_LEFT_MAX;
                }, null, false)
            );
        }
    
        private moveToRight(dur: number): void {
            this._dir = ViewPagerScene.RIGHT;
            Laya.Tween.to(this.mContainer, {left: ViewPagerScene.CONTAINER_LEFT_MIN},
                Math.abs(dur),
                Laya.Ease.linearNone,
                Laya.Handler.create(this, () => {
                    this.mContainer.left = ViewPagerScene.CONTAINER_LEFT_MIN;
                }, null, false)
            );
        }
    }
    

    欢迎关注公众号:技术印象


    更新:2019年6月16日

    完整的代码项目地址:
    https://github.com/longyinzaitian/WxLayaGame

    欢迎各位朋友star,多多指教!


    展开全文
  • 集成了多种qt页面切换动画,绝对物超所值,使用5.2.1编译,背景图片请放到编译目录下,或者修改源码中宏定义自己定义
  • html5 滑动页面切换tab

    2016-02-18 16:32:31
    html5 滑动页面切换tab,点击tab也可以切换,非常实用。
  • WPF页面切换源码下载

    热门讨论 2011-08-01 10:50:40
    WPF页面切换源码 本文包括以下内容: 1. 如何实现Page切换 2. 如何为Page增加淡入淡出(Fade)效果 3. 示例 4. 下一步 如何实现Page切换 从MFC到Winform几乎切换方式是一致的,找到一个容器,然后将Dialog或是User...
  • QML 页面切换方式

    千次阅读 2020-03-19 16:25:59
    QML 页面切换,比如直播应用,从登录页跳转到视频页。 静态: 一,隐藏 本质上各页面都存在,只是某些隐藏,某些显示,当某一触发条件满足时,设置对应页面的显示和隐藏 Rectangle{ id:login width: 500 ...

    QML 页面切换,比如直播应用,从登录页跳转到视频页。

    静态:

    一,隐藏

    本质上各页面都存在,只是某些隐藏,某些显示,当某一触发条件满足时,设置对应页面的显示和隐藏 

    Rectangle{
            id:login
            width: 500
            height: 500
            MouseArea{
                anchors.fill: parent
                onClicked: {
                    video.visible=true
                    login.visible=false
                }
            }
        }
    
        
        Rectangle{
            id:video
            width: 500
            height: 500
            visible: false
        }

    二,利用  StackView、SwipeView

     

    动态:

    一,利用Loader 动态加载

     function showLoginPage()
            {
                myLoader.sourceComponent=loginPage
            }
        
            function showVideoPage()
            {
                myLoader.sourceComponent=videoPage
            }
        
        
            Loader{
                id:myLoader
                anchors.fill: parent
            }
            Component.onCompleted: showLoginPage()
        
            Component{
                id:loginPage
                Login{
                    anchors.fill: parent
                }
            }
        
            Component{
                id:videoPage
                Video{
                    anchors.fill: parent
                }
            }

    二,利用 createComponent 创建

    var component = Qt.createComponent("SubmitDia.qml")
                var object = component.createObject(root)
                object.x = root.width/2-object.width/2
                object.y = root.height/2-object.height/2

     

    场景:

    如果想记录上一次的操作 可以使用静态的方式,比如设置,切换到下一页 但也可能返回到上一页。

    如果想每次进入页面时,一切从新开始 不想记录任何信息,则使用动态方式。比如登录类切换,登录后一切都应该从新开始

     

    展开全文
  • vue页面切换到滚动页面显示顶部

    万次阅读 2018-01-05 21:56:26
    vue页面切换到滚动页面显示顶部   在用mint ui写移动端从'listview'跳转到详情页时,详情页面由于大于手机高度可以滚动,当点击'listview'滚动list进入详情页面时发现详情页面不是从顶部开始显示。 一、...
  • angularjs提供了内置的函数让我们检测到页面的变化 $stateChangeStart 页面...可以轻松的用这些函数来做一些页面切换的动画,及收次加载的动画 首次加载动画指令 首次进来时页面渲染完毕让.pageload消失  app.di
  • JavaFX:实现页面切换

    万次阅读 2017-01-22 01:42:47
    页面切换 JavaFX多个页面(Stage)之间的切换的实现的基本思路: 构建一个主Stage和多个副Stage页面(构建方式基本上市一样的); 在主Stage中设置某些控件的动作,这些动作通过触发副...
  • Jquery Mobile实现页面切换

    千次阅读 2017-04-19 22:02:51
    现在移动设备已经是手机和平板的天下了,在使用手机和平板的...jQuery Mobile 提供了各种页面切换到下一个页面的效果。 切换 描述 fade 默认,淡入到下一页 filp 从后向前
  • 安卓ViewPager2监听页面切换事件

    千次阅读 2020-11-03 13:55:59
    目标 监听ViewPager2里的页面切换事件. 解决方案 vp2.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { override fun onPageSelected(position: Int) { //xxx } })
  • vue页面切换效果(slide效果切换)

    千次阅读 2019-06-03 14:03:06
    最近碰到一个需求,单页应用里面页面切换的效果需要做成跟轮播图滑动slide一样,让这个页面在切换时感觉是一个页面。反复琢磨的vue里面的transition,最终将实现的核心代码贴出来。这里实现的是上下切换,左右的效果...
  • swiper控制页面切换

    千次阅读 2019-04-12 12:45:27
    一般在希望用户执行某个操作之后,才允许页面切换的时候,会有这种需求。比如说要用户点击提交按钮之后,才能滑动到下一个slide。 swiper有一个noSwiping选项,设为true时,可以在slide上(或其他元素)增加类名’...
  • 页面切换的3种实现

    千次阅读 2017-02-01 14:23:53
    页面切换的实现 这里要实现页面切换的三种方式: 方法一: 首页等ViewPager(配合Fragment或View) + LinearLayout(配合TextView)框架搭建; 方法二: ViewPagerIndicator 或使用 PagerSlidingTab实现; 方法三: 用...
  • 一、QtQuick多页面切换方法(1)“隐藏法”前一个视图visible设为false或者透明度opacity设为0,相当于“隐藏”了,实际还存在;要显示的视图visible设为true或者透明度opacity设为1,显示出来;(2)“动态”var ...
  • android viewpage 实现页面切换和点击事件
  • C#WinForm版 仿360杀毒页面切换动画效果,内含源代码。访问: https://blog.csdn.net/chiyumaomao/article/details/47953045
  • VUE页面切换时候 回到顶部

    千次阅读 2019-08-12 15:18:02
    VUE页面切换时候 回到顶部 产生问题 如果不加回到顶部,在每次页面切换的时候会产生一小段的时候 header 看不到,在页面加载之后才下来 初试解决办法 Vue-Router内置了一个滚动行为scrollBehavior,我试了试,并没有...
  • Fragment实现页面切换和点击事件但是不能滑动切换
  • Vue页面切换滑动效果

    千次阅读 2018-11-01 17:49:27
    试着用Vue做了个页面切换时滑动的效果,如下示例 源码 https://github.com/Aiden1204/VueAnimateDemo 这里使用了Vue的transition组件,具体可见文档 https://cn.vuejs.org/v2/guide/transitions.html 直接看...
  • vue 路由的配置与页面切换

    千次阅读 2020-09-07 21:40:59
    vue 路由的配置与页面切换1.vue路由 1.vue路由 可以实现单页面应用。 实现步骤:
  • ViewPager页面切换效果

    千次阅读 2013-03-27 19:51:21
    ViewPager页面切换效果 运行效果一: 运行效果二:   具体的我先不多说,给一个demo的下载地址,分享给
  • Axure设置导航栏控制页面切换

    千次阅读 2019-08-29 16:29:34
    用axure实现导航的页面切换效果也不复杂,大致步骤如下: 首先设置你的导航栏,可以是几个按钮,也可以是box,都不影响,满足自己的页面效果就行了,我拖了俩button作为我的导航栏,还有一个动态面板 然后我们在...
  • MFC下页面切换

    千次阅读 2016-09-10 09:16:35
    在用MFC编写界面时,想写一个页面切换界面,之前用的是tab控件,觉得效果不太满意,后面查到其他资料,用的是groupbox来放置窗口,效果不错,代码和结果如图所示: 在主界面中放置一个IDC_GROUP、IDC_BUTTON 4个 ...
  • Qt 多页面切换stacked widget控件

    千次阅读 2017-04-06 11:24:50
    Qt 多页面切换stacked widget控件 stacked widget 支持多页面切换
  • JQUERY实现iframe页面切换功能,轻松简单、灵活方便快速,代码实例,测试通过
  • 页面切换动画效果1 - 左右切换

    千次阅读 2017-05-08 20:45:55
    在线演示点击Next按钮后出发页面切换动画,借助jQuery来实现这一交互功能。html:<article id="tablet"> <h1>Comprehensam <p>Tablets, tablets, ...right one for you. <a href="#
  • react实现页面切换动画效果

    千次阅读 2018-08-14 14:04:13
    注:(我使用的路由是react-router4) 如下图所示,我们需要在页面切换时有一个过渡效果,这样就不会使页面切换显得生硬,用户体验大大提升; but the 问题是,react的路由动画没有vue那么方便,在vue里面写几个样式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 502,409
精华内容 200,963
关键字:

页面切换