动画在webapp中的现状
难在何处
动画的挣扎
var FastRender = new inherit({
initialize: function(opts) {
this.handleOpts(opts);
this.init();
},
handleOpts: function(opts) {
if (!opts || !opts.doms || !opts.doms.length) throw 'FastRender param error';
this.doms = opts.doms;
this.container = opts.container || $(window);
this.renderContainer = {};
this.step = 50;
},
init: function() {
this.initImgContainer();
this.initRender();
this.bindEvents();
},
bindEvents: function() {
//为container绑定事件
this.container.on('scroll.fastRender', $.proxy(function() {
this.initRender();
},
this));
},
initImgContainer: function() {
var el, i, len, offset;
for (i = 0, len = this.doms.length; i < len; i++) {
el = $(this.doms[i]);
offset = el.offset();
//这块卡
// (function (el) {
// setTimeout(function () {
el.css({
'width': offset.width,
'height': offset.height
});
// }, 0);
// })(el);
if (!this.renderContainer[offset.top]) {
this.renderContainer[offset.top] = [];
}
this.renderContainer[offset.top].push(el);
}
},
/*
这里需要对对象遍历做优化,以坐标搜索替换数值搜索
*/
initRender: function() {
var height = this.container.height();
var srollHeight = this.container.scrollTop();
var k, _imgs, el, i, len, els;
this.doms.removeClass('wl');
for (k in this.renderContainer) {
// if ((parseInt(k) < srollHeight + height + this.step) && (parseInt(k) > srollHeight - this.step)) {
if ((parseInt(k) < srollHeight + height - this.step) && (parseInt(k) > srollHeight + this.step)) {
els = this.renderContainer[k];
for (i = 0, len = els.length; i < len; i++) {
el = $(els[i]);
el.find('.lazy_wrapper').show();
}
} else {
els = this.renderContainer[k];
for (i = 0, len = els.length; i < len; i++) {
el = $(els[i]);
el.find('.lazy_wrapper').hide();
}
}
} // for
},
destroy: function() {
//为container绑定事件
this.container.off('.fastRender');
}
});
var f = new FastRender({
doms: $('.js_hotel_detail')
});
这个demo想法很美好,若是可实现的话,无疑是移动端一大功臣,事实上是
浏览器:10分
IOS(4000):6分
android小米(1800):5分
化为4核:4分(1800)
其表现在浏览器上很好,手机上便不行了,所以今日的论证失败,该方案还需优化
这个结果其实可以预见,在渲染上手机根本跟不上,所以平滑度就跟不上,方案抛弃
换个方向想,若是可以绕过DOM树过多问题也是可取,比如移动时候直接以一个白页做动画,这个方案比较可耻
另一个方案是使用cavas为本页面生成一个缩略图,每次移动实际上是缩略图,如此动画是顺畅了,但是此方案甚难,还可能引起其它问题,此方案我得再做验证
结局
结局并不美好,此问题我未找到很好的解决方案,移动端的动画还有很长的路要走......
动画在webapp中的现状的更多相关文章
- 【HTML5&CSS3进阶04】CSS3动画应该如何在webapp中运用
动画在webapp的现状 webapp模式的网站追求的就是一个体验,是HTML5&CSS3浪潮下的产物,抛开体验不说,webapp模式门槛比较高: 而体验优化的一个重点便是动画,可以说动画是w ...
- WebApp中的页面生命周期及路由管理
最近切换到一个新项目,使用的技术栈是Require+Backbone,鉴于对鞋厂webapp框架的了解,发现这个新项目有些缺陷,主要是单纯依赖Backbone造成的,也就是Backbone的好和坏都在 ...
- tomcat中session在两个webapp中实现共享
现在遇到一个需求就是要求完成简单的单点登录,通过在一个tomcat实例中放置两个webapps应用ROOT应用和CEO应用来完成在ROOT应用登录后,在CEO可以直接使用,而未在ROOT应用登录时,不 ...
- [Swift实际操作]八、实用进阶-(3)闭包在定时任务、动画和线程中的使用实际操作
闭包的使用相当广泛,它是可以在代码中被传递和引用的具有独立功能的模块.双击打开之前创建的空白项目.本文将演示闭包在定时任务.动画和线程中的使用.在左侧的项目导航区,打开视图控制器的代码文件:ViewC ...
- 零元学Expression Blend 4 - Chapter 41 Flash做的到的Blend也可以!轻松制作拥有动画的MenuBar!(中)
原文:零元学Expression Blend 4 - Chapter 41 Flash做的到的Blend也可以!轻松制作拥有动画的MenuBar!(中) 我们接着进行动画MenuBar的制作 接续着上 ...
- 如何在webapp中做出原生的ios下拉菜单效果
github:https://github.com/zhoushengmufc/iosselect webapp模仿ios下拉菜单 html下拉菜单select在安卓和IOS下表现不一样,iossel ...
- tomcat ROOT中的lib和webapp中的lib的作用
相同点:都是用来存放jar包的 不同点:和webapps同个目录下的那个lib文件夹所放的jar包对tomcat 服务器和你的webapp 来说都是可以调用的(这时候假如tomcat和web都依赖某个 ...
- webapp中的meta
<!--开发后删除--> <meta http-equiv="Pragma" name="no-store" /><!--必须联网 ...
- fakeLoader.js-针对WebApp中的 “假”预加载
在做移动端网站的时候,前端有时候需要一些过渡效果,当然我们肯定首先想到肯定是用css3做一个过渡动画,nice,那我给大家一个好用的jQuery插件吧,让你三行代码实现这种过渡动画效果. 1.由于该插 ...
随机推荐
- Android笔记——数据库升级与降级
一.概述 SQLite是Android内置的一个很小的关系型数据库.SQLiteOpenHelper是一个用来辅助管理数据库创建和版本升级问题的抽象类.我们可以继承这个抽象类,实现它的一些方法来对数据 ...
- Java Thread 的使用
Java Thread 的使用 Java Thread 的 run() 与 start() 的区别 Java Thread 的 sleep() 和 wait() 的区别 一.线程的状态 在正式学习 ...
- C#开源日志Nlog入门
c#语言使用的日志比较多,比如:Log4.NLog等,今天我就简单随笔记录哈NLog的使用. 1.NLog的安装: 直接在VS编译器中打开程序包管理器,输入Install-Package NLogin ...
- ASP.NET Core 1.0 静态文件、路由、自定义中间件、身份验证简介
概述 ASP.NET Core 1.0是ASP.NET的一个重要的重新设计. 例如,在ASP.NET Core中,使用Middleware编写请求管道. ASP.NET Core中间件对HttpCon ...
- MongoDB 数组
MongoDB是文档型数据库,每个文档(doc)表示数据的一项记录.相比关系型DB的row只能使用简单的数据类型,doc能够使用复杂的数据类型:内嵌doc,数组.MongoDB的数组是一系列元素的集合 ...
- JAVA基础代码分享--模拟人机猜拳系统
问题描述: 一.主要功能: .电脑与人互动,实现“剪刀.石头.布”的游戏: 1.1 角色登陆: ******************** ***欢迎进入猜拳游戏*** **************** ...
- iPhone 6/plus iOS Safari fieldset border 边框消失
问题:iPhone6 plus 手机浏览网页,fieldset border 边框消失. 示例代码: <div> <fieldset style="border: 1px ...
- sublime3破解版sublime3注册码
Sublime Text 3 官方网址:http://www.sublimetext.com/ Mac下载地址: http://c758482.r82.cf2.rackcdn.com/Sublime% ...
- C# 原样复制excel工作表
在excel中,工作表是工作薄的组成部分,一个工作薄可以由一个或多个工作表组成,一个工作薄也可以说是一个excel文档,正因为如此,excel工作表的复制也就分为两种类型:在同一文档之内复制和在不同文 ...
- C语言 第五章 循环结构
一.for 请在屏幕上输出1000个*号 printf("*************************...."); #include "stdio.h" ...