html5页面切换平滑,html5页面平滑切换实现以及问题(未解决,欢迎讨论)

注:本文是基于手机端 Hybrid APP 讨论,而不是普通的PC端网页 >>

之前的页面跳转方式:

比如有这两个页面:A.html  B.html,  A B 是纯HTML实现,没有采用其他UI框架

A-->B 的跳转方式为 location.href="B.html";

效果:闪屏刷新,用户体验太差

目前的实现方式:

定义一个母页面里面包含两个iframe用来加载A、B等html页面: _ghost.html:

html:

a92194706da73c5bc08539d39509fb0b.png

js:

105614c09003bd14d365ce59cce9f6c1.png 母页面初始化的时候获取手机屏幕宽高度给iframe,并且给第一个iframe设置内容

页面切换方法:

5dc9a4bbe05b5703f168c80ac5c505fa.png 页面切换即显示或隐藏两个iframe,这里引用jqm里面的changPage方法来实现页面平滑切换,当然是用其他方式也可以实现,比如用jquery的animation动画效果,下述问题与这里是否采用jqm无关,已验证

至此,页面的平滑切换效果实现好了!

细节问题(未解决):

A.html页面有绑定一个系统返回键的事件,在A.js里面定义

document.addEventListener("backbutton", eventBackButton, false); // backbutton事件是cordova.js框架提供的

function eventBackButton() {

MyApp.showFloatMsg(‘再按一次退出程序.‘);

。。。

}

所以在A.html第一次加载到iframe里面之后点击返回键会提示“再按一次退出程序”,到这一步是正常的

-----------------------------分割,下面问题出现-------------------------------

从A.html --> B.html (通过上述changePage方法),到了B.html点击返回键,没有效果,返回事件失效

当然如果在A-->B 的时候  把backbutton事件移除,则到了B.html点击返回键,可以正常返回到A.html,但是A.js未执行,而且在A.html上继续点返回键又回到B.html,接着如果继续按返回键,则:-->A-->退出

-----------------------------分割,说明----------------------------------------

以上的修改都是尽最大可能不修改A.html  A.js  B.html B.js的内容为前提,因为类似AB 大概有1百多个页面

原文:http://www.cnblogs.com/jager/p/4930414.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML5中可以使用CSS3的transform属性和transition属性来实现滑屏切换页面的效果。具体实现步骤如下: 1. 布局页面:将需要切换页面放在一个容器中,并设置容器的宽度为所有页面的宽度之和,高度为单个页面的高度。 2. 设置CSS样式:为容器设置overflow:hidden属性,将超出容器宽度的内容隐藏起来。为每个页面设置float:left属性,使其水平排列。 3. 编写JavaScript代码:使用事件监听器来监听触摸事件,获取触摸开始和结束时手指的坐标,计算出手指移动的距离,根据距离判断是向左还是向右滑动,然后使用transform:translateX()方法来移动容器的位置,达到滑屏切换页面的效果。 4. 添加过渡效果:使用transition属性为容器添加过渡效果,使页面切换更加平滑。 下面是一个简单的HTML/CSS/JavaScript代码示例,实现了滑屏切换页面的效果: HTML代码: ``` <div class="container"> <div class="page page1">页面1</div> <div class="page page2">页面2</div> <div class="page page3">页面3</div> </div> ``` CSS代码: ``` .container { width: 300%; height: 100%; overflow: hidden; transition: transform 0.5s ease; } .page { width: 33.33%; height: 100%; float: left; } .page1 { background-color: red; } .page2 { background-color: green; } .page3 { background-color: blue; } ``` JavaScript代码: ``` var container = document.querySelector('.container'); var pages = document.querySelectorAll('.page'); var startX, endX, distance, current = 0; container.addEventListener('touchstart', function(e) { startX = e.touches[0].clientX; }); container.addEventListener('touchmove', function(e) { e.preventDefault(); }); container.addEventListener('touchend', function(e) { endX = e.changedTouches[0].clientX; distance = endX - startX; if (distance > 0 && current > 0) { current--; } else if (distance < 0 && current < pages.length - 1) { current++; } container.style.transform = 'translateX(-' + current * 33.33 + '%)'; }); ``` 在这个示例中,我们使用了translateX()方法来移动容器的位置,每次移动的距离为单个页面宽度的33.33%。在滑动结束后,根据移动的距离和当前页面的索引值来判断需要切换到哪个页面,然后使用translateX()方法将容器移动到正确的位置。通过添加过渡效果,页面切换更加平滑

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值