以前项目是嵌入在微信公众号中,页面访问很慢。想提高访问速度,有更好的,相似原生的体验最好的解决方法就是改成单页app.
单页app用到了mobilebone和iScroll插件。html
mobilebone的结构是这样的:git
body #page1.page.out[data-title="page1"] #page1.page.out[data-title="page2"] #page1.page.out[data-title="page3"]
每一个page都要定义一个id,.page表示是个页面, .out表示隐藏,data-title能够定义好每一个页面的title.在a标签中定义 <a href="#page1"> 就能够显示该页面。github
用iScroll遇到的问题都是经过看demo解决的,主要是结构的问题。因此要看demo里卖弄都很统一。wrapper的第一个子元素不能给定固定的高度。由于是单页app,因此在一个页面要建立多个iScroll对象。在每一个页面初始化的时候要调用refresh方法。例如:api
Mobilebone.callback = function(page_in, page_out) { // foot的active 状态处理 var id_in = page_in.id, id_out = ""; if(!id_in) return; var ele_link_in = null, ele_link_out = null; if(ele_link_in = document.querySelector(".footer a[href$="+id_in+"]")) { $(ele_link_in).parents("li").addClass("active"); }; if(page_out) { id_out = page_out.id; ele_link_out = id_out && document.querySelector(".footer a[href$="+ id_out +"]"); $(ele_link_out).parents("li").removeClass("active"); }; iscroll.refresh(); };
Mobilebone.callback是每一个page显示初始化函数。在api中能够看到。
在tab切换的时候若是tab中的内容长度不同也要记得调用refresh()方法。
http://qbaty.iteye.com/blog/1354380这个解释的api很详细。
iscroll github地址微信