博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转载 - 不使用任何框架,教你制作网页滑动切换效果
阅读量:7105 次
发布时间:2019-06-28

本文共 3404 字,大约阅读时间需要 11 分钟。

导读:原文来自作者Terrence Ryan发表的一篇《》,只要你会使用jQuery、jQuery Mobile、zepto或者其他一些框架,无须使用任何框架就可以实现网页滑动切换效果。

我做了一个关于网页滑动切换的小例子。这个确实很简单,只要你会使用jQuery、jQuery Mobile、zepto或者其他一些框架,然后他们会给你处理好这个。我不想这么做,我想挑战一下不使用任何框架就可以实现这个效果。HTML代码是越简单越好。

我谷歌搜索了下相关的资料,没有找到什么好的解决办法,所以我打算自己写。

我想出的解决办法其实很简单,采用AJAX刷新、CSS切换。这里还需要注意的是,只有在WebKit浏览器上能看到效果。(我个人用PhoneGap做了一个测试应用,可以在Android和IOS系统上运行,所以我只需要WebKit的兼容性。)

首先,我们来看看对body标签的css样式,我让它有动画效果:

body{
position: relative; -webkit-transition: left .2s ease; }

接下来,我做的是给超链接添加点击事件,让它产生切换效果。这我从一篇很棒的文章中学到的一些方法,来处理这些没有jQuery时的操作,那篇文章叫从jQuery到JavaScript。

document.addEventListener('DOMContentLoaded', function() {      replaceLinks();    });         function replaceLinks(){       var links = document.querySelectorAll('a');            for (i=0; i

下一步是使用AJAX获取到链接页面。

event.preventDefault();         var href= this.href;                   var ajax = new XMLHttpRequest();         ajax.open("GET",href,true);         ajax.send();

现在来看看要达到切换效果,还需要哪些步骤:

1. 滑动当前页面到屏幕左侧;

2. 瞬间移动当前页面到屏幕右侧;

3. 替换body里面的内容;

4. 从屏幕右侧滑入当前页面对。

你必须要遵循上面的步骤,不然不能达到预期的效果;现在我来告诉我是怎么做的:

我移动body到屏幕的左侧

body.style.left = "-100%";

这里我写了个移动监听事件

body.addEventListener( 'webkitTransitionEnd', moveToRight, false);                   function moveToRight(event){            var body = document.querySelector('body');            body.removeEventListener( 'webkitTransitionEnd', moveToRight, false);            body.addEventListener( 'webkitTransitionEnd', returnToCenter, false);            body.style.opacity = 0;            body.style.left = "100%"        }

接下来,我替换body的内容,让它再次可见,调整浏览记录,并将它带回屏幕中心。

function returnToCenter(event){            var body = document.querySelector('body');            body.removeEventListener( 'webkitTransitionEnd', returnToCenter, false);            body.innerHTML = bodyContent;            history.pushState(null, null, href);            body.style.opacity = 1;            body.style.left = 0;            replaceLinks();         }

切换过程中,用户可能会点击后退按钮,我们还需对此进行处理:

window.addEventListener("popstate", handleBackButton);                 function handleBackButton(e) {                    var ajaxBack = new XMLHttpRequest();           ajaxBack.open("GET",location.pathname,true);           ajaxBack.send();                    ajaxBack.onreadystatechange=function(){              var bodyBack = document.querySelector('body');              var bodyBackContent = grabBody(ajaxBack.responseText, "body");              bodyBack.addEventListener( 'webkitTransitionEnd', moveToLeft, false);              bodyBack.style.left = "100%";                       function backToCenter(event){                 var body = document.querySelector('body');                 body.removeEventListener( 'webkitTransitionEnd', backToCenter, false);                 body.innerHTML = bodyBackContent;                 body.style.opacity = 1;                 body.style.left = 0;                 replaceLinks();              }                       function moveToLeft(event){                 var body = document.querySelector('body');                 body.removeEventListener( 'webkitTransitionEnd', moveToLeft, false);                 body.addEventListener( 'webkitTransitionEnd', backToCenter, false);                 body.style.opacity = 0;                 body.style.left = "-100%"             }           }        }

有人会问,这是一个最好的方法么?我也不知道,但是它确实管用,而且通过谷歌我没有找到更好的解决方案。

这里提供有一个。(只WebKit浏览器有效)

你也可以通过获取完整的源代码。

文章出自:

译文出自:

转载地址:http://mjchl.baihongyu.com/

你可能感兴趣的文章
window 下 安装 apache(nginx)+mysql+php架构
查看>>
DNS原理概念详解
查看>>
对lucene 的总结
查看>>
使用xmake编译swift代码
查看>>
我的友情链接
查看>>
大数据处理相关的好博文
查看>>
essential C++
查看>>
Git 服务器搭建与客户端安装
查看>>
使用 Java8 Optional 的正确姿势
查看>>
[C++ 学习笔记 1] delete 和 delete [] 的本质区别
查看>>
quartz 2.0.2 hello
查看>>
关于编程工具链
查看>>
Android新的ARM开发工具包 解决平台混乱问题
查看>>
TensorFlow人工智能引擎入门教程之二 CNN卷积神经网络的基本定义理解。
查看>>
Linux系统新手学习的11点建议
查看>>
Github上传代码菜鸟超详细教程【转】
查看>>
SVN上的项目如何迁移到Git
查看>>
多级<select>选择的实现(利用selectedIndex属性)
查看>>
Apache Rewrite
查看>>
转贴: QUARTUS 实现远程控制的简单方法
查看>>