到现在也做了不少的h5,遇到了不少的坑,也对曾经的经验教训总结一下

到现在也做了不少的h5,遇到了不少的坑,也对曾经的经验教训总结一下。

主要做过的项目有:

每个项目都有这样那样的难点,现在都分别总结一下。

1. 智图派-腾讯财经

这个项目的亮点是进入到首页后,就是根据当前的时间,每一位都滚动到对应的数字。我实现的思路是:计算当前时间与设定好的时间节点之间的时间差;

将时间差转换为数组;

根据数组的位数,给每一位都填充上0-9这10个数字;

使用CSS3的transition和transform,获取每个数字的高度和当前位置的数字,计算出滚动的距离。

CSS:.timer .t{

font-size: 3rem;

line-height: 3rem;

border: 2px solid #a2a2a2;

height: 62px;

overflow: hidden;

display: inline-block;

margin-right: 4px;

}

.timer .t div{

-webkit-transition: -webkit-transform 800ms cubic-bezier(0.42, 0, 0.58, 1) 300ms;

-ms-transition: transform 800ms cubic-bezier(0.42, 0, 0.58, 1) 300ms;

transition: transform 800ms cubic-bezier(0.42, 0, 0.58, 1) 300ms;

}

.timer .t em{

padding: 7px 12px;

display: block;

font-style: normal;

}

HTML:

JS:(function(){

var left = '';

function set(){

var point = 1451577600, // 节点

now = parseInt( Date.now()/1000 ); // 当前时间

left = now-point;

left = (left+'').split(''); // 将数字转换为数组

var html = '';

for(var i=0, len=left.length; i

html += '

';

for(var j=0; j<10; j++){

html += ''+j+'';

}

html += '

';

}

$('.timer').html( html );

}

set();

$('#start').on('click', function(){

var em_height = $('.timer .t').find('em').eq(1).outerHeight(true);

for(var i=0, t=left.length; i

var y = '-'+em_height*parseInt(left[i])+'px';

$('.timer .t').eq(i).children('div').css({'-webkit-transform': 'translate3d(0, '+ y +', 0)', 'transform': 'translate3d(0, '+ y +', 0)'});

}

})

})();

演示:

2. 腾讯财经年终策划

用户可以直接从链接进来,或者从朋友分享的链接进来。不过从这两个入口进入后,呈现出的页面是不同的。直接进入时,loading完成之后会显示首页;而从朋友的分享结果进入时,会首先展示刚才那个朋友选择的心情,直到用户点击“我要定制心情曲线”按钮才进入到首页。因此需要把这两个链接区分开来。

我设定的方法是 当用户分享链接时,在链接后添加一个参数,当进入该页面时,判断链接里是否有这个自定义的参数;若有这个参数,则表明是从分享的链接进入的,首先显示分享结果页面;否则显示首页。因为要显示上个朋友的心情结果,得需要把这个朋友的心情添加到链接中,然后下次打开时,从这个链接中取出。

每个题目都有四种心情可供选择:赞,喜,哦,怒!为了不在链接中使用汉字,因此使用0, 1, 2, 3分别表示这四种心情,然后用|隔开。如btf=1|1|0|3|0|0|0|2|2|0|0|0|0,第一个1不是心情。

还有标题,结果页面中心情标题根据用户在这12个事件中选择的心情的分部,显示不同的标题。share_title :{

xi : '小主心情高亢,2016一起装逼一起飞', // 7个及其以上大喜的表情

ai : '哀伤侵占小主内心,求新年红包安慰', // 7个及其以下哀伤的表情

rdm : [ // 其他随机结果

'世界那么大,钱包那么小,求安慰',

'小主心情波澜,2016只求河蟹日子',

'过去一年日子不太平,且过且珍惜吧',

'心情乌云你快走开,新年要有新气象',

'别问我心情如何,2016年我想静静',

'2015真是蛋蛋的忧伤,2016滚粗',

]

}

从上面的代码可以看到,两个固定的心情和6个随机的心情。两个固定的表情可以从上面的btf参数计算出,但是随机的心情则需要传递一个参数,指定某一个心情,使当前用户和从分享链接进入的用户看到的心情是一样的。因此我在链接中又添加一个share_title的参数,这个参数的值一共有三种,xi, ai, 0(1, 2, 3...),根据不同的值展示不同的心情标题。

因此分享后的链接是是这样的:http://finance.qq.com/zt2015/nzcehua1/2015pandian.htm?btf=1|1|0|3|0|0|0|2|2|0|0|0|0&share_title=2

3. NBA全明星推广

这个html5没什么难点,不过也从这个项目才知道,移动端的音频或视频必须通过用户手动触发后才能播放。// 对不支持自动播放的设备使用一次性的 touchstart 事件触发

$(document).one('touchstart', function() {

bgMusic.play();

});

4. 看见淤青有多难

这个项目已经在3月份的时候总结过了,可点击链接查看。

5. 奥运暗黑室

奥运暗黑室是在奥运即将结束时推出的一款项目,旨在考验用户的记忆力。

在这个项目中用到了打字效果,使用的是TheaterJS,不过也没太多复杂的效果,就是用打字效果出现两行字,中间有个删除的功能;当两行字全部显示完毕后,展示出按钮。var theater = new TheaterJS();

theater.describe("Vader", .76, "#vader")

theater

.write("Vader:一大波僵尸")

.write(-2)

.write("挑战记忆的新闻来袭")

.write(200)

.write(function(){

$('.loading p').removeClass('target').eq(1).addClass('target');

})

theater.describe("Say", .76, "#say")

theater

.write("Say:证明自己实力的时刻到了")

.write(200)

.write(function(){

$('.bgimg, .loading .text .btn, .loading .up').addClass('fadeIn animated');

$('#say').removeClass('target');

$('.music').show();

});

TheaterJS链接:

6. 摇一摇

这是为了推广快报做的一个h5活动,在h5里摇签,在快报里解签。

摇一摇:;(function(){

// 摇一摇

var SHAKE_THRESHOLD = 2000, // 灵敏度。 数字越小,灵敏度越高

last_update = 0,

x=y=z=last_x=last_y=last_z=0;

function init(){

last_update=new Date().getTime();

if (window.DeviceMotionEvent) {

window.addEventListener('devicemotion',deviceMotionHandler, false);

} else{

// alert('您的手机不支持摇一摇');

}

}

function deviceMotionHandler(eventData) {

var acceleration =eventData.accelerationIncludingGravity;

var curTime = new Date().getTime();

if ( (curTime - last_update)> 100) {

var diffTime = curTime -last_update;

last_update = curTime;

x = acceleration.x;

y = acceleration.y;

z = acceleration.z;

var speed = Math.abs(x +y + z - last_x - last_y - last_z) / diffTime * 10000;

if ( speed > SHAKE_THRESHOLD) {

// 摇一摇发生的事件

// ...

}

last_x = x;

last_y = y;

last_z = z;

}

}

init();

})();

总结

以后还会有更多的移动项目等待我们,也还会遇到各种各样的问题。每次遇到问题时,就总结一下,涨一次教训。

什么叫h5项目_对移动端h5项目的一点总结相关推荐

  1. 手机python软件怎么创建项目_创建成功的 Python 项目

    创建成功的 Python 项目 Patrick Altman 2012 年 3 月 14 日发布 Python 开源项目的生态系统丰富多样.您可以在这一雄厚的基础上完成下一个开源项目的生产.此外,这也 ...

  2. 软件测试真实项目_企业中软件测试的项目流程

    首先做软件测试你得先清楚软件测试的概念吧,什么是软件测试,软件测试的意义. 其次,那么开始做一个项目的软件测试,我们要从哪里入手,一般我们都从需求介入,所以参加需求评审,需求澄清,到最后的需求落地. ...

  3. eclipse创建springboot项目_创建一个 Spring Boot 项目,你会几种方法?

    我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 42W+,如下图: 2017 年由于种种原因,就没有 ...

  4. JAVA工作总是维护项目_开发维护大型 Java 项目的建议

    原标题:开发维护大型 Java 项目的建议 假设你是正在开发和维护一个包含2000个类并使用了很多框架的Java开发者.你要如何理解这些代码?在一个典型的Java企业项目小组中,大部分能够帮你的高级工 ...

  5. svn导出java项目_【SVN】导出项目后报错汇总

    1.jsp页面内:标点符号,引入报错 解决方法:关闭此项目的jsp验证,右键,最下面一个,Verification,右边一溜只留一个dtd就好 2. 编码问题-乱码 刚拉下来的项目编码可能与Myecl ...

  6. react项目_如何从零开始创建React项目(三种方式)

    在开发React项目前最关键的当然是项目的创建,现在的前端工程化使得前端项目的创建也变得越来越复杂,在这里介绍三种从零开始创建React项目的方式,分别是在浏览器中直接引入.使用官方脚手架create ...

  7. umi脚手架搭建的项目_还在从零开始搭建项目?手撸了款快速开发脚手架!

    之前开源了一款项目骨架mall-tiny,完整继承了mall项目的整个技术栈.总感觉mall-tiny集成了太多中间件,过于复杂了.这次对其进行了简化和升级,使它成为了一款拥有完整权限管理功能的快速开 ...

  8. python怎么打开h5文件_用Python打开.h5文件

    我正在尝试用Python读取h5文件. 该文件可以在this link中找到,名为"vstoxx_data_31032014.h5".我试图运行的代码来自Yves Hilpisch ...

  9. django新建一个项目_如何使用Django创建项目

    django新建一个项目 Now that we know how to create virtual environments and use pip, we can begin building ...

最新文章

  1. R语言多因素方差分析及评估假设检验
  2. Nagios监控Windows server 2003 系统
  3. 2020年李永乐线性代数强化笔记-向量
  4. 1165: 零起点学算法72——首字母变大写
  5. python字典编码_python中包含UTF-8编码中文的列表或字典的输出
  6. win7 以太网媒体断开怎么处理_工业以太网协议的历史及其优势
  7. 咖啡口味介绍及存储方式
  8. 3. 使用Keras-神经网络来拟合非线性模型
  9. 数据科学 IPython 笔记本 四、Keras(下)
  10. AWS Academy 学生报名考证
  11. 字符串正则替换、点替换横杠
  12. Linux账户设置能su不能ssh,ssh无法登录可以su切换的问题
  13. 如何修改电脑密码(在不知道密码的前提下)
  14. 为什么对渣土车的监控和管理如此重要
  15. nfc java_NFC 开发
  16. 小码农的职场人生一:由张小平离职引发的一些吐槽
  17. graphpad软件百度云分享吧_还在用百度云软件?来试试这四个良心的云盘软件吧!...
  18. 软件开发架构师的职责
  19. JavaScript弹出对话框的三种方法
  20. 创新工场笔试题2013年校园招聘

热门文章

  1. 【车间调度】车间调度问题的特点
  2. 因《乔布斯传》而开发的XC3566
  3. nginx api接口代理配置细节
  4. android强制缓存写磁盘,Android缓存之DiskLruCache磁盘缓存的使用
  5. 每一种颜色都有其对应波长的色光吗?
  6. Qt读写Excel--QXlsx基本使用1
  7. [小说连载]张小庆,在路上(8)- 要不要换工作
  8. 【fpdlink显示】DS90UH948-Q1 连接947 fpdlink显示方案黑屏问题调试1
  9. 我的助理辞职了——给不听话的下属看看
  10. 杰奇1.7用php53,杰奇1.7小说系统多模版一库教程