月度存档: 十月 2009

良好的用户体验,必须从5个方面全方位把握

“用户体验(User Experience,简称UX 或 UE)是一种纯主观的在用户使用一个产品(服务)的过程中建立起来的心理感受。因为它是纯主观的,就带有一定的不确定因素。个体差异也决定了每个用户的真实体验是无法通过其他途径来完全模拟或再现的。但是对于一个界定明确的用户群体来讲,其用户体验的共性是能够经由良好设计的实验来认识到。计算机技术和互联网的发展,使技术创新形态正在发生转变,以用户为中心、以人为本越来越得到重视,用户体验也因此被称做创新2.0模式的精髓。”—–百度百科

  现在,几乎人人都在谈、在做用户体验,有为了用户体验而用户体验的;有不知何为用户体验,就乱指挥一通的;有做了几天可用性改进就宣称飞跃的…..当然,也有很多是踏踏实实为广大人民做实事,做好产品设计的。

  不管怎样,以下的思考文字中希望有那么一点点是闪光的,希望这些东西能给朋友们一些帮助和借鉴。

  看了百度百科的词条,结合自己的经验,可以这么理解:用户体验,是通过接触某样有形或者无形的事物后,建立在用户身上的一个范围比较广的情感叠加,跟乐高积木是一样一样的,堆得好,可以很高,某一块不稳,就会全倒下。那,到底如何全方位来把握用户体验呢?

  1.一个购书体验:流程流畅度

  给自己买一本书,我想到的是淘宝和当当,有人会说:买书当然去当当或者卓越了。我不是这么认为的,首先,都是网购,淘宝也卖书,并且能讨价还价,能了解更多细节,而当当不能,但如果在淘宝上价格太高,没有当当划算,且不是很急着买,那我会选择当当。

  —–这里面有两个点:网络购物习惯养成的条件反射和买卖家之间的交流,这两个是体验的一部分。

  决定上当当后,打开首页,logo旁的“十年品质 放心低价”,有点暖,而导航下左边的这个绿色突出的区域也表明,当当主要核心业务就是书!整个配色在视觉上挺舒服,而导航和搜索也让我很快找到我要买的书—《教父》。

  ——站点的载入速度是个大问题,当当基本能在3秒内打开首页,不错的优化。广告语和用色贴合国内消费人群的心理,起码对于我来说,觉得:可信赖,不太乱。

  找到我要的书后,我点击了购买,进入了我的购物车,有一个疑虑、不舒服:

  —–不知道这个是好,还是坏,可能对于不同的人,有不同的感受,这个推荐本身是很好的,但让我疑惑的是,它大面积的空间和众多黄色按钮,让我找不着北了,因为到这步,

  我心里想着:该结算了,但处于商业目的,推荐区域在一定程度上(或许我比较闲的时候,推荐对我有用)干扰了我。

  接下来的结算流程很顺利,我选择的是货到付款,很好的是:最后提示我,发货地点是广州,会在2-3天后发货,邮箱也很快收到订单生成的邮件。接下来就是等待,三天后,接到声音不太舒服的电话,说是当当网的,我想,应该是书到了。可怜的是,对方收钱时,零钱不够。

  —–最终是买到书了,快递的小伙子找不了我的零钱,我也没要了,书的包装不太好。

  整个过程,总体打分8.5分。总的来说,这本书的购买的体验流畅度是很满意的,没有出现意外的中断,要知道体验的流程能完整的走完才意味着,这个产品、这个服务,是可用的,这是根基,其他的视觉效果和折扣等等,都是建立在他之上。而流畅度,就跟用户在这个过程中碰到疑惑和不解的强烈程度是成反比的,想提高流畅度,就需要捋清楚,让这个核心购买流程以最短的时间完成,减少干扰。

  2.边缘体验,一样的重要

  上面的购书例子,有个地方很重要,那就是最后的线下体验,我把他作为边缘体验的一种,有别于线上的核心业务。

  订单下来后,系统能根据我提交的送货地址,选出最近的发货地点,减少物流时间,并且让购买者知道,这个点是好的,说明:我一直为你着想。

  但快递环节却有点问题,因为存在一定的不可控因素。送快递的人,需要经过一定的培训,否则,是在砸当当的牌子。电话中的语气让人不舒服,书的包装问题也让人不安,书角磨破了,就这两个点,购买者就有可能把整个交易撤销。

  属于边缘体验范畴的还有很多,例如:你到了牛商网举办的一个论坛,门前的海报是否能够传递本次论坛的信息、是否能够将牛商网的品牌进行诠释,给你的良好感觉有多少?再例如市场营销人员的着装和谈吐,在用户眼里,在一定程度上,也在间接体验他们的产品,起码,穿着拖鞋的营销,不会给人好的感觉。边缘体验,一样重要。

  3.无形的体验

  无形的体验有两种,一种是某用户在使用、体验产品后得出口碑传播给另外的用户或者潜在用户,对于后者,他已开始无形情感体验;另一种是用内而外的,是生产此产品的团队或者说这个企业由内发出的一些信息,有意的或无意的信息。

  对于第一种,有时候口碑会决定了某个用户是否与产品有缘,举个例子,小姨买了一个xx牌子的冰箱,用了两个月,灯管坏了,打开冰箱门灯不亮了,联系维修后好景不长,还是坏,于是她对死党说:以后打死也不会买xx牌的东西了,这个死党有可能以后就跟这个牌子绝缘了,因为她对“它”的无形体验很不好。当然,这个口碑产生的根源,就是产品质量本身。

  而第二种范围包括的就比较大了,如果是上市公司,那么你的财务状况是否良好;组织结构是不是频繁大调整;员工整体对外的信息放射是否正面;网络媒体,传统媒体传播的信息是否有利公司发展(不管是不是软文),这些,都是用户或者潜在用户、普通人可能接触到的一面,这也是一个无形的体验。

  4.引领用户的“体验”

  在初步发展阶段,无数产品和服务都是跟随用户需求,用户需要什么,就给什么,以找准需求点为重中之重,这个是对的,但到了产品成熟期,到了市场占有率足够高后,需要考虑的,就是引导潮流,引领用户朝双赢的方向。web中的视觉概念设计,汽车中的概念车,走的,就是这个路线。

  5.核心产品体验

  这个放在最后是因为是人都知道,核心产品,必须做好可用性,通过不断迭代,适当做好减法,提供一个体验好的产品。具体到各个产品和服务各不相同,无需展开。

  总之,用户体验设计并不复杂,但需要耐得住性子,需要注意触角,因为,从接触这个品牌那一刻起,用户体验就在进行,是叠加还是消耗呢?就看能否尽量做到人人UE,能否将这些好的idea引导、聚合。

文章出自中国网络营销第一站——牛商网(http://www.nsw88.com),转载请注明出处并加上链接。

浏览器兼容手册

javascript部分

1. document.form.item 问题
问题:
代码中存在 document.formName.item(“itemName”) 这样的语句,不能在FF下运行
解决方法:
改用 document.formName.elements["elementName"]

2. 集合类对象问题
问题:
代码中许多集合类对象取用时使用(),IE能接受,FF不能
解决方法:
改用 [] 作为下标运算,例:
document.getElementsByName(“inputName”)(1) 改为 document.getElementsByName(“inputName”)[1]

3. window.event
问题:
使用 window.event 无法在FF上运行
解决方法:
FF的 event 只能在事件发生的现场使用,此问题暂无法解决。可以把 event 传到函数里变通解决:
onMouseMove = “functionName(event)”
function functionName (e) {
    e = e || window.event;
    ……
}

4. HTML对象的 id 作为对象名的问题
问题:
在IE中,HTML对象的 ID 可以作为 document 的下属对象变量名直接使用,在FF中不能
解决方法:
使用对象变量时全部用标准的 getElementById(“idName”)

5. 用 idName 字符串取得对象的问题
问题:
在IE中,利用 eval(“idName”) 可以取得 id 为 idName 的HTML对象,在FF中不能
解决方法:
用 getElementById(“idName”) 代替 eval(“idName”)

6. 变量名与某HTML对象 id 相同的问题
问题:
在FF中,因为对象 id 不作为HTML对象的名称,所以可以使用与HTML对象 id 相同的变量名,IE中不能
解决方法:
在声明变量时,一律加上 var ,以避免歧义,这样在IE中亦可正常运行
最好不要取与HTML对象 id 相同的变量名,以减少错误

7. event.x 与 event.y 问题
问题:
在IE中,event 对象有x,y属性,FF中没有
解决方法:
在FF中,与 event.x 等效的是 event.pageX ,但event.pageX IE中没有
故采用 event.clientX 代替 event.x ,在IE中也有这个变量
event.clientX 与 event.pageX 有微妙的差别,就是滚动条
要完全一样,可以这样:
mX = event.x ? event.x : event.pageX;
然后用 mX 代替 event.x

8. 关于frame
问题:
在IE中可以用 window.testFrame 取得该frame,FF中不行
解决方法:
window.top.document.getElementById(“testFrame”).src = ‘xx.htm’
window.top.frameName.location = ‘xx.htm’

9. 取得元素的属性
在FF中,自己定义的属性必须 getAttribute() 取得

10. 在FF中没有 parentElement,parement.children 而用 parentNode,parentNode.childNodes
问题:
childNodes 的下标的含义在IE和FF中不同,FF的 childNodes 中会插入空白文本节点
解决方法:
可以通过 node.getElementsByTagName() 来回避这个问题
问题:
当html中节点缺失时,IE和FF对 parentNode 的解释不同,例如:
<form>
<table>
<input/>
</table>
</form>
FF中 input.parentNode 的值为form,而IE中 input.parentNode 的值为空节点
问题:
FF中节点自己没有 removeNode 方法
解决方法:
必须使用如下方法 node.parentNode.removeChild(node)

11. const 问题
问题:
在IE中不能使用 const 关键字
解决方法:
以 var 代替

12. body 对象
FF的 body 在 body 标签没有被浏览器完全读入之前就存在,而IE则必须在 body 完全被读入之后才存在
这会产生在IE下,文档没有载入完时,在body上appendChild会出现空白页面的问题
解决方法:
一切在body上插入节点的动作,全部在onload后进行

13. url encoding
问题:
一般FF无法识别js中的&
解决方法:
在js中如果书写url就直接写&不要写&

14. nodeName 和 tagName 问题
问题:
在FF中,所有节点均有 nodeName 值,但 textNode 没有 tagName 值,在IE中,nodeName 的使用有问题
解决方法:
使用 tagName,但应检测其是否为空

15. 元素属性
IE下 input.type 属性为只读,但是FF下可以修改

16. document.getElementsByName() 和 document.all[name] 的问题
问题:
在IE中,getElementsByName()、document.all[name] 均不能用来取得 div 元素
是否还有其它不能取的元素还不知道(这个问题还有争议,还在研究中)

17. 调用子框架或者其它框架中的元素的问题
在IE中,可以用如下方法来取得子元素中的值
document.getElementById(“frameName”).(document.)elementName
window.frames["frameName"].elementName
在FF中则需要改成如下形式来执行,与IE兼容:
window.frames["frameName"].contentWindow.document.elementName
window.frames["frameName"].document.elementName

18. 对象宽高赋值问题
问题:
FireFox中类似 obj.style.height = imgObj.height 的语句无效
解决方法:
统一使用 obj.style.height = imgObj.height + “px”;

19. innerText的问题
问题:
innerText 在IE中能正常工作,但是 innerText 在FireFox中却不行
解决方法:
在非IE浏览器中使用textContent代替innerText

20. event.srcElement和event.toElement问题
问题:
IE下,even对象有srcElement属性,但是没有target属性;Firefox下,even对象有target属性,但是没有srcElement属性
解决方法:
var source = e.target || e.srcElement;
var target = e.relatedTarget || e.toElement;

21. 禁止选取网页内容
问题:
FF需要用CSS禁止,IE用JS禁止
解决方法:
IE: obj.onselectstart = function() {return false;}
FF: -moz-user-select:none;

22. 捕获事件
问题:
FF没有setCapture()、releaseCapture()方法
解决方法:
IE:
obj.setCapture();
obj.releaseCapture();
FF:
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
if (!window.captureEvents) {
       o.setCapture();
}else {
       window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
}
if (!window.captureEvents) {
       o.releaseCapture();
}else {
       window.releaseEvents(Event.MOUSEMOVE|Event.MOUSEUP);
}

CSS部分

div类

1. 居中问题
div里的内容,IE默认为居中,而FF默认为左对齐
可以尝试增加代码margin:auto

2. 高度问题
两上下排列或嵌套的div,上面的div设置高度(height),如果div里的实际内容大于所设高度,在FF中会出现两个div重叠的现象;但在IE中,下面的div会自动给上面的div让出空间
所以为避免出现层的重叠,高度一定要控制恰当,或者干脆不写高度,让他自动调节,比较好的方法是 height:100%;
但当这个div里面一级的元素都float了的时候,则需要在div块的最后,闭和前加一个沉底的空div,对应CSS是:
.float_bottom {clear:both;height:0px;font-size:0px;padding:0;margin:0;border:0;line-height:0px;overflow:hidden;}

3. clear:both;
不想受到float浮动的,就在div中写入clear:both;

4. IE浮动 margin 产生的双倍距离
#box {
float:left;
width:100px;
margin:0 0 0 100px; //这种情况之下IE会产生200px的距离
display:inline; //使浮动忽略
}

5. padding 问题
FF设置 padding 后,div会增加 height 和 width,但IE不会 (* 标准的 XHTML1.0 定义 dtd 好像一致了)
高度控制恰当,或尝试使用 height:100%;
宽度减少使用 padding
但根据实际经验,一般FF和IE的 padding 不会有太大区别,div 的实际宽 = width + padding ,所以div写全 width 和 padding,width 用实际想要的宽减去 padding 定义

6. div嵌套时 y 轴上 padding 和 marign 的问题
FF里 y 轴上 子div 到 父div 的距离为 父padding + 子marign
IE里 y 轴上 子div 到 父div 的距离为 父padding 和 子marign 里大的一个
FF里 y 轴上 父padding=0 且 border=0 时,子div 到 父div 的距离为0,子marign 作用到 父div 外面

7. padding,marign,height,width 的傻瓜式解决技巧
注意是技巧,不是方法:
写好标准头
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
高尽量用padding,慎用margin,height尽量补上100%,父级height有定值子级height不用100%,子级全为浮动时底部补个空clear:both的div
宽尽量用margin,慎用padding,width算准实际要的减去padding

列表类

1. ul 标签在FF中默认是有 padding 值的,而在IE中只有margin有值
先定义 ul {margin:0;padding:0;}

2. ul和ol列表缩进问题
消除ul、ol等列表的缩进时,样式应写成: {list-style:none;margin:0px;padding:0px;}

显示类

1. display:block,inline 两个元素
display:block; //可以为内嵌元素模拟为块元素
display:inline; //实现同一行排列的的效果
display:table; //for FF,模拟table的效果
display:block 块元素,元素的特点是:
总是在新行上开始;
高度,行高以及顶和底边距都可控制;
宽度缺省是它的容器的100%,除非设定一个宽度
<div>,<p>,<h1>,<form>,<ul> 和 <li> 是块元素的例子
display:inline 就是将元素显示为行内元素,元素的特点是:
和其他元素都在一行上;
高,行高及顶和底边距不可改变;
宽度就是它的文字或图片的宽度,不可改变。
<span>,<a>,<label>,<input>,<img>,<strong> 和 <em> 是 inline 元素的例子

2. 鼠标手指状显示
全部用标准的写法 cursor: pointer;

背景、图片类

1. background 显示问题
全部注意补齐 width,height 属性

2. 背景透明问题
IE: filter: progid: DXImageTransform.Microsoft.Alpha(style=0,opacity=60);
IE: filter: alpha(opacity=10);
FF: opacity:0.6;
FF: -moz-opacity:0.10;
最好两个都写,并将opacity属性放在下面

把合适的标签用到合适的位置

怎样才能写出符合标准的又具有语义的html页面?就是把合适的标签用到合适的位置上。不要只依赖div,span ,html博大精深,我们现在只用其中的一部分。

悟道WEB标准:统一思想 遵循标准

这是我在蓝色理想的论坛里看到的文章,写的真好,可以说是写出了我的心声,一定要在这记录下,原文如下。

WEB标准,从我大二开始接触到毕业后的第一份工作“页面重构工程师”,从接触标准到蓝色理想标准区版主的四年多时间里,WEB标准已经成为我生活中的一个主旋律了。为什么在“前端开发”火热的现在还提这个东西,我觉得有必要在我新的职业生涯开始的时候做一个总结。

    既然是悟道web标准,就不会那么简单了,期望是站在架构的层面,全局的看待web标准,期望站在众多的页面工程师的立场和企业老板的立场谈论这个话题。

    革命要成功,思想要统一,我因为有必要给每一个页面工程师的作战单位配备一个“政委”,时刻监督和提醒页面工程师们要认真贯彻W3C的中心思想和规范条款,不得松懈。心里只有一个想法,W3C标准好!

    这也就是我这篇的主题“统一思想,遵循标准”,不论你受到多大的诱惑,非标准化的应用可以帮你加薪,晋级,table的布局可以快速的完成你的需求,你都要忍住,抵制诱惑。因为诱惑都是暂时的,真理才是永恒。

    统一思想,WEB标准的思想是什么?

    一、就是W3C系列规范,html4.0,xhtml1.0,css2.1,ECMAScript,DOM,XML等等,作为一个页面工程师,要学会熟读标准,认识和了解标准。要检验你的代码是否和标准一致,要了解W3C标准的优势和用意,假如用语言距离,普通话让中国人彼此能够沟通,英语让世界人可以沟通。W3C标准就是让页面在不同的终端都可以运行,让使用各种终端的用户都能浏览你的页面,也就是跨越平台,获得更大众化的用户的使用。

    二、分离,结构,表现,行为三者的分离,结构是严格的语义化HTML文档编写,CSS是HTML页面的视觉处理,行为是通过用户行为的触发去动态改变页面,内容修改,功能的完成等等。分离不是简单的文件的分离,而是严格的分工的分离,不要用table去布局,那是css的事情,不要用hx去调整字体大小,那也是CSS的事情。结构=内容+语义化的解释内容。表现=页面内容的呈现效果。行为=用户触发去改变内容和HTML和CSS。

    web标准是一场革命,这是我在腾讯的时候认识到的,革命——就是推翻旧的落后的体制,建立一个全新的先进的体制。

    落后的页面工程师体系,美工代劳的页面代码,唯独IE才能浏览的页面代码,不需要写代码用图形工具直接导出的页面代码,大量的流量消耗的页面代码,速度慢的像蜗牛的页面代码,程序员看到就头大发麻的页面代码,每次改版修改都要打动干戈,重复产生的页面代码,一种让页面工程师和民工一样的页面代码。

    我们当然要革命它,取代他,创造全新的页面工程师体系和页面质量,独立的页面工程师完成的页面代码,跨越平台的页面代码,只要能解析页面的设备都能够访问和浏览,手写的页面代码,整齐划一,层次分明,最低流量消耗的页面代码,程序员喜欢的页面代码,访问速度超快的页面代码,改版可重复利用的页面代码,让页面工程师抬起头来,骄傲的称自己是工程师,书写的也是计算机代码的页面代码。

    革命总会产生抵制和倒退,再懒惰的,自甘低下的,为了蝇头小利背叛标准的页面工程师面前标准渐渐的遭受非议,再低级的,弱智的程序员面前,没有可视化的辅助找不到再那里填数据,大谈table布局优秀的时候,当没眼光的老板和项目经理要求上线紧急,图形工具直接生成页面的时候,我们的革命遭受到阻碍和抵抗,我们的信心也在动摇。这个时候怎么办,如果放弃革命就失败了,理想也就破灭了,前途是光明的,道路是曲折的,只能说坚持就是胜利,中国的民主革命既然能成功,为什么我们的页面革命成功不了。

    总结:革命尚未成功,同志仍需努力。统一思想排除杂念遵循标准。

    下篇预告:悟道web标准——让W3C标准兼容终端

原文地址:
http://bbs.blueidea.com/viewthread.php?tid=2952130&pid=4726477&page=1&extra=page%3D1