日志内容

2006-06-07[原]关于CSS样式命名中的下划线

TAG:CSS 原创 命名

长久以来,一直习惯了在命名CSS样式名时使用下划线“_”做为单词的分隔符,这也是在写JS时惯用的写法。

用过CSS hack的朋友应该知道,用下划线命名也是一种hack,如使用“_style”这样的命名,可以让IE外的大部分浏览器忽略这个样式的定义,所以使用“_”做为命名时的分隔符是不规范的。在做CSS检查时会出现错误提示。

为此得找一个能代替下划线而又合规范的符号,当然不是一定要用这种分隔符之类的,只是个人习惯问题。

做了个小测试,将下划线分别用了“~”、“$”、“`”、“&”和“-”去代替,结果只有“-”号是可以使用的,而且对JS的支持也正常,看下测试:

-------------------------------CSS---------------------------------
 .try-a{ color:#00f; }
 .try~a{ color:#00f; }
 .try`a{ color:#00f; }
 .try&a{ color:#00f; }
 .try$a{ color:#00f; }
 
 .try-b{ color:#f00; }
 .try~b{ color:#f00; }
 .try`b{ color:#f00; }
 .try&b{ color:#f00; }
 .try$b{ color:#f00; }
----------------------------------------------------------------------

-----------------------------HTML----------------------------------
<div id="a" class="try-a">try1</div>
<div id="b" class="try~a">try2</div>
<div id="c" class="try`a">try3</div>
<div id="d" class="try&a">try4</div>
<div id="e" class="try$a">try5</div>

<input type="button" value="ok" onclick="b();" />
----------------------------------------------------------------------

---------------------------------JS----------------------------------
function b(){
  document.getElementById("a").className="try-b";
  document.getElementById("b").className="try~b";
  document.getElementById("c").className="try`b";
  document.getElementById("d").className="try&b";
  document.getElementById("e").className="try$b";
 }
----------------------------------------------------------------------

结果是“try1”变成了红色,显示正常。不过在CSS定义里,经常会用到ID选择符,如果在页面中的ID命名中使用了“_”,就免不了在CSS样式里出现下划线“_”了,所以在此还得注意在ID的命名上也要避免使用下划线。

注:由于在JS脚本里有时会用到document.idName这样的调用,如果ID中使用“-”号的话会被解释成是减的操作,所以使用ID选择符时不在此建议范围,当然在写样式的时候,也不建议过多的使用ID选择符。


2006-06-06暂住证

TAG:随便想想

今天收到通知,说要办暂住证,想起新东方的“老罗”说过,他是绝不办暂住证的,因为他不愿在自己的家里还要办个暂住什么的……

虽然我也有同样的感慨,无耐自己太“渺小”了,自定义能力有限,只能inhert外来的框框条条~


2006-05-29[原]显示或隐藏层的JS函数

TAG:JScript 原创 代码分享

/*
========================
函数:显示或隐藏层
showDiv(divId_array,showLocality_array)
参数说明:
divId_array 所有要操作的层ID,用逗号分隔
showLocality_array 所有要显示的层在参数DivIdArray所对应的位置。为“0”或空时全部显示,设为负数则全部隐藏。
例如:showDiv('div3,div1,div2','2,3')为显示第二个(div1)和第三个层(div2),第一个层(div3)将被隐藏。
========================
*/
function showDiv(divId_array,showLocality_array)
{
 var div_array = new Array();
 var locality_array = new Array();
 var intLocality;//showLocality_array数组长度
 var intDiv;//div_array 数组长度
 var intTemp = 1;//临时变量
 var intTmp = 1;//临时变量
 
 //初始化
 if (divId_array)
 {
  div_array = divId_array.split(",");
 }else{
  intDiv = 0;
 }
 if (showLocality_array)
 {
  locality_array = showLocality_array.split(",");
  intLocality = locality_array.length;

  for (var n = 0;n < intLocality;n++)
  {
   intTemp *= locality_array[n];
   
  }
  if (intTemp <= 0)
  {
   intLocality = intTemp;
  }else{
   intLocality = div_array.length;

  while (intLocality > 0)
  {
   intLocality -= 1;
   document.getElementById(""+ div_array[intLocality] +"").style.display = "none";
  }
   intLocality = 1;
  }
 }else{
  intLocality = 0;
 }

 //显示指定层
 if (intDiv != 0 && intLocality >0)
 {
  intDiv = div_array.length;
  intLocality = locality_array.length;
  
  //排序locality_array 数组
  for (var n = 0;n < intLocality;n++)
  {
   intTemp = locality_array[n];
   
   for (var m = n + 1;m < intLocality;m++)
   {
    if (locality_array[n] > locality_array[m])
    {
     locality_array[n] = locality_array[m];
     locality_array[m] = intTemp;
     intTemp = locality_array[n];
    }
   }
  }
  
  intLocality = locality_array.length;
  intTemp = 0;
  
  //
  while (intTemp < intLocality)
  {
   if ((locality_array[intTemp] - 1) < div_array.length)
   {
    intTmp = locality_array[intTemp] - 1;
    document.getElementById(""+ div_array[intTmp] +"").style.display = "block";
   }
   
   intTemp += 1;
  }
 }
 else if(intLocality == 0)
 {//显示所有层
  intLocality = div_array.length;

  while (intLocality > 0)
  {
   intLocality -= 1;
   document.getElementById(""+ div_array[intLocality] +"").style.display = "block";
  }
 }else{//隐藏所有层
  intLocality = div_array.length;

  while (intLocality > 0)
  {
   intLocality -= 1;
   document.getElementById(""+ div_array[intLocality] +"").style.display = "none";
  }
 }
}


2006-05-22小小的感想

TAG:随便想想

学了几天互交设计,发现这东东还是很有意思的,有点像做导游,现在在哪、要做什么、去哪……让用户在不知觉中进“黑店”,买点“记念品”。

跟开始接触Web标准一样,主要要面对的还是思想上的转变问题,新事物总是有新的思维方式,很多的为什么,可是已经不是接受新事物那么简单了,更多的是要放弃原本已经根深的思维方式,甚至得要有“认错”的勇气,当别人问得你无语时,是生气?堵气?还是接受?

可最大的问题还是“无知”,虽然知道这是种新东西,不知才要学嘛,可是新东西不一定就是好的,在无法分辨“好坏”的情况下,是否要接受?我觉得这才是个最大的考验。在学Web标准是时候也是,一开始就被那些所谓的“高手”引到了“DIV+CSS”的路上,结果很多人都错误的以为Web标准就是用DIV布局去替代表格布局,结果页面从一堆表格标签换成了一堆DIV标签,页面变得更难维护。

知比不知好,但一知半解还不如不知好。


2006-05-16[转]DMMT样章——第一章 别让我思考

TAG:交互设计

De Dream', Windy(http://www.DeDream.com),2005年12月,翻译稿样

注:本书是DMMT第二版,将由机械工业出版社在2006年1月出版,这是第一章的翻译稿。

第一章 别让我思考
――Krug可用性第一定律

Michael,窗帘怎么打开了?
Kay Corleone,教父第二部

人们经常问我:
“如果我想保证网站容易使用,那么最重要的是什么?”

答案很简单,不是“重要的内容要放在两次点击之内”,或者“采用用户的语言”,甚至也不是“保持一致”。

而是……

别让我思考

多年以来,我一直在跟人们说,这是我的可用性第一定律。看过的网页越多,我就越坚信这一点。

这是最最重要的原则――它是在Web设计中,判别什么有用什么没用的终极法则。如果你只能记住一条可用性原则,那么就记住这一条 。

它意味着,设计者应该尽量做到,当我看一个页面时,它应该是不言而喻,一目了然,自我解释的。

我应该能明白它――它是什么意思,怎样用它――而不需要进行额外的思考。

不过,我们说的到底有多不言而喻?

呃,充分的不言而喻,就好象,你隔壁的邻居,她对你的网站主题毫无兴趣,也几乎不知道使用后退按钮,但她仍然可以看一眼你的主页,然后说,“噢,这是____。”(如果运气好的话,她会说:“噢,这是____。真是太好了!”当然,这是另外一回事了。)

这样来看:
当我看到一个不需要思考的网页时,脑袋里面浮现的会是:“嗯,这是____,那是____,我想要的东西在这里。”

图P12
这看起来象产品目录……
内存(Memory),Modem,啊,找到了,显示器(Monitor)。点击。
……这些是今天的促销产品。
当我看到一个需要思考的网页时,脑袋里面浮现的东西都会加上一个问号:

图P13
嗯,相当凌乱。我该从哪里开始?
为什么他们把它叫作这个?
我可以点这里吗?
这是导航?还是放在这里而已?
他们为什么把这个放在这里?
这两个链接看起来一样,是真的吗?

创建一个网站的时候,你要做的,就是去掉这些问号。

迫使我们思考的地方

网页上每项内容都有可能迫使我们停下来,进行不必要的思考。例如,名字。典型的罪魁祸首是那些很酷或者自以为很聪明的名字……

……带有营销倾向的名字,跟具体公司有关的名字,和生僻的技术名词。
举例而言,假设一位朋友告诉我XYZ公司正在招聘,我刚好符合他们的要求,因此我直奔该公司的网站而去。当我扫描页面,准备点击时,他们选择的职位公布部分如何命名,将会有不同的效果。

P14图
显而易见的,需要思考的
Jobs!(Jobs);
嗯~Jobs。(E O);
嗯~可能是Jobs,但又好象不止是Jobs。点击好呢,还是再看看?(JOM)

注意,类似这样的情况一般介于“对每个人都显而易见”和“完全模糊不清”之间,往往需要权衡。

例如,“Jobs(职位招聘)”可能对XYZ公司来说显得太不正式,或者他们采用了“Job-o-Rama”是因为一些复杂的国际化策略,又或者那是他们公司电子简报中常用的名词。我的观点是,权衡应该更倾向于“显而易见”而不是需要额外的思考。

另一个不必要的问号来源是那些看起来不太明显的链接和按钮。作为一个用户,永远不该让我花上几微秒去思考某个东西是否能点击。

P15图1
明显能点击的,需要思考的
按钮;嗯~我想这是一个按钮;嗯~这是一个按钮吗?

你可能会这么想,“其实,找出某个东西是否能点击并不需要多大功夫,如果你将鼠标移过去,它的光标将由箭头变成一个小手,这样会有很大问题吗?”

P15 图2

问题是,当我们访问Web的时候,每个问号都会加重我们的认知负担,把我们的注意力从要完成的任务上拉开。这种干扰也许很轻微,但他们会累积起来,有时候,不用太多就会让我们抓狂。

况且,通常,人们不喜欢苦苦思索背后的原理。建造网站的人没有让它们明白易懂,――而且容易使用――会让我们对这个网站以及网站的发布者失去信心。

再来看一个例子:在绝大多数的网上书店,在搜索某本书之前,我首先必须思考自己要怎么搜索 。

绝大多数网上书店(P16图)
看看这个。“快速搜索”。这肯定跟“搜索”是一样的,是吗?

我一定要点击那个象下拉菜单一样的东西吗?我只知道那是Tom Clancy的书,Clancy是一个关键字吗?
(到底什么是关键字?)

估计我得用这个菜单。
(在箭头上点击)

“标题,作者,关键字”。好,我要“作者”。
(点击“作者”)

输入Tom Clancy,点击“搜索”

当然,大部分这类的心理活动发生在一霎那间,但是你也看到了,这个过程实在很烦人。哪怕一些很无辜的小地方,例如把一个广为人知的名称变得花哨一点(从“搜索”到“快速搜索”)也会多产生一个问号。

在另一方面,Amazon.com,根本就没有提到“作者-标题-关键字”的区分。他们只是看你要找的类别,做最有意义的事。

P17图
OK,“搜索关于____的书”
输入“Tom Clancy”,点击“Go”

毕竟,为什么要让我思考我该怎样搜索?而且,更糟糕的是,为什么要让我去思考网站的搜索引擎希望我怎样表达这个问题?它们就象一些脾气不好的守桥人(“你忘了说’请’”)。

我能列出一大堆访问者在网站不应该多花时间思考的事,例如:
我在什么位置?
我该从哪里开始?
他们把××放在什么地方了?
这个页面上最重要的是什么?
为什么他们把它叫这个?
结果,你需要一份检查清单,附加到你的Web设计检查清单里。但是其实最重要的是去理解去掉问号的基本原则,如果你理解了这个,就会开始注意到网页上所有让你思考的东西,最后,你将学会如何识别并在你的页面上避免它们。

如果你做不到让一切都不言而喻

你的目标应该是让每一个页面都不言而喻,这样的话,普通用户 只要看它一眼就知道是什么内容,知道怎么用它。

不过,有时候,特别是你在进行一些崭新的,开拓性的,或者非常复杂的页面设计时,也许只能做到“自我解释”。在一个自我解释的页面,需要花一点点时间去理解――但只需要一点点时间。页面元素的外观,精心选择的命名,页面布局,少量仔细斟酌过的文字,这些综合在一起将创造出一种接近瞬间的识别效果。

如果你不能做到让一个页面不言而喻,那么至少应该让它自我解释。

为什么它这么重要?

说来也奇怪,并不是因为你通常听到的理由:
P18图,在因特网上,竞争就在一个点击之外,因此如果你得罪了用户,他们会跑到别的地方去。

有时候,这么说是对的,但你可能会很惊讶地看到,有些人会在一个折磨他们的网站坚持很久。有很多人在网站遇到问题时,会认为是他们自己的错,而不会责怪网站。

事实是,首先,你的网站并不是那么容易找到,而访问者们也不知道另一个类似的网站。再次从头开始的感觉往往不是那么令人向往。

何况还有这样的现象:“我已经等了10分钟,所以应该再等一会”。还有,谁能说竞争对手又会好多少呢?

那么,到底是为什么呢?

让页面不言而喻就象把商店布置得光线良好:这样只会让所有商品看起来更美好。在一个不让我们多余思考的网站访问让人觉得不费劲,而相反,为我们不关心的事而多花心思会浪费我们的精力,热情,还有――时间。

不过,正如你将在下一章看到的那样,当我们审视我们实际上如何使用网络时,为什么不要让用户思考的重要理由是,大多数人会花上比我们想像中少得多的时间来看我们设计的网页。

结果,如果要网页有效,他们必须在一眼之间展示自己,而要做到这一点,最好的方法是创建不言而喻的网页,或者,至少也要做到自我解释。

Windy 发表于2005年12月09日


分页 共45页 第一页 上一页 5 6 7 8 9 10 11 12 13 14 下一页 最后一页
订阅>>使用RSS邮天下订阅>>Google订阅s

Q我 GTalk联系

Recent Articles

Recent Comments

Recommend

Archive

广 州
The WeatherPixie

Search Engine Optimization

CSS森林:30247792
(精神正常者慎入!)

访问统计:

011 本BLOG[原]部分的内容采用创作共用授权,请尊重劳动成果,谢谢。
Copyright © 2006 风的影子. All rights reserved.   FORESt.blOGbUS.COM  BLOGBUS.COM