20130706早读课:页面细节处理心得

标签: 交互体验 产品设计 用户研究 | 发表时间:2013-07-06 07:12 | 作者:admin
出处:http://reynold.cn

推荐理由:这是一位迅雷重构工程师写的偏技术文档,从他对一个个页面的细节处理来看出他的责任心。责任心,是技术、产品、视觉、交互、用研、测试不可或缺的一部分,但经常被我们遗忘。一起来看看他对细节的处理。

YM01

 

一个页面的细节,从重构的角度去看,页面的精细度,代码的可读性、扩展性,为下游服务的代码注释,交互接口样式的书写,代码的压缩,图片的优化等都可以归为细节处理,我的理解是,刚才提到的细节处理是每个重构工程师都应该具备的基本技能,不能算是真正意义上的细节,好的细节处理应该是从用户出发,应该是发自内心对用户的一种关怀。下面有两个小例,都是我们做页面时常见的板块,如果我们细心处理一下,也许会让用户会倍感贴心。

 

轮播图

YM02

如上图,轮播图上切换按钮(如上图小方块按钮)是用户对轮播图进行交互的重要入操作点,重要程度毋庸置疑,在分析设计稿的时候发现,按钮的可点击区域太小了,只有22×2!要用户完成图片的切换显然是一件非常痛苦的事,这会给用户带来不愉悦的心情。因此,我们得想办法让点击区域变大

可能的解决办法:

1 、建议产品让视觉设计师把按钮改大一点。

知会产品后,我们会先用代码把按钮调大,给出截图让视觉设计师看。

高为3像素,视觉没问题,但点击区域还是太小,如下图:

YM03

高为4像素,点击区域勉强可以接受,但视觉设计师觉得按钮太大,视觉效果不佳,如下图:

YM04

结果设计师还是坚持用原来的按钮大小

如果重新设计按钮,改变按钮的表现形式呢? 显然不可行,视觉设计师不会为了一个小改动而轻易改变视觉风格,即使设计师同意,改完之后设计稿要重新给产品审核,通过审核之后再给重构,显然这个方法的沟通成本和改动成本都太高了,性价比不高。

2 、保留原设计,通过CSS 来控制

轮播图这类按钮的结构我们一般会这样写:

YM14

要实现色块区域是22×2,实际可点区域是22×12,两个方法:

1)用背景图:这个色块比较简单,纯色方角,样式完全可以控制,没有必要用背景图;

2)用样式控制:为了使可点区域高为12像素,那么作用元素的标准盒子有以下几种方式

A、height+padding;

B、height+border;

C、height+伪元素(E:after / E:before);

由于背景色会作用到padding区域,考虑兼容高低端浏览器,A方式不适用,B和C都可以用

我们先看一下B方式—- height+border,CSS代码如下:

YM15

运行代码后会发现,IE6和IE7显示正常,但是Chrome、Firefox、Opera、IE7+的border区域也填充了背景色,囧

YM05

(Chrome、Firefox、Opera、IE7+)

YM06

(IE6、IE7)

我们再看一下C方式—-height+伪元素(E:after / E:before),CSS代码如下:

YM16

这回Chrome、Firefox、Opera、IE7+显示正常了,但是IE6和IE7并不支持伪元素E:after和E:before,色块消失了:

YM07

(Chrome、Firefox、Opera、IE7+)

YM08

(IE6、IE7)

因此,我们只好用B方式(height+border)对IE6 和IE7 作hack处理了,最终代码如下:

YM17

到此,轮播图按钮的可点击区域由原来的22×2增加到了22×12,是原来的6倍,这样用户就可以很容易地完成图片的切换,舒心的操作。

线上效果: http://daquan.xunlei.com/download_channel.html

 

导航

站点导航,一般都会有3态的设计:常态,Hover态,选中态。为了美观,很多产品都喜欢把链接虚线框去掉:

YM09

于是我们在a标签加一个CSS样式outline:none,把点击虚线框去掉。但是IE6和IE7不支持这个属性,为了兼容IE6和IE7,在a标签加上hidefocus=”true”属性,甚至有不少同学可能会加上对用户非常不友好的onfocus=”this.blur()” 。

onfocus=”this.blur()”和hidefocus=”true”都可以实现去掉IE6、IE7的点击虚线,但是前者会使链接聚焦触发时失去焦点,焦点重新回到文档的最开始。而后者是IE的私有属性,不会使链接聚焦触发时失去焦点

为什么我们要强调链接的聚焦?考虑到视障人士会用到读屏软件,读屏软件会读出获得聚焦的标签里内容,而onfocus=”this.blur()”中断了视障用户的Tab键路径,导致Tab光标无法聚焦页面的下一个控制器(链接、表单域、object等)。

有兴趣的同学可以阅读一下淘宝UED的: 《盲人站长深恶痛绝的onfocus=”this.blur()”》

下图为该文章中去除虚线框方法对比图

YM10

其实,正如《盲人站长深恶痛绝的onfocus=”this.blur()”》作者所写,“虚线框的存在有它的合理性”,本人也很认同。假设有这样的一个情景:你到某个站点查资料,当你发现合适的资料,刚想移动鼠标去打开链接的时候,发现鼠标坏了,但你想在换鼠标之前把资料阅读完,于是你会按Tab键去寻找该链接的焦点,这时候,虚线框就会帮助你很快找到该链接,愉快完成资料阅读。

虽然这个情景发生的概率微乎其微,但不可否认这种以人为本的设计出发点是好的,是合理的。我们回头看去虚线框的需求,把虚线框去掉的做法显然违背虚线框的设计初衷,而兼容IE6和IE7的处理方法也不符合结构、样式、行为相分离的原则,因此我们得想一个既能满足实际需求,又能遵从虚线框的设计意图,并且不影响页面结构的方法。现在线上的处理方法是:

1、 给导航的a标签加一个a:focus的伪类样式,使之与Hover样式一样,显示Tab的选中状态

2、IE6、IE7不支持a:focus伪类,则保留原链接虚线框,不作hidefocus=”true”处理,优雅降级,保证Tab可选

线上页面导航: http://daquan.xunlei.com/

YM11

(Chrome、Firefox、Opera、IE7+)

*注:Opera的Tab键默认只选中Form元素,要用Ctrl+上下方向键才能选中链接

YM12

(IE6、IE7)

用Opera的同学可以看到,当链接获得焦点时,链接边框样式还是存在,如下图:

YM13

可见CSS的outline:none并没有使Opera的链接框去掉。

解决的方法是自定义一个outline样式,然后让边框透明就行了,因此可以这样处理:

E:focus{ outline:1px solid transparent}

现附上此方法的Demo:

Demo

 

最后

也许普通用户不会用到Tab选中链接这样的操作,但我们不能因此而不照顾特殊用户群,而像导航此类在网站比较重要位置上的链接,更应该给予照顾。

对于重构工程师,这些小的技术处理并不需要太高的实现成本,作不作处理都可以高精度还原设计稿,视觉设计师不会要求我们把轮播图按钮点击区域变大一点,产品也不会让我们为导航链接加上Tab选中样式,只不过有一个问题我们要问一下自己,页面到底是为谁而做?想清楚后,相信我们会更关心用户体验,更注意细节的处理,也就不会为多加几行代码感到麻烦或没有必要, 在我们力所能及的范围下,多几行代码就能为用户带来更多,为什么不去做呢? 

记得曾经带我的师傅对我说过,重构工程师不应该满足100%还原设计稿,更应该去追求101%还原度,多出的1%就是对页面细节的把控,也可以说是重构工程师的主观能动性。这个1%在100%中所占比例并不起眼,但如果处理得好,可以使页面更显级数。

Via: 迅雷CUED

如果看到这段文字,证明您已经看完这篇文章了,有什么收获有什么感想有什么不赞同,我们期待您的留言评论,并诚挚邀请您加入“互联网er早读课”QQ群,一同交流每天文章的心得并结识同行。官方3群:42447965,加群密码“职业信息+城市+姓名”,否则不予通过,入群后请修改群名片。

 

我们猜您可能也喜欢:

20121227早读课:Android与iOS在交互细节上的差异

20130616早读课:Google平面设计指南--产品图标的设计细节

20130310早读课:用户体验小细节,如何让Web链接完美的跳转到App

20121031早读课:产品的细节决定成败?不,很可能溃败。

20130308早读课:10个打动人的“注册登录”细节案例
无觅

相关 [页面] 推荐:

Web页面入门

- - 可咔酷 | 网络杂货铺
开发页面在很多人眼里很简单,大部分的人都会说不就是把效果图变成网页嘛,哪里需要那么多的时间,一点技术含量都没有. 确实html页面没有js那么多复杂的交互,也不需要和后台数据打交道,但并不能代表就没有技术含量,也不是人人都能做好的. 页面结构好坏直接会影响到css代码的质量,也会影响js和后台的开发,还会影响到以后功能的扩展和代码的优化.

关于页面字体

- Hu DongHai - DBA Notes
关于 Web 页面字体这方面,我是门外汉,弄不出来长篇大论 -- 这样也没必要,从观察统计上简单分析一下看看就够了. 几个页面字体适配度比较好的,HTML body 字体的定义:. 豆瓣:font: 12px/162% Arial,Helvetica,sans-serif;. 新浪微博:font-family: Arial,Helvetica,sans-serif;.

页面构建小工具

- Han - 所有文章 - UCD大社区
我们将在本文中介绍一些关于页面构建常用的一些小工具,大部分是基于firefox的插件,通过这些小工具可以让我们在页面构建中事半功倍.. 页面bug调试工具–Firebug. 实时测量工具–Measureit. 实时颜色选取工具–Colorzilla. SEO优化工具–SenSEO. CSS使用效率优化工具–CSS usage.

新的Google 404页面

- bubble - Solidot
谷饭 写道 "Google悄悄上线了新版本的404页面,如:http://www.google.com/solidot. 页面首先说,That’s an error,之后简要提示路径不存在,然后调侃了一句:That’s all we know. 然而在IE6浏览器里,那个可爱的机器人就没有了. 我们发现了一个错误,看标题栏,三个叹号,被打成两个叹号的一个1...".

Google.com页面或被修改

- Lcube - Solidot
大约大去之期不远矣 写道 "刚刚测试发现,从墙内访问google.com时页面的关键字输入框失踪,同时css错位. 比对页面源代码之后发现,是html中input相关代码被移除.

页面导航原则 [www.aliued.com]

- - ChinaUEDCollection
著名的格林童话故事里面汉赛尔和格莱特知道后母想要在深林里面丢掉他们的计划,将面包屑撒在来时的路上,虽然当月亮升起时,面包屑被鸟吃掉了,但是现在的互联网设计师们从这个故事中找到了灵感,设计出不会被鸟吃掉的固定“面包屑”. 图1:互联网上各种各样的面包屑. 汉赛尔和格莱特为了在森林中找到回家的路,撒下了面包屑,这是一种导航方式,如果没有被鸟吃掉,无论走到森林的任何地方都可以知道如何从当前的位置走回家去.

iframe子父页面调用

- - CSDN博客Web前端推荐文章
1、iframe子页面调用 父页面js函数. 子页面调用父页面函数只需要写上window.praent就可以了. 子页面取父页面中的标签中的值,比如该标签的id为“test”,则:. 但是我在chrome浏览器下却发现此方法无效了. 查了半天才了解,在chrome 5+中,window.parent无法在file://协议中运行,但是发布了之后http://协议下是可以运行的.

如何做页面优化

- - 互联网的那点事
改版是在原有基础上做较大的改变;而优化是做些小的调整,快速提升效果. 但不管是改版还是优化,都需要考虑以下的步骤:. 1.问题现状(数据、用户反馈等)/  用户调研(问卷、访谈等内容,尽量结合数据看)/  竞品分析. 2.结合上面三点,确定优化目标. 3.根据目标确定设计计划(如何达成目标). 4.结果检验(数据、用户反馈等指标).

div在页面中的高

- - Web前端 - ITeye博客
这里是javascript中制作滚动代码的常用属性. 页可见区域宽: document.body.clientWidth;. 网页可见区域高: document.body.clientHeight;. 网页可见区域宽: document.body.offsetWidth   (包括边线的宽);. 网页可见区域高: document.body.offsetHeight (包括边线的宽);.