【编者按】本文来自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. Storm工作流程

    为什么storm的数据来自于消息队列? Storm的解决问题的scope主要在于流计算,说流计算之前我们先简单的说下一般数据处理系统的过程.一般数据处理简单说要有几个环节:数据采集,数据计算,结果输出 ...

  2. Android基础知识之拼写检查框架

    原文:http://android.eoe.cn/topic/android_sdk 拼写检查器框架 Android平台提供了一个拼写检查器的框架,来方便你在你的应用中实现并使用拼写检查.这个框架是A ...

  3. SonarQube学习入门指南

    1. 什么是SonarQube? SonarQube 官网:https://www.sonarqube.org/ SonarQube®是一种自动代码审查工具,用于检测代码中的错误,漏洞和代码异味.它可 ...

  4. 细说php(二) 变量和常量

    一. 变量的声明 1. php中声明变量的方法:  $var = 123; 2. php是弱类型的语言, 变量的类型由存储的值决定 注: Java是强类型语言, 声明变量一定要先指定类型 二. 变量的 ...

  5. Socket网络编程--FTP客户端(2)(Windows)

    上一篇FTP客户端讲到如果制作一个简单的FTP客户端,功能实现了,但是后面我们发现了问题,就是FTP是使用明文进行操作的.对于普通情况来说就无所谓了.但有时候要安全的一点的话,就应该使用FTP的安全版 ...

  6. MinGW环境libssh2安装

    由于实习工作中要用到基于sftp协议开发一个网络程序,同时要实现运行在Windows平台上,找来找去就这个libssh2库好用,在网络上算是有那么一点点的文档可以看.这个库还不是现成的,还要进行源代码 ...

  7. 菜鸟学Java(十九)——WEB项目测试好帮手,Maven+Jetty

    做WEB开发,测试是一件很费时间的事情.所以我们就应该用更简单.更快捷的方式进行测试.今天就向大家介绍一个轻量级的容器——jetty.今天说的etty是Maven的一个插件jetty-maven-pl ...

  8. javascript基础拾遗(七)

    1.对象的继承__proto__ var Language = { name: 'program', score: 8.0, popular: function () { return this.sc ...

  9. 如何将 iOS 工程打包速度提升十倍以上

    如何将 iOS 工程打包速度提升十倍以上   过慢的编译速度有非常明显的副作用.一方面,程序员在等待打包的过程中可能会分心,比如刷刷朋友圈,看条新闻等等.这种认知上下文的切换会带来很多隐形的时间浪费. ...

  10. android 调用系统相机拍照 获取原图

      好吧,为了这个问题又折腾了一整天.之前在网上找来的方法,如果在onActivityResult中直接用data.getData()的方式来生成bitmap,其实获取的是拍照生成的缩略图!看看尺寸就 ...