前端编程提高之旅(十八)----移动端web流行交互技术方案研究

   在停止实习后,生活最大变化在于没有项目的压力,可以根据兴趣场景,探索技术实现。这个过程对于个人来说,动力自内而外,需求自上而下,都由个人把握。

   生活在移动互联网井喷的今天,同时又关注前端技术,平常对微信端流行的交互(或者说玩法)有着特殊的敏感性。如果说之前接触MVC框架还是对单页面网站、CSS3前沿特效有一个概念的话,微信朋友圈及好友分享网页,则把国内网页构建的流行趋势,从幕后推向前台。

   乐帝通过研究移动端web流行交互,构建起了一个初步可行的技术方案,用来实现单页面与DOM动画。在这个过程中乐帝对于单页面概念、动画、技术通用实现等,有了更深层次理解。

一、研究背景及现实需求

   1.研究背景

    如上所述,微信端朋友圈或好友消息中,分享的复杂交互的网页有两个特点:单页面切换与DOM元素特效。采用以上技术常见应用场景有:宣传、答题、讲故事。从本质上说,移动端采用如上两种交互形式,更像是替代flash在PC端的功能。单页面对应动画中的分帧的概念,DOM元素特效则对应动画中各种特效。

   2.现实需求

   如果说乐帝对前端技术的敏感算一点现实需求的话,那么乐帝近期做的答题项目以及为高中校友做一个给客户的新年祝福,更是迫切的需求。

   乐帝答题项目交互做的很简单,不断实现DOM的显示与隐藏,这正是对应动画分帧的功能。采用频繁的DOM操作,来不断进行view的切换,显然可以更加自动化。同时进入每个view页面可以更加绚丽多变,由此构成研究的现实需求。

二、技术研究点及研究过程

   1.技术研究点

    如研究背景和需求所述,主要研究点为单页面切换与CSS3特效。在这两个研究点之外,还有一个对于浏览器全屏功能的研究,此研究点主要基于新年祝福项目中,乐帝考虑到为与PPT展现方式保持一致,需要有个全屏功能。

   2.研究过程

   首先通过搜索引擎搜索相关技术,这里乐帝推荐两个技术源:jQuery插件库网站梦想天空博客园博客

   通过以上搜索确定了四个库或插件备选:

   有了以上四个备选,逐个研究,最后确定技术方案。

三、研究详细过程

   乐帝研究顺序依次是:全屏插件、DOM元素动画类库、全屏滚动。

   1.全屏插件的研究

   乐帝通用研究顺序可以表述为:阅读API、查看代码例子并作修改、应用到项目中。

   首先阅读了全屏API实现原理,由此篇文章在DOM元素数据结构中确定了全屏API的位置。

   通过这半年对可视化的研究,乐帝考虑技术问题更多是从数据结构层次理解,还是有不少心得体会。全屏API构建如下:

   研究jQuery全屏插件,发现插件文档不全,不能预期实现全屏切换。于是通读了此插件源码,源码实现非常简单:

   阅读完源码,即可根据需要,修改全屏插件,实现个性化定制。但后期乐帝考虑到,全屏除了视频使用场景外,网页还是非常不符合用户习惯的,后期技术方案并没有涉及此插件。但此研究过程,还是非常值得以后借鉴。

   2.DOM元素动画类库的研究

   乐帝本想除了WOW.js,再研究下文字特效框架Textillate.js,但考虑到文字特效本质上,也在DOM特效范畴内,就没有进一步单独研究文字特效。

   WOW.js采用了CSS3与jQuery动画互为依托,保证了兼容性。WOW.js作为类库,功能非常底层,用于构建动画要解决两个问题:

  • 构造成帧,需要对DOM动画执行状态进行判断。
  • 如采用事件监听成帧,需要不断加深嵌套,代码耦合性过高。

  为解决如上问题,乐帝采取了如下解决方案:

  • 通过查找API例子,了解到动画监听事件:开始、结束、迭代。由此有了动画执行状态的判断。解决了成帧的问题。
  • 通过采用单页面插件,每个view作为场景,由此用于减轻嵌套层级的问题。

   解决如上问题乐帝构建了采用WOW.js构建动画的方案:

   并对常用动画做了分类:

   3.全屏滚动页面切换插件研究

   通过研究pagePiling.js,此插件API基于状态构建:

   API写法非常类似单页面框架,代码书写会更优雅,此插件用于构建动画中对应场景。

四、技术方案研究结果

通过以上研究确定了以WOW.js构建场景内帧动画、以pagePiling.js构建场景的技术方案。

以此方案构建的简单新年祝福应用下载地址为:http://download.csdn.net/detail/yingyiledi/8281101

五、研究的抽象过程

乐帝回顾整个研究抽象过程如下:需求、技术选型、API阅读并结合例子修改、应用到项目中。

时间: 2024-10-11 15:16:39

前端编程提高之旅(十八)----移动端web流行交互技术方案研究的相关文章

前端编程提高之旅(八)----D3.js数据可视化data join解析

   D3.js作为一门轻型的可视化类库,非常便于将数据与web界面元素绑定,实现可视化.乐帝d3.js入门是大体看了一遍<d3js数据可视化实战>这本书,D3操作非常类似于jquery的使用,具体体现在两点: 选择器模块都采用CSS3标准 方法可以链式调用    有了jquery使用基础,相信再加上以上书籍的例子,调试很容易上手使用D3.js,乐帝目前认为D3.js与jquery区别在于:D3.js独有的数据结构概念及对SVG操作方便的实现.而深入理解D3原理,以上皮毛的理解就不够用了.  

前端编程提高之旅(二)----网站常见特效的jquery实现

最好的编程语言是逻辑,前端各种交互特效的实现多可以用jquery实现,特效可以纷飞,内在逻辑则基本不变.这一篇文章主要介绍jquery实现常见特效背后的逻辑.    1.通过类名获取元素集合    首先来看一个js原生代码不支持的方法,通过类来获取元素集合. document.getElementsByClassName=function(classname){ var retnode = []; var myclass = new RegExp('\\b'+classname+'\\b');/

前端编程提高之旅(三)----浏览器兼容之IE6

在爱奇艺实习期间,乐帝主要负责移动端活动页面的制作,由于移动浏览器是随着智能手机兴起的,这就决定了移动端不会重蹈浏览器兼容问题的覆辙,一开始就比较好的支持web标准,而纵观整个互联网行业,移动web开发还处于起步阶段,在很长一段时间pc端web作为主要的服务形式还会继续.从小来说作为一名前端开发人员,不了解浏览器兼容也会贻笑大方.这篇文章基于<IE7web标准之道>,对浏览器兼容做一个概览.    时间到了2014年,大概很少人会想到IE7发布之后,时隔这么多年IE6仍然占据市场7%的浏览器份

前端编程提高之旅(十五)----jquery事件

HTML与js交互主要通过用户与浏览器操作页面时引发事件.文档或某些元素发生某些变化或操作时,浏览器会生成事件.jquery增加了事件处理能力.    jquery事件部分可以从以下五部分理解:    一.加载DOM函数    这里指的如下方法: $(document).ready(function(){ }) 相比于传统的window.onload方法,前者在执行时机与可否多次使用上区别于后者.    前者是在DOM完全就绪回调就会被调用,后者则是网页所有元素(包含关联文件)完全加载到浏览器后

前端编程提高之旅(十六)————jquery中的动画

    上一篇文章对jquery中的事件做了总结,这篇文章主要对jquery中的动画做一下总结归类.最近微信端分享中,有很多页面交互及动画做的非常受欢迎,非常符合移动端体验.看似花哨的动画从本质上都脱离不了编写动画的基本方法.乐帝将jquery动画部分内容,做了一个简单的归类.     如下图:     如上图所示,无论多复杂的动画,从实现上都采用这些最底层的动画方法.本篇将从动画方法和与动画状态有关的方法讲起.    一.动画方法    1.同时改变高.宽.不透明度方法    这里涉及show

前端编程提高之旅(十)----表单验证插件与cookie插件

    实际项目开发中与用户交互的常见手法就是採用表单的形式.取得用户注冊.登录等信息.而当用户注冊或登录后又须要记住用户的登录状态.这就涉及到经常使用的两个操作:表单验证与cookie增删查找.     项目开发当然能够手动或用原生代码解决以上两个问题,而最好的实践应该是站在巨人的肩膀上.从合理性猜測角度和不反复造轮子的原则上,都应该对成熟的技术,实行拿来主义,更加高速.高效.稳定的将精力放在项目逻辑实现上.    一.表单验证插件(jQuery Validate)    官方描写叙述:仅仅须

前端编程提高之旅(十二)----position置入值应用

这次内推项目用到的遮罩及其页面下方按钮都涉及一个概念position置入值得概念.效果图如下: 一个元素position属性不是默认值static,那么该元素被称为定位元素.定位的元素生成定位框,其定位基于四个特性(置入值):'top','right','bottom','left'. 现在的问题在于当置入值在声明与否起什么作用.    一.声明置入值得情形    其置入值的参照物即为最近的申明了"position"为"absolute\relative\fixed的祖先元素

前端编程提高之旅(二)----站点常见特效的jquery实现

最好的编程语言是逻辑,前端各种交互特效的实现多能够用jquery实现.特效能够纷飞.内在逻辑则基本不变.这一篇文章主要介绍jquery实现常见特效背后的逻辑.   1.通过类名获取元素集合    首先来看一个js原生代码不支持的方法.通过类来获取元素集合. document.getElementsByClassName=function(classname){ var retnode = []; var myclass = new RegExp('\\b'+classname+'\\b');//

前端编程提高之旅(七)----marionette实现todoMVC

   marionetteJS是在backboneJS基础上进行更简洁的操作,平常开发主要用到几个涉及到view的概念:CollectionView.CompositeView.ItemView.LayoutView.这几个概念中,用的最广的当属ItemView.ItemView相对于backbone中view的概念方便之处在于:不用显式定义render方法,而是由ItemView本身完成将数据渲染到模板,并将视图追加到el,由此可见减少了很多流程化的操作. 同时marionetteJS还有很多