【编者按】本文来自Smashing Magazine,作者为Brolik的联合创始人、首席创意官Drew Thomas。文中介绍了Web中增加动感设计可带来的好处及进行动感设计的几点建议,如采用图层技术、运用前后过渡及开发单页面应用。他还通过CSS3代码演示,进一步说明了动感设计的实现方式。下面为文章的简译内容。

数字体验越来越注重对现实的模拟,每天都在进步。特别是对物理世界的模拟,使用得越来越广泛,把人与机器之间的距离进一步缩短。

Web动感的过去

Flash曾经有过一段光辉的历史,那是网络视频刚兴起的年代。但是过后人们发现很多内容其实是无效、速度慢、冗余的,Flash渐渐走了下坡路。随后JS和jQuery的出现,实现了较大的突破,但是使用起来还不十分方便。随着CSS3动画功能的出现,硬件设备性能的进一步提升,设计师们现在能随心所欲地透过层叠样式表来编写有趣的互动页面或App了。

Web动感的未来

动感页面和动感App为人们的生活带来了无限乐趣,那么有哪些技术值得关注呢? 
Layers(图层)

图层技术可以说是应用得最为广泛的一项技术,这在iOS7中体现得淋漓尽致。比方说控制中心,从屏幕底部滑上来后,会覆盖当前部分屏幕。(可参见该网站上的视频演示

图层的重要之处是方便设计师隐藏相关信息,在需要显示的场合快速显示,从而避免低效的整画面渲染,同时能够使用户有前后过渡进行缓冲而不会觉得太突兀。

Context(前后过渡)

这里不妨以Instacart iOS App来举例说明前后过渡的重要性。可参见该网站上的GIF演示,里面的物品图片从当前位置移动到一个新位置,下方再显示具体信息。这样的显示方式符合自然规律, 让人觉得过渡自然。

另外一个例子是下拉式菜单,点击某个层叠图片后再显示出整个菜单列表。否则如果点击后整个画面突然被菜单项填满,那样的用户体验是十分糟糕的。GMail和Facebook App在下拉技术应用上可谓是佼佼者,大家不妨进去看看。

SPA(单页面应用)

当我们把动感和场景过渡加入到用户界面后,下一步应该会想如何控制它们使之构成一个整体。为了更好的实现页面到页面的过渡,单页面应用随之应运而生了。

例如我正在编写的一个网站:http://app.danceityourself.com,里面的登入和登出操作便使用到了SPA。里面使用JS为登入页面添加了一个动作类,触发了CSS过渡动画。

SPA的好处是过渡自然,高效,符合逻辑;让用户感觉正在访问的不像是一般的网站,而更像一个本地应用。

如何使用CSS动作

万事开头难,我的建议是先从最基本的开始入手,而不建议一下子就编写过于复杂和花俏的页面。

CSS过渡

在现实世界中,事物间的转化都是存在一定过渡的。反之,没有过渡的转化会让人觉得太突然。

我们先看下面这段代码:

  1. button {
  2. margin-left:0;
  3. }
  4. button:hover {
  5. margin-left:10px;
  6. }

它的意思是,当光标划过按钮时,该按钮会向右移动10像素。但是这是没有过渡的,给人感觉是瞬移式的,不太符合自然规律。完整的演示请点击这里查看,浏览器前缀等内容是必须的但下面例子里只含核心动作代码,以下不再累述。

接着请看添加过渡动画后的效果,演示链接

  1. button {
  2. margin-left:0;
  3. transition: margin-left 1s;
  4. }
  5. button:hover {
  6. margin-left:10px;
  7. }

添加ease-out关键字,开启慢移功能后,这样看上去就舒服多了,因为大脑对于移动物体会有一定的延迟(残像效应),添加延迟过渡动画后能够使大脑与移动物体的运动同步,从而感觉这就是真实的。更关CSS过渡动画的相关属性介绍,请点击这里进行查阅。

CSS动画

相比于场景过渡,CSS动画相对来说会稍微复杂些。什么时候会应用到呢?一般是为那些希望引起用户注意的页面元素添加动画效果。

请看以下的CSS动画例子,实现的效果是动态显示一个不断变大缩小的圆形。

  1. div.circle {
  2. background:#000;
  3. border-radius:50%;
  4. animation:circleGrow 800ms ease-in-out infinite alternate both;
  5. }
  6. @keyframes circleGrow {
  7. 0% {
  8. height:2px;
  9. width:2px;
  10. }
  11. 50% {
  12. height:40px;
  13. width:40px;
  14. }
  15. 100% {
  16. height:34px;
  17. width:34px;
  18. }
  19. }

里面使用了CSS关键帧技术,把关键帧动画添加到该圆形对象上。

实现过程包含了两个步骤。

第一,使用了animation属性,这有点类似于transition属性,但是能实现更多操作,Animation的详细描述请点击这里进行查阅。为circleGrow指定animation属性,每隔800ms执行一次循环动画。

第二,关键帧。透过设置百分比值0到100,控制了动画变化的速度。示例中分别在0%,50%,100%时对物体进行关键帧大小设定,结合步骤一的设置形成一个动态变换效果。

具体效果和完整示例代码请点击这里进行查看

animation的包含的可选参数如下所示:

  1. animation: [animation name (from keyframe block)] [duration] [timing function] [delay] [number of times the animation repeats] [animation direction] [fill mode]

相关的详细介绍请点击这里进行查阅。 
使用CSS动画的关键点

过渡自然

以开车来说,现实中总不会启动瞬间就能达到100码吧?所以过渡是很有必要的。

建议多动手尝试ease参数,比照添加前后的异同。如果想观看更多过渡(时间)动画的示例,请点击这里进行查看。

参照物与比重

通常来说,大型物品比小型物品体重要大、速度要慢,所以要对页面元素进行评估,然后再设定相关的动作值和时间值。一如前述的按钮移动例子,一个小按钮在1s内移动10像素的确是太慢了,四分之一秒或更小的值会让人觉得更加自然。

写在最后

如果想实现更加复杂的效果,应该多动手操作,这样才能更加体会到个中的奥妙。只有站在用户的角度思考问题,不断减少现实和机器间的距离,那样才能做出更好的用户体验。

让网站和APP更具动感的几点建议的更多相关文章

  1. 为你的网站或App提供免费Https支持

    网站或App Http传输是明文传输,在传输登录或支付相关的数据时,完全是裸奔. 购买证书虽然不是很贵, 但对于个人或初创团队来说,完全可以申请免费的证书来提供Https访问. 本文介绍通过start ...

  2. 移动端网站或APP点击后出现闪动或灰色背景(转)

    遇到这个问题了,记录下,备用~ 文章来源:http://www.lxway.com/846165591.htm --------------------------- 隐藏文本框阴影:(去除文本框默认 ...

  3. 10个最佳的网站和App开发工具

    这个世界充满了创新,开发的激情和决心是实现更高目标的关键因素.在网站开发中,毫无疑问,工具和可用的在线网页和 app 设计资源,发挥了重要的作用. 下面我们将带来一些网站和 app 的最佳工具.   ...

  4. 移动端网站或APP点击后出现闪动或灰色背景

    隐藏文本框阴影 input, textarea{-webkit-appearance: @none;} 取消手机点击屏幕时,会出现的灰块 html,body{-webkit-text-size-adj ...

  5. 各种网站,app的手机号绑定真坑爹

    各种网站,app的手机号绑定真坑爹,无力吐槽,哎

  6. 好的学习网站和app推荐

    1  W3cschool: http://www.w3school.com.cn/ 菜鸟教程: http://www.runoob.com/ 2 视频学习网站和app:网易云课堂.腾讯课堂.慕课网(h ...

  7. IOS开发-提升app性能的25条建议和技巧

    前言 这篇文章介绍了作者开发工作中总结的25个iOS开发tips, 多年之前读过这篇文章.收益良多,基本每一个tips在我的应用开发过程中都使用过.今天把这篇文章又一次整理转发下,与大家一起学习,不论 ...

  8. IOS在自己网站发布APP(企业版$299上线流程)

    最近刚上线一个企业内部应用,前期准备账号和后期上线过程发现网络上的资源不是非常全面,在这里写给大家分享一下我的发布过程 首先是企业账号的申请我们企业账号前前后后一共花了16天时间,由于公司各方面都非常 ...

  9. 支付宝集成+网站支付+APP支付+手机网站支付

    网站支付宝 1.申请签约后获得相应的pid:208***开头和key 这里说明下pc网站支付采用md5加密所以这里只需要提供pid和key不需要上传公钥. 2.下载即时到账demo http://do ...

随机推荐

  1. nginx配置ssl双向证书

    CA根证书制作 # 创建CA私钥 openssl genrsa -out ca.key 2048 #制作CA根证书(公钥) openssl req -new -x509 -days 3650 -key ...

  2. K8s 介绍

    Kubernetes(k8s)是自动化容器操作的开源平台,这些操作包括部署,调度和节点集群间扩展. 使用Kubernetes可以: 1. 自动化容器的部署和复制 2. 随时扩展或收缩容器规模 3. 将 ...

  3. 菜鸟学SSH(七)——Spring jar包详解

    Struts.Hibernate.Spring这类的框架给我们开发带来非常大的好处,让我们更加快速.有效的开发.所以我们在开发中通常都会用到各种框架,每个框架都有很多jar包,每个jar都有各自不同的 ...

  4. Flink安装、高可用性

    Flink JobManager HA模式部署(基于Standalone) SCP 命令 SSH免密码登录,搭建Flink standalone集群 https://blog.csdn.net/jie ...

  5. Java 编程中关于异常处理的 10 个最佳实践

    异常处理是Java 开发中的一个重要部分.它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等.Java提供了几个异常处理特性,以try,catch 和 ...

  6. [SQL Server 2014] SQL Server 2014新特性探秘

    SQL Server 2014新特性探秘(1)-内存数据库   简介 SQL Server 2014提供了众多激动人心的新功能,但其中我想最让人期待的特性之一就要算内存数据库了.去年我再西雅图参加SQ ...

  7. WinEdt 6+SumatraPDF -- 实现TeX文档和PDF文件正反向搜索

    这几天试用了新出不久的WinEdt 6,结合PDF文件的阅读器SumatraPDF,感觉实现TeX文档和PDF文件之间的正反向搜索十分便利,故此向大家特别推荐! CTeX v2.8版本的一项重要功能是 ...

  8. python(46):对字典进行排序,多键值排序

    注:改于2017-12-07,python3 下 Removed dict.iteritems(), dict.iterkeys(), and dict.itervalues(). Instead: ...

  9. 【转】Android项目使用Ant打包,生成build.xml

    记不住,于是原帖转过来,请看原帖:http://blog.csdn.net/ms03001620/article/details/8490238 一.生成build.xml Eclipse中使用Ant ...

  10. vue2.0如何自定义全局变量的方法

    方法一:http://www.jianshu.com/p/04dffe7a6b74 //在mian.js中写入函数 Vue.prototype.changeData = function (){ al ...