2010年3月 的存档

没有评论即拷即用动画函数:透明度渐变、位置移动、尺寸变化

2010年3月31日

首先感谢一下 51js的 abeet 同学 给我们提取出这么简洁的函数
和大家分享一下吧 查看Demo
这三个函数适用于以下情况
1、在做前端页面时,只需要简单的动画效果,不想引入整个动画类,使用本函数。
2、在写js类时,需要用到简单的动画,为了降低藕合性,使用本函数。

使用方法如下:

var fade = function(element, transparency, speed, callback){……}
透明度渐变:transparency:透明度 0(全透)-100(不透);speed:速度1-100,默认为1
例<input onclick="fade('testDiv', 40)" type="button" value="透明度变化" />

var move = function(element, position, speed, callback){……}
//移动到指定位置,position:移动到指定left及top 格式{left:120, top:340}或{left:120}或{top:340};speed:速度 1-100,默认为10
例<input onclick="move('testDiv', {top:400})" type="button" value="垂直移动" />

var resize = function(element, size, speed, callback){……}
//长宽渐变:size:要改变到的尺寸 格式 {width:400, height:250}或{width:400}或{height:250};speed:速度 1-100,默认为10
例<input onclick="resize('testDiv', {height:300})" type="button" value="改变高度" />

核心代码分析
1、获取一个元素的透明度

如果是IE浏览器,则攻取最终样式的滤镜filter的值,再通过正则表达式获取到透明度滤镜alpha的值,如果不存在透明度滤镜值,则透明度为100。
如果是非IE浏览器,那么可以获取最终样式的opacity属性,

function getOpacity(elem){
var alpha;
if(navigator.userAgent.toLowerCase().indexOf('msie') != -1){
alpha=elem.currentStyle.filter.indexOf("opacity=") &gt;= 0?(parseFloat( elem.currentStyle.filter.match(/opacity=([^)]*)/)[1] )) + '':
'100';
}else{
alpha=100*elem.ownerDocument.defaultView.getComputedStyle(elem,null)['opacity'];
}
return alpha;
};

2、设置透明度
这个就简单了,不用管浏览器,通通的设置opacity及filter,
element.style.opacity = start / 100;
element.style.filter = ‘alpha(opacity=’ + start + ‘)’;
实际上这儿我偷了个懒,真正无懈可击的写法,应该是判断一下是否IE浏览器,因为在一些情况下可能使用多个滤镜,这时应该用正则替换alpha滤镜的值,而不是直接设置style.filter = ‘alpha(opacity=’ + start + ‘)’;

3、element.offsetWidth、element.offsetHeight与element.style.width、element.style.height的关系
只有在IE的border-content式盒模型情况下,这两个值才是相等的,即elementoffsetWidth==element.style.width+element.style.paddingLeft+element.style.paddingRight+element.style.borderLeftWidth+element.style.borderRightWidth
而我认为border-content式盒模型是符合修改元素尺寸时的心理预期的,对非border-content式盒模型情况下要作一个尺寸的修正。
在其它情况下应该对该值加以修正

if(!(navigator.userAgent.toLowerCase().indexOf('msie') != -1&&document.compatMode == 'BackCompat')){
//除了ie下border-content式盒模型情况外,需要对size加以修正
var CStyle=document.defaultView?document.defaultView.getComputedStyle(element,null):element.currentStyle;
if(typeof(size.width)=='number'){
size.width=size.width-CStyle.paddingLeft.replace(/D/g,'')-CStyle.paddingRight.replace(/D/g,'');
}
if(typeof(size.height)=='number'){
size.height=size.height-CStyle.paddingTop.replace(/D/g,'')-CStyle.paddingBottom.replace(/D/g,'');
}
}

有人认为以上的修正中默认了padding值的单位是px并且为整数,是不对的,
实际上经由我在ie及firefox下的测试,引用最终样式的padding值,必然是整数,并以px为单位。

4、关于把三个函数合并成一个通用动画函数
以上三个函数的主要逻辑都是一样的:
通过setInterval每隔一定时间修改元素的style属性,以达到动画效果。
所以,把三个函数合并成一个函数是可以的
只是需要在修改特定的属性时出于兼容性,必须作些处理,
因为不同的属性其值类型及单位不一样,不同浏览器下也有区别
如透明度 在非ie下为小数,在ie下是一个特别的滤镜设置
如颜色 一般是用16进制,并有#号前缀
预计这个通用的动画函数的参数会有点多,接口类下
function animator(element, interval, start, end, style, speed, tmp, callback){……}
说明
function animator(元素或元素ID, 计时器句柄,起始值,目标值,需修改的属性, 步进值(增量),值转换过滤方法(用于修改非普通递增递减形的数据,比如16进制颜色递增、前缀符号后缀单位修正), 回调函数)
function animator(‘testdiv’,'bgcolor’,'#336699′,’#aabbcc’,'backgroundColor’,2,changeColor,callback)
颜色修改方法示例(仅供参考,未测试)

changeColor=function(start,end,speed){
var _10to16 = function(color){
function tmp(index){
var tmp = color[index].toString(16);
return tmp.length == 1 ? "0" + tmp : tmp;
};
return "#" + tmp(0) + tmp(1) + tmp(2);
};
var x16to10 = function(color){
if(!/^#[0-9A-Fa-f]{3,6}$/i.test(color))retun color;
function tmp(index){
return color.charAt(index);
};
color = color.substring(1);
if(color.length == 3)
color = tmp(0) + tmp(0) + tmp(1) + tmp(1) + tmp(2) + tmp(2);
return [parseInt(tmp(0) + tmp(1), 16), parseInt(tmp(2) + tmp(3), 16), parseInt(tmp(4) + tmp(5), 16)];
};
var color = x16to10(start),
var end = x16to10(end),
var index = 3;
while(index--)
color[index] = color[index] < end[index] ? min(color[index] + speed, end[index]) : max(color[index] - speed, end[index]);
reutn color;
}

原文见:http://bbs.51js.com/viewthread.php?tid=86901

6 条评论第六期WEB标准化交流会 会后总结 By 刘钢

2010年3月28日

今天去参加了第六期WEB标准化交流会,重复下话题:前端开发在研发流程中与其他岗位协作效率的提升 做个小总结 

先感谢一下北京腾讯给我们提供了场地,水,和公仔,今天听了很多“大虾”们的分享,感受颇深
就说一下小公司前端开发在研发中如何更好的协作吧 

今天会议上几个突出的词:“流程”,“沟通”,“专业“,“吃饭喝酒”:) 

那我就分别说一下自己的见解
1.“流程”,存在即是合理的,社会所必须承受的,就像高房价一样,很多时候“流程”被我们吹捧的就像一个神一样,貌似能解决一切问题,而实际上我认为,流程只是一个比较虚的东西,什么是流程?就是一种大家认可的协作方式,在中小企业里我认为无流程就是最好的流程 

2.“沟通”,为什么沟通?怎样沟通?今天腾讯的页面组leader说得好:“沟通就是情商,情商会从你的绩效考评里反映出来”,什么意思呢?也就是“强制沟通”,我认同这个观点,有效的沟通能够大大提升我们的效率,以及信息不对称等问题,我也希望所有的前端朋友们,一定要学会使用“沟通”这个武器,很多时候他能解决你技能所解决不了的问题 

3.“专业”,专业是什么?kejun兄补充的好-“专业就是饭碗”,我们要提升自身专业度,在研发流程中承担更多的职能,现在有多少公司里,后端不做一些“前端”的活呢?这也可能目前前端开发是“解耦”的最好途径 

4.“吃饭喝酒”,同事间朋友间,需要有一些私下的沟通与了解,适当的有些活动,能够在工作配合上更加的顺畅,当然了吃饭喝酒只是其中之一,更多的在轻松地环境下交流交流,增进一下友谊,本次讨论会后聚餐共16人哦:) 

kejun在最后公布了之前出的html面试题的答案 有兴趣的 移步这里
http://www.iamued.com/qianduan/1373.html

最后借用一张崔凯发的合影结尾吧:) 

第六期WEB标准化交流会合影{点击放大}

没有评论kejun的HTML面试题答案揭晓

2010年3月28日

有这么一段HTML,请挑毛病:

<P>&nbsp;&nbsp;哥写的不是HTML,是寂寞。<br><br>&nbsp;&nbsp;我说:<br>不要迷恋哥,哥只是一个传说

这是原来雅虎一道笔试题(文字变了变),用了很多年了,还没有一个人完全答对过。
下周(3.27)交流会上我会公布答案  点击查看第六期WEB标准化交流会 总结

============== 解答部分 ================

出这道题的动机是,太多人觉得HTML太简单,但它恰恰又是前端开发中最基础最重要的部分。HTML结构设计的合不合理,直接影响到代码易不易维护,灵不灵活,同时事关网页性能,协作效率。碰到不少人认为前端开发就是javascript开发,大错特错啊。javascript, html, css这三个前端开发的基础支柱,性质完全不同又紧密关联,对它们的正确理解,合理应用是专业与非专业的区别。有些后端工程师可以写出很漂亮的JS,但他们真的不懂怎么合理的把js, html, css结合起来应用。对html的准确把握,不像学一般的编程语言那样,而是建立在丰富实践经验和体会的基础上,是前端的工程师的基本功。

这不是一道较真题或是装逼题,正经一道“画鸡蛋”的题(引自http://twitter.com/RageCarrier/status/10712084993)考的是基本功。代码如其人,对一行代码的理解足以反映出他的前端开发素养。

言归正传。这道题的考点:

考点1:html和 xhtml的区别
这行代码在html 4.01 strict下是完全正确的,在xhtml 1.0 strict下是错误一堆的。所以明显是一个考点。在xhtml下所有标签是闭合的,p,br需要闭合, 标签不允许大写,P要小写。同时nbsp和br必须包含在容器里。html下这些都不是错。p在html里是可选闭合标签,是可以不用闭合的。

这个考点告诉你xhtml是多么苛刻。这是基本考点,答对,你能拿到60分。

考点2:考样式分离
用nbsp控制缩进是不合理的。应该用CSS干这事。所以应该删掉nbsp

考点3:合理使用标签
br是强制折行标签,p是段落。原题用连续的br制造两个段落的效果,效果是达到了,但显然用的不合理,段落间距后期无法再控制。正确的做法是用两个p表现两个段落。“我说”后面是正常的文字折行用br是合理的。

上面全答对,你就能拿到100分。

对原题改进的结果:
html 4.01:
<p>哥写的不是HTML,是寂寞。<p>我说:<br> 不要迷恋哥,哥只是一个传说

xhtml 1.0:
<p>哥写的不是HTML,是寂寞。</p><p>我说:<br /> 不要迷恋哥,哥只是一个传说</p>

加分:合理的用语义化标签
在前面的基础上合理的用语义化标签,对内容进行必要的标记,是加分的。但过度的使用标签,就画蛇添足了。如“我说”的话,可以用q标签标注。

<p>哥写的不是HTML,是寂寞。
<p>我说:<br> <q>不要迷恋哥,哥只是一个传说</q>

我觉得这就够了,如果再进一步,“我”用cite标注,“HTML” 用abbr或acronym标注(至于再讨论abbr和acronym的区别就太较真了),也OK。再复杂就没必要了。

<p> 哥写的不是<abbr title=”Hyper Text Markup Language”>HTML</abbr>,是寂寞。
<p><cite> 我</cite>说:<br> <q>不要迷恋哥,哥只是一个传说</q>

转自kejun的blog:http://hikejun.com/blog/?p=548

没有评论精品学习网招聘产品经理/产品专员

2010年3月25日

产品经理/产品专员  [产品专员经验限制放宽/无需管理经验]
工作地点:北京
岗位描述:
1、收集用户反馈,分析用户行为及需求;
2、制作策划产品PRD文档,MRD文档及产品原型,并跟进产品研发上线流程
3、对已上线产品进行用户反馈调研,数据分析,迭代改进产品细节及功能

任职要求:
1.经验:不少于3年的互联网从业经验,不少于1年的互联网产品策划设计经验
2.熟练使用各类设计产品所需软件,如Word,Visio,Axure等 独立制作带交互的原型,对互联网产品设计开发上线的流程深入了解;
3.逻辑思维能力强,表达能力强,沟通能力好,性格开朗;
4.热衷于体验尖端互联网产品,对网络上现有成熟产品熟悉度较高;
5.对CMS/电子商务/SNS/类产品有过具体策划经验与深度了解优先

简历发到:liug@51edu.com  QQ:76373 MSN:Richie418@hotmail.com

精品学习网 http://www.51edu.com

公司介绍
精品教育营销服务集团是由美国著名的互联网投资企业IDGVC(曾成功投资百度,搜狐,携程,搜房,迅雷等中国领先 互联网公司)投入巨资全力打造的教育门户集团,业务涵盖整个教育领域上百个细分市场,在全国几十个城市设有分公司 和办事机构,是中国领先的教育营销团。

行业领先的品牌背景和雄厚的资本依托,是“招生通”卓越品质的保证,它必将推动教育行业将网络营销提升至全新水平!
精品教育营销服务集团创建于2001年,是中国最早的专业教育营销服务机构,在中国首创了教育办学和教育营销分工协作的商业模式。

自创建以来,集团专注于为学校提供全面的市场营销服务,亲身参与并见证了全国数千家学校的发展历程。
集团七年的发展和积累,为“招生通”建立起庞大的学校、学员和行业信息数据库;总结出一整套行之有效的教育营销方法,并储备了一支懂教育,懂市场,懂网络,能够为学校提供专业营销服务的行业团队!
从团队到网站,从专业方法到行业经验,“招生通”全方位保障为学校提供高质量服务,让学校放心、省心!

简历发到:liug@51edu.com  QQ:76373 MSN:Richie418@hotmail.com

4 条评论推荐:内容分析在用户反馈分析中的应用—理论&实践

2010年3月20日

今天在reader中看到这篇文章,正好自己的产品也在进行用户调研,好好学习了一下,觉得很有价值

TB最近在各个关键产品与购物流程中陆续加入了用户反馈入口(图1),也开设了各种官方论坛收集用户意见和建议,因此会收集到大量纯文本数据。如何 对这些数据进行分析、从而指导产品改进?本文将讲述,将内容分析(content analysis)应用于网络文本数据(如,用户反馈)处理的理论基础与实际应用。包括:内容分析法简述;企业中应用内容分析的步骤与技巧。


图1:淘宝的用户反馈 入口

PART1 理论基础:内容分析法简述

内容分析,是指利用明晰的编码规则,将大量文本信息转化为定量数据,并 归于若干类别以分析信息特征的方法)。 内容分析有三个特点:

1)客观性。内容分析不受主观偏见影响,有标准化的研究过程,研究员对结果持开放态度;

2)系统。内容分析过程(取样、分析、编码等)有统一、标准的规则和程序;

3)定性与定量结合。内 容分析通过定性研究找出能反映内容本质的特征,又将文本转化为定量的数据,分 析 结果可用频次、百分比,或相关系数等来表示。

这种研究无需直接接触研究对象,在传播学、情报学、教育学等社会学科有广泛应用,但目的有所差别。鉴于本文所述的应用类型,更倾向从情报学的观点去 定义内容分析的目的:通过分析内容了解本质性的事实和趋势,并揭示隐性问题。换句话说,在用户反馈分析中应用内容分析法,目的在于对反馈信息进行系统的归纳分类,整理问题点并评估其严重性,从而有针对地实施改进

内容分析的基本流程如图2所示。科研中,还有训练编码员(5、6环节间)、测量编码员之间可信度(6、7环节间)的步骤。在企业环境中由于受到时间 等调研成本制约,可选择性执行这两步。具体每一步的实施将在PART2中通过实例详述。

点击查看原始尺寸

图2:内容分析流程图

PART2 实践应用:步骤与技巧

如前所述,在企业的用户研究中利用内容分析处理文本型用户反馈数据,最终目的在 于,通过科学有效地总结归纳问题来促进改进。因此应用文本分析的步骤和技巧有以下特点:

1)编码员(用户研究员)需要对产品/项目的功能等特征有充分了解;
2)抽样 的时间点,会根据产品/项目的特点而定,如有无重大改 进等;
3)分类以及后续数据分析维度的建立,是研究员与产品经理等项目组关键成员共同完成的;

现按照前文所述的分析流程,以旺铺升级后一周内的用户反馈分析为例,介绍内容分析在企业用户研究中的实践步骤。

第一步 对分析的目标和范围做出准确定义

点击查看原始尺寸

分析目标:收集、归纳用户体验问题及用户看法
分析范围:

  • 主题领域——以某产品,或某流程的用户反馈为范围
  • 时间段——如,改版后一周内、新上线一 周后……等。值得注意的是,在产品大事件(如发布、改版)时间段,收集到的问题会较多,用户反馈两极化明显。在系统大事件(down机等)时间段,反馈的 问题会较集中,用户反馈多为抱怨。

呈现在用户研究报告中,也就是一句简短陈述, 如:旺铺升级后一周内的用户反馈总结

第二步 决定抽样样本

点击查看原始尺寸

包括决定以下三方面

1)内容源:选择从什么地方(帮派?问卷?…等)抽样
2)时间:选择在分析时间段 的哪几天(全段?隔天?隔周?)抽样
3)内容:对内容进行随机或等距抽样

这意味着研究员要对产品周期有充分的了解和认 识。在本例中,我们的抽样样本是,旺铺升级后一周内 (7天)用户通过旺铺装修页面“提意见”入口(图3)提交的所有数据。

——>

图3:旺铺用户反馈收集入口

第三步 确定分析单位

点击查看原始尺寸

分析单位是内容分析中的最小元素, 要对此给出明确清晰的操作性定义。在本例中,分析单位就是一名用户所陈述的一条意见。值得注意的是,并非以一次提交的数据为单位,因为一名用户一次性可能 提交若干条意见,需要把意见拆开,每条为一个分析单位。如图4所示,“删除模块删完不能添加”、“发布完又回到装修页面”分别是一个分析单位。

点击查看原始尺寸
图4:分析单位举例

第四步 建立分类

点击查看原始尺寸

分类是内容分析的关键步骤,决定了后续的定量分析的有效性。类别是内容分析的基本单位,每个分析单位都能且只能归入某类别中。在学术研究中,往往依据研究理论或参考过往研究结果来分类。在企业用研中,则要对产品有充分了解,并与产品经理合作制定分类框架。因为这便于分配问题解决负责人。

穷 尽、互斥是分类的两大原则。分类应涵盖可能的问题范围,但由于事前无法全 面预知内容,最好设立“其它”类以满足穷尽性。若有≥10%的 分析单位被归入“其它”,则分类不当。类与类之间是不重合的,若有一个分析单位可归入两个或以上类别,则分类不当,或分析单位不准。

分多少类为合适?类别太多会导致某些类的分析单位少而失去统计意义;类别太少,不 同性质的分析单位归入同一类,可能会掩盖显著性差 异。考虑到将分类合并比将分类拆分容易,建议宁多勿少。在无从下手的情况 下,可试检验50-100条分析 单位。

在本例中的分类如图5——


图5:旺铺用户反馈 的分类与说明

该分类倾向于以问题解决方(如系统问题由开发人员解决、功能需求由产品经理解决、交互问题由设计 师解决)为基础维度,便于推动改进。对于页面、功能有限的产品/流程,也可按照页面或功能分类。对于本例,也有针对功能、页面进行分类,主要体现在二级编 码中,详情见下。

第五步 制作编码表 试验性编码

点击查看原始尺寸

制作编码表是在大分类的基础上进行 细化,以更好地聚焦问题。在这一步,要尽可能细致全面,才能保证有效的数据分析。对每个编码的含义要有所说明,尤其在编码者不止一人的情况下。在本例中, 对功能需求这一大分类的部分编码如图6,其原则是尽可能涵盖所有功能。而对于系统问题交 互体验问题,子编码 又是应内容特点、以另外的维度设定的。


图6:编码表示例

在 编码表制作好后,抽取50-100条分析单位(如100条反馈)进行试编码(coding),以检验是否够细够全。当然了,在实际实施编码(第六步)过 程中可能发现编码不够用的情况。此时只能新增编码,并对该分类下的所有分析单位重新编码。所幸的是——也是内容分析的优点之一——即使发现问题,能在不影 响数据本身准确性和完好性的情况下弥补错误。不像问卷调研或现场实验,一旦实施,有错误也无法弥补,只能抛弃数据。

第 六步 收集数据 实施编码

点击查看原始尺寸

收集数据就是按照之前所定义好的范围与抽样 标准提取数据。通常将数据导入到EXCEL中进行处理。在本例中,每条用户意见(即最小分析单位)对应一行(图7)。


图7:原始数据示例

然 后便可开始对每个分析单位进行编码,是纯人工的过程。目前也有一些文本分析软件可辅助,但这些基于分词技术的软件智能程度不足,且实施聚类分析对样本量有 要求(至少上万条),更适合用于海量文本数据的分类。

编码过程可借助EXCEL的文本筛选功能。比如笔者用得较多的是“包含XX关键词” 的筛选方式(图8),能有效提高编码效率。在过程中要把无意义的分析单位(如在本例中,会有用户在反馈中打自己店铺的广告)给清理掉。


图8:文本筛选功能 示例

初步编码结果如下图所示,接着便可进入分析、报告阶段。


图9:编码结果示例

第 七步 分析 报告结果

点击查看原始尺寸

分析包括两部分。定量部分使用描述性统计,计算各分类中条目、各 个码类的频数、百分比。如果还能结合到其他变量,如用 户的星级等,可进行更复杂的交叉分析、卡方检验、t检验、方差分析等。定性部分,是对某子编码下的所有条目进行梳理,总结出问题点。

要注意的是,频数、百分比不是衡量严重程度的 唯一指标。比如我们发现大量系统问题这一分类的用户意见, 但基本上说 的只是发布失败和速度慢两点。 功能需求这一分类下的意见总数相对较少,但问题有10余种。因此,定性与定量分析的结 合,才能反映各分类对整体体验(满意或不满意)的贡献度大小,以及问题聚焦/分散程度。示例如下:


图10:反馈总结示例

进 一步的分析还包括对表象所隐含的问题的推断。例如笔者发现图11所示的问题。

图11:深层分析示例

在企业 中,内容分析报告的输出形式更灵活,关键在于有效传达问题,推动问题的解决。尤其用户反馈的内容本身比用户研究员的分析归纳更具冲击力,更易引起同理心。

在 本例中,笔者的输出物包括:

  • 原始数据EXCEL表,按分类将问题 分别放在不同sheet里(图11)。在每一张sheet里,可通过筛选功能,看具体某个方面的用户反馈原话。要注意的是,此时会把编码重新转化为文字描 述便于理解。

    图12:EXCEL 输出物示例

  • 用户反馈总结ppt,将各分类中的问题汇总罗列,用于向项目组宣讲,并探讨解决 方案。陈述问题时,可引用典型的用户原话。比如有10个人反映同一问题,可选取问题表达最清晰或感情色彩最浓烈者的原话。

小结

本文介 绍了内容分析,以及内容分析在企业 用户研究中应用的步骤与技巧。内容分析的优点有:1)相比实验法、问卷法等,较为节省人力物力;2)内容可被重复分析,可靠性较大;3)无需直接接触研究 对象;4)操作过程若产生问题,错误易被弥补。它的缺点在于:1)人为因 素(如如何分类、编码)会极大影响结果;2)编码工作需时较长、单调。

原文:http://piglili.blogbus.com/logs/60772605.html