我才12 ?

2010年05月 存档

前端 tips(2010.5) at 2010.5.31 0:12

本月前端 Tips:

5.4 - 5.7

44.【JS】element.onclick不管是在前还是在后,都会优于YAHOO.util.Event.on(element,'click',..)解析。(addEventListener/attachEvent,长天)

45.【JS】Firefox 对已存在的事件监听程序(通过传统事件模式注册的)采取的是替换(replace)操作,而非Firefox浏览器采取的是重写(overwrites)操作。(长天)

46.【CSS】如果有需要可以通过设置br { display:none} 来隐藏换行效果,最好的办法是建议在html中移除。(文河)

47.【HTML】在各浏览器下对于HTTP1.1标准的请求支持(同一个域名)的并行下载数为:ie6/7(2)、Firefox3、IE8(6)、Opera10/Chrome3/Safari4(4)(http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/)。(圆心)

5.10 - 5.14

48.【CSS】float 元素如果不指定宽度,在 ie6 下一般会有问题,如果出现此问题,可以尝试在 hack ie6,单独为 ie6 指定宽度。

49.【JS】相比其它语言来说,JavaScript 中位运算符的计算效率并不一定比其它计算方法高,有时候还会非常的低,而且不支持浮点数,一般不推荐使用。

50.【JS】link() method:创建一个链接可以通过str.link(“http://www.taobao.com”))来创建。(涵宇)

51.【JS】var m = n = 0;相当于var m = 0; n = 0; 实际上 n 被声明为了全局变量,造成了名称空间污染。(小马)

52.【CSS】IE7中,如果在父级元素和子级元素之间(div > p)有一个HTML注释,子选择器将不会工作。(Google)

5.17 - 5.21

53.【CSS】如果text-decoration属性指定给一个块级元素,它会影响该元素的所有行间级后代。如果它指定给(或影响)一个行内元素,它会影响该元素产生的所有框。text-decoration的underline、overline及line-through仅作用于文本。如果该元素没有内容或没有文本内容(例如HTML中的IMG元素),UA必须忽略该属性。IE与Opera在两种文档模式下均不会将text-decoration作用于IMG元素上,而Firefox、Chrome和Safari在混杂模式下与IE中一致,但是在标准模式下却打破W3C的规范在IMG元素上可以应用该样式。(Google)

54.【CSS】当定位元素的z-index未设置时(默认为auto),IE6/7/8下将会创建一个新的局部层叠上下文,其内的定位元素将受到父级元素的影响,即使子元素z-index设置高于与父元素平级的定位元素,也不会呈现在其上,而其它浏览器则不会。解决的方法就是明确定位元素的z-index。(Google)

55.【CSS】E6/7/8中width或height任意一个或两个都设为0都可以隐藏iframe,但是其它浏览器均隐藏不了,因为iframe的默认样式问题,还需设置border等样式,所以最快捷的方法就是通过visibility和display来进行设置。(Google)

56.【TMS】TMS不允许发布内容为空的页面,举例: 场景:如果有一个条件式的输出,在true的情况下输出一个片段,在false的情况下不输出任何内容。 结果:在true的情况下,是OK的;但是当false的情况时,发现发布始终无法成功。 原因:TMS开发设定的这个规则……没有为什么,就是不让发布内容为空的页面,实在整不动的话,你放个相应的注释来绕过这个规则。(龙刚)

57.【CSS】在使用百分比定义宽高的时候,需要注意小数值的问题,取值都是四舍五入,IE6、IE7、Chrome、Safari的所有模式以及IE8的怪异模式下,百分比计算是基于其包含块的实际使用值来计算的,而Firefox的所有模式以及IE8的标准模式下百分比的计算是根据其包含块的计算值来计算的,也就是说,加入父级使用了百分比80%,子元素使用了百分比60%,那么前者的计算应该是父级取得实际使用值后再乘以60%再四舍五入得到子元素的实际使用值,而后者是80%*60%,最后四舍五入取的子元素的实际使用值。(Google)

5.24 - 5.28 , 5.31

58.【CSS】在IE6对A使用hover伪类之后,如果产生一些莫名其妙的问题,比如背景不显示,抑或是hover离开之后A标签的状态没有恢复。这时候可以在伪类规则中添加:border:none;|zoom:1;或在A元素上添加background来解决问题(IE7 的其它类型hover也可能产生同类问题,解决方法类似)(熊松松)。

59.【HTML】IE6 条件注释引起 IE8 下载阻塞:http://www.phpied.com/conditional-comments-block-downloads/

60.【CSS】IE6、7下button和type为submit的input的默认padding无法去掉,需要加overflow:visible才能消除。(鸣人)

61.【JS】对于小于 1e-6 的数值来说,ToString 时会自动转换为科学计数法,比如 alert((0.0000012).toString()) 得到 0. 0000012 ,而 alert((0.00000012).toString()) 得到 1.2e-7 ,此种情况下使用 parseInt 得到的值可能就不是自己想要的,所以在参数类型不确定的时候,最好封装一层: function parseInt2(a) { if(typeof a === 'number') { return Math.floor(a); } return parseInt(a); } (玉伯:http://lifesinger.org/blog/2010/05/the-trap-of-parseint/

62.【CSS】IE6/7/8 最多支持32个CSS文件引入。(测试地址:http://john.albin.net/ie-css-limits/link-test.html

63.【CSS】为长页面添加上 body {overflow-y: scroll},可以减少一次reflow。(云谦)

驯龙高手 at 2010.5.25 21:09

晚上和很多同事一起去看了这部片子,其实之前不知道是动画片,它太低调了,以至于没引起我的注意,哈哈,差点错过了,虽然偶不看外国片,但是外国动画片还是要看的。

再次表扬下外国的动画片,做的很细致、很认真,啥时候外国的电影能让我欣赏下呢?

这部片子很好看,很好笑哈~推荐一下。

Opera Widget:Gorgeous Ruler 3.0 at 2010.5.24 18:06

Ruler 版本升级至 3.0,只要添加的功能就是水平或者垂直反转,之前在 Opera Widget 上看到有人需要这个功能,虽然比较很少有人可以用到,但是还是尝试去做了这个功能。另外就是简单优化了尺子的性能,砍掉了一些不必要的东西。

3.0 更新日志:

  1. 所有 Dom 结构改用 Javascript 加载;
  2. 尺子刻度以及刻度值改为 Canvas 绘制;
  3. 支持水平翻转以及垂直反转;
  4. 去除最小化功能;
  5. 增加中文支持;
  6. 用户配置项中增加语言选择项;
  7. 增加部分快捷键:“q”(关闭尺子)、“d”(改变水平、垂直方向)、“o”(水平或者垂直方向反转)、“r”(恢复尺子到正常状态);

注意:此版本仅支持 Opera 10.5 以上版本。

下载安装:http://widgets.opera.com/widget/14151/3.0/(如果你正在使用的是 Opera 浏览器,也可以通过点击地址栏右侧的 Widget 小按钮直接下载安装)

源码下载:http://code.google.com/p/gorgeous-ruler/downloads/detail?name=Gorgeous%20Ruler%203.0.7z&can=2&q=(内含svn文件)

SVN 地址:http://gorgeous-ruler.googlecode.com/svn/trunk/ gorgeous-ruler-read-only

Google Code 地址:http://code.google.com/p/gorgeous-ruler/

小结

这次编码花了很久的时间,中间也遇到了不少的困难,尤其是对翻转效果的尝试,移除 HTML 中的 Dom 结构是为了简化翻转的困难,曾经考虑尝试过 SVG、Canvas、CSS3 的翻转效果,最终选择了 CSS3 的方式,因为其最为便捷,但是 CSS3 对 Canvas 元素的翻转支持还存在一些问题,随后会对这部分以及 Canvas 的 drawImage 方法有文章进行分析。

祝柏芝生日快乐~ at 2010.5.24 0:12

柏芝加油,愿幸福永远!

高性能网站建设指南 at 2010.5.3 11:11

五一小假花了一点时间读了这本书,受益匪浅。

1.减少HTTP请求

减少HTTP请求是很必要的,书里提到了CSS Sprites,我无法抑制我对这个东西的讨厌,简直是要多讨厌有多讨厌,一来我不怎么会ps,二来这个维护起来实在太麻烦,而且在需求如此频繁变更的年代里,维护CSS Sprites造成的时间、人力成本的浪费,以及带来的bug,与机器的成本浪费比较起来,孰多孰少,有没有人统计过???????一个提议就是,几百年不待动的图片,应该放在一起,以减少HTTP请求,那些经常变更的图片就甭合了吧,关键是现在不变的没几个。。。杯具

2.使用内容发布网络(CDN)

这个不必说了,一般人不用管,一般人想配也配不起。。。

3.添加Expires头

添加过期时间,其实就是减少用户不必要的下载,这个大部分人都可以解决掉,都可以自己去配置,不会的可以百度一下。

4.压缩组件

gzip压缩,这个也没啥说的。

5.将样式表放在顶部

说实话,在看这一章的时候,我还真没以为这是个什么事儿,我土鳖一下。这是一个奇怪的现象,只发生在ie浏览器下,将样式表放到底部,页面的逐步呈现被禁止了,直到样式表加载完成,页面才会一下子呈现出来,之间会有白屏的时间。而将样式表移动到顶部,在最开始已经加载,就不会有白屏的出现,另外它也会带来内容的闪烁问题(其它浏览器)。使用@import的方式引入样式表,即使是放在头部,也会最后才加载,跟放置页底的效果是一样的,所以应该同样避免使用@import。

6.将脚本放在底部

不管是内联的还是外联的脚本,都会阻塞内容的呈现以及下载,最佳的方式就是把脚本统统放到底部,现实与理想是有差距的,我们应该尽力去放。

7.避免使用CSS表达式

expression会带来诸多的性能问题,应该尽量去避免,使用前一定要考证是否会带来性能或者其它问题。

8.使用外部JavaScript和CSS

这个权衡一下吧,看哪种更适合。

9.减少DNS查找

避免过多的域名请求,其实跟第一条“减少HTTP请求”也有一些是相通的。

10.精简JavaScript

JavaScript是非常必要的,压缩、混淆之后,再加上gzip压缩,能减少非常多的字节,相比来说,CSS的压缩基本带不来太大的效果。淘宝的外联脚本几乎都有压缩,可内联脚本,基本上都没有压缩。

11.避免重定向

这个我们几乎用不到,需要知道一点的就是http://www.12sui.cn/比http://www.12sui.cn访问会更快一点,减少了一个重定向的过程。

12.移除重复脚本

重复的脚本不但增加请求数、阻塞内容呈现、阻塞组件下载,其重复执行也会造成时间的浪费、bug的出现,这真是一个头疼的问题。团队的成员少的时候,嫌人不够用,多的时候,反而觉得更乱似的,团队的配合是一个很严重的问题。前端的嗜好,见一个改一个,越改越乱,越加越多,到最后谁都不知道这个东西是干嘛的,这个东西还有没有用。。。淘江湖现在面临的最严重的问题,亟待解决。

13.配置Etag

跟Expires头类似,详情百度一下。

14.使Ajax缓存

这也是一个比较纠结的问题,看情况定把。

这本书不错,拜托大家不要把自己当机器,也不要把自己的时间不当时间看,大家都在提倡节能,你自己也需要节能,没有人会珍惜你,你的资源也是有限的,孩子们,对自己好一点吧,活一次不容易。

我不想加班,我讨厌加班,要多讨厌有多讨厌。

这位姐姐,你好,你的浏览器版本太低了,为了避免您中毒,请您升级您的浏览器!