为解决手机端wap项目中页面跳转响应慢的问题,基于jquery开发了fr.routeApp.js,使得wap项目拥有原生app的流畅,跳转时亦有native的特效

html部分


<!--定义容器,class="fr-contain" ,初始化路由ID为0,fr-route="0"设置请求页面地址,fr-href="ddbj/index.html" -->
<div class="fr-contain" fr-route="0">
<div class="center menuWap">
<span class="btns btns-big btns-green" fr-href="ddbj/index.html">滴滴报价</span>
<span class="btns btns-big btns-green" fr-href="fls/index.html">福利社</span>
<span class="btns btns-big btns-green" fr-href="gcal/index.html">工程案例</span>
<span class="btns btns-big btns-green" fr-href="zgz/index.html">找工长</span>
<span class="btns btns-big btns-green" fr-href="fwlc/index.html">服务流程</span>
<span class="btns btns-big btns-green" fr-href="ssxy/index.html">舒适学院</span>
<span class="btns btns-big btns-green" fr-href="xxtyd/index.html">线下体验店</span>
<span class="btns btns-big btns-green" fr-href="mfsj/index.html">免费设计</span>
</div>
</div>

引用js部分

$(".menuWap span").frRoute({
baseUrl:"../js/main/",//定义引用js路径,默认../js/main/
paths:[],//定义跳转页面需要用到的js文件名
action:"touchstart",//触发类型,目前有click,touchstart,默认touchstart
type:"slide",//展示类型,目前有slide,fade,auto,默认slide
callBack:function(){},//在引入页面之后执行的js,也可以写到需引入的页面
prevBtn:".fr-back",//定义返回上级页面的按钮默认.backIco
contain:".fr-contain"//定义引入页面的容器,默认.fr-contain
});

引入的html页面,html页面只需要代码部分,无需头和尾

<div class="pad10">
<p class="center font20 line24 top40"> 滴滴报价</p> <span class="btns btns-biggest btns-ye top40 backIco">返回</span>
</div>

fr.routeApp-1.3.js

/**
* Created by wangmiao on 15-10-15.
*/
(function($){
$.fn.frRoute = function(o){
var defs = {
baseUrl:"../js/main/",
paths:[],
action:"touchstart",
type:"slide",
callBack:function(){ },
prevBtn:".fr-back",
contain:".fr-contain"
};
var obj = this;
var opt = $.fn.extend({},defs,o);
var width = $(window).width();
var frRoute = 0;
var methods = {
addJs:function(e){//引入js
for(i=0;i<e.length;i++){
$("body").append('<script type="text/javascript" src="'+opt.baseUrl+''+e[i]+'.js"></script>')
}
},
addCss:function(){
$("body").before('<style>'+opt.contain+'{position:fixed; top:0; left:0; width:100%;-webkit-transition:all .3s ease-out; height:100%; overflow:auto;}</style>');
},
action:function(actionPage,paths,callback){
//创建容器
frRoute = parseInt($(opt.contain).last().attr("fr-route"))+1;
if(opt.type=="slide"){
$("body").append('<div class="'+opt.contain.substr(1)+'" fr-route="'+frRoute+'" style="-webkit-transform:translate3d('+width+'px,0,0);"></div>')
}else if(opt.type=="fade"){
$("body").append('<div class="'+opt.contain.substr(1)+'" fr-route="'+frRoute+'" style="-webkit-transform:scale(0)"></div>')
}else if(opt.type=="auto"){
$("body").append('<div class="'+opt.contain.substr(1)+'" fr-route="'+frRoute+'"></div>')
}
var $currTar = $(opt.contain+"[fr-route="+frRoute+"]");
$currTar.load(actionPage,function(){
//划入当前页面
if(opt.type=="slide"){
$currTar.css({"-webkit-transform":"translate3d(0,0,0)"})
}else if(opt.type=="fade"){
$currTar.css({"-webkit-transform":"scale(1)"})
};
//引入js调用
if(opt.paths.length>0){
methods.addJs(opt.paths)
};
//回调函数
if(callback){callback()}
})
},
backToprevPage:function(e){//返回上一个页面
if(opt.type=="slide"){
e.parents(opt.contain).css({"-webkit-transform":"translate3d("+width+"px,0,0)"});
}else if(opt.type=="fade"){
e.parents(opt.contain).css({"-webkit-transform":"scale(0)"});
};
setTimeout(function(){
e.parents(opt.contain).remove();
},100)
},
init:function(){//初始化
methods.addCss();
obj.on(opt.action,function(){
var nextPage = $(this).attr("fr-href")
methods.action(nextPage,opt.paths,opt.callBack)
});
$(document).on(opt.action,opt.prevBtn,function(){
if($(opt.contain).last().attr("fr-route")=="0"){
return;
}else{
methods.backToprevPage($(this))
}
});
}
};
methods.init()
}
})(jQuery)

仿原生app,native特效的更多相关文章

  1. 关于原生app、webApp、混合app的介绍

    WebApp 原生App(Native App) 混合App(hybrid App) webApp: 用html5,css3 js开发的网页,运行在移动端的浏览器 zepto.angular.vue. ...

  2. 关于OAuth2.0 Authorization Code + PKCE flow在原生客户端(Native App)下集成的一点思考

    写在前面 前几天看了园友的一篇文章被广泛使用的OAuth2.0的密码模式已经废了,放弃吧 被再次提起: Implicit Flow Password Grant,均已被标记为Legacy,且OAuth ...

  3. H5、原生app、混合开发三者比较

    一.概念 a) H5:即Html5,接触过互联网的都知道html,所以很明显h5是html的第5次重大修改的一项超文本标记语言的标准协议. b) 原生:使用原生制作APP(Native app),即在 ...

  4. Do带你解析:原生APP与web APP的区别

    对于DeviceOne原生跨平台APP与WEB APP的区别,很多人还不是很清楚,下面就让小编来简单介绍DeviceOne原生APP的功能以及与WEB APP的区别. 定义,什么是原生APP和web ...

  5. NativeScript - JS 构建跨平台的原生 APP

    使用 NativeScript,你可以用现有的 JavaScript 和 CSS 技术来编写 iOS.Android 和 Windows Phone 原生移动应用程序.由原生平台的呈现引擎呈现界面而不 ...

  6. 原生app,WEBAPP,混合app

    什么叫做原生App? 原生App是专门针对某一类移动设备而生的,它们都是被直接安装到设备里,而用户一般也是通过网络商店或者卖场来获取例如    The App Store  与  Android Ap ...

  7. 原生app与WebApp的区别

    Native App开发Native App开发即我们所称的传统APP开发模式(原生APP开发模式),该开发针对IOS.Android等不同的手机操作系统要采用不同的语言和框架进行开发,该模式通常是由 ...

  8. RN与现有的原生app集成

    https://facebook.github.io/react-native/docs/integration-with-existing-apps.html RN可以很好地支持往一个原生的app上 ...

  9. webAPP 原生APP 对比

    Web App即是一种框架型APP开发模式(HTML5 APP 框架开发模式),该开发具有跨平台的优势,该模式通常由“HTML5云网站+APP应用客户端”两部份构成,APP应用客户端只需安装应用的框架 ...

随机推荐

  1. JavaScript事件对象与事件处理程序

    在学习之前建议请看一下事件流.事件冒泡.事件捕获 一.事件对象 事件对象:在DOM触发事件时,会产生一个事件对象event,这个事件对象包含着所有与事件相关的信息.既然event是事件对象,那么它必然 ...

  2. 【Spring】浅析Spring框架的搭建

    c目录结构: // contents structure [-] Spring是什么 搭建Spring框架 简单Demo 1,建立User类 2,建立Test类 3,建立ApplicationCont ...

  3. iOS 开源项目

    在 Github 上 Star 太多了,有时候很难找到自己想要的开源库,所以在此记录下来.便于自己开发使用,也顺便分享给大家. 动画 awesome-ios-animation收集了iOS平台下比较主 ...

  4. IBatis.Net项目数据库SqlServer迁移至Oracle经验

    最近完成了一个(IBatis.Net+MVC)项目的数据库+代码迁移工作,可把我折腾得~~~ IBatis.Net是一个ORM框架,具体介绍可以问度娘.我之前没用ORM框架使用经验,所以这一路我不是走 ...

  5. 用Kotlin开发Android应用(IV):定制视图和Android扩展

    原文标题:Kotlin for Android (IV): Custom Views and Android Extensions 原文链接:http://antonioleiva.com/kotli ...

  6. .net 配置文件设计工具 Configuration Section Designer

    Configuration Section Designer 简称 CSD 下载及英文介绍地址点击我 以下为简单使用说明 选择自己需要的版本安装好该设计插件之后重启vs 新建选择 在工具栏里选择想使用 ...

  7. CSS3-03 样式 2

    前言 在上一篇的博客中,阐述了 CSS 盒模型中的 Margin.Border.Padding 三个样式.但是总觉得,这些东西好像是 HTML 元素的包装样式,真正的要点是 HTML 元素(即:盒模型 ...

  8. rails程序文件名命名规范

    1 一般文件名是用小写单词加下划线分割,但类的名字用骆驼法.例如 sessions_controller.rb中定义SessionsController. 2 helpers内的文件为辅助类,定义了许 ...

  9. 整型信号量和PV操作(计算机操作系统)

    在整型信号量机制中,信号量被定义为一个整形变量.除初始化外,仅能通过两个标准的原子操作Wait(S)和Signal(S)来访问.其通常分别被称为P.V操作. 描述如下: P操作:S=S-1:如果S小于 ...

  10. Tomcat启动找不到JRE_HOME的解决方法

    在配置测试环境时,将生产服务器的Tomcat目录打包过来后解压后,启动Tomcat后,发现如下问题: [tomcat@gsp bin]$ ./shutdown.sh Using CATALINA_BA ...