第4届D2前端技术论坛开始报名

2005年前端工程师的职位开始在中国出现,2007年第一届D2前端技术论坛在杭州举行,从此D2伴随着中国的前端一起成长,从此越来越多的互联网产品的背后有着职业前端工程师坚定的身影。
在D2上我们曾交流过某项具体的前端技术,也曾探讨过团队协作的方式,那些美妙的话题都深入到我们频繁敲键盘的指尖。回首我们过去四年的坚持和梦想,现在是时候分享我们的积累和成果了。当架构、安全、性能等等在前端的领域扎根的时候,我们自己也在悄然发生质变,而推动这些变化的人和事正是D2想告诉你的。

本届主题:蜕变·成长
论坛时间:2009年12月19日(星期六)
论坛地点:杭州市滨江区网商路699号, 阿里巴巴B2B园区 (地图)
举办单位:阿里巴巴
特别致谢:CSDN、JavaEye、谋智网络、百度、豆瓣、华章图书、口碑网、蓝色... 10 条评论 »

CSS Expression 的优化

IE 浏览器中 CSS Expression 特性的最大的问题:会反复执行,每秒钟可能执行了成百上千次,有严重的性能问题。
如何对 CSS Expression 进行优化呢?
至少:如果我们将 CSS Expression 在匹配的元素中仅执行一次,性能将会提升很大。
old9 在 《CSS Expression Reloaded》一文中提供了一个解决方案:
在 CSS Expression 语句体里,将触发该 Expression 的 CSS 属性重置。
例如:
div {
zoom: expression(function(el){el.style.zoom = “1″; alert(el.tagName);}(this));
}
补充几点:

CSS Expression 执行在任意一个匹配的元素上。
在 CSS expression 内, “this”关键字指向当前匹配的 HTML 元素。
CSS 属性选用一些不常用的属性来触发,触发完重置回默认值。

最近在 Ajaxian 的文章《Creating a querySelector for IE that runs at “native speed”》 中看到... 12 条评论 »

如何在 IE 中使用 HTML5 元素

Sjoerd Visscher 发现了一个简洁的 方法 让样式在 IE 中作用到未知的元素上——仅需 JS 创建此未知元素即可:
document.createElement(elementName)
同理(对于 IE 来说 HTML5 元素即是未知元素),该方法也可顺延到 HTML5 的元素上(详细见:John Resig 写的 《HTML5 Shiv》 一文):
<html>
<head>
<style>section { color: red; }</style>
<script>document.createElement(“section”)</script>
</head>
<body>
<section>Hello World!</section>
</body>
</html>
在 IE 中,为了更方便使用 HTML5 元素,我们可以引入这样的脚本:
(function(){
// from: http://dean.edwards.name/weblog/2007/03/sniff/
if(!/*@cc_on!@*/0) return;

var html5 = “abbr,article,aside,audio,bb,canvas,datagrid,datalist,details,dialog,eventsource,figure,f... 24 条评论 »

影响 reflow 的因素及其优化

如果对于 reflow 这个概念你还不太清楚或者不知道,请先阅读:

《Notes on HTML Reflow》
《What is a reflow?》
《Gecko:Reflow Refactoring》
《reflow》
《形象化的reflow》
《样式的执行效率-reflow》

Yahoo! 性能工程师 Nicole Sullivan 在最新的文章 《Reflows & Repaints: CSS Performance making your JavaScript slow?》 中总结了导致 reflow 发生的一些因素:

调整窗口大小(Resizing the window)
改变字体(Changing the font)
增加或者移除样式表(Adding or removing a stylesheet)
内容变化,比如用户在input框中输入文字(Content changes, such as a user typing text in
an input box)
激活 CSS 伪类,比如 :hover (IE 中为兄弟结点伪类的激活)(Activation of CSS pseudo classes such as [...]

... 11 条评论 »

如何快速定位页面中复杂 CSS BUG 问题

相信大家对于常见 CSS BUG 的处理已经相对比较熟悉,例如:IE6 Three Pixel Gap、IE5/6 Doubled Float-Margin Bug 等等。但时常我们也会碰到复杂的 CSS BUG 问题,所谓“复杂”实质是指触发的条件很复杂,而“BUG” 也并非指一定是浏览器的 BUG 。对于此类问题,我们首先要解决的是如何定位到问题,只有快速的定位到问题,才能更好的解决问题。
对于快速定位,个人的经验处理一般如下(基本可以定位到我在 淘宝 遇到的 90% 以上的复杂 CSS BUG 问题):
1、检查页面的标签是否闭合
不要小看这条,也许折腾了你两天都没有解决的 CSS BUG 问题,却仅仅源于这里。毕竟页面的模板一般都是由开发来嵌套的,而他们很容易犯此类问题。
快捷提示:可以用 Dreamweaver 打开文件检查,一般没有闭合的标签,会黄色背景高亮。
2、样式排除法
有些... 37 条评论 »

按钮在 IE 中两边被拉伸的 BUG

大家在写按钮(input、button)的时候会发现在 IE 下:

随着字数的增多,两边的间距也会越来越大。
在 WIN 的XP 风格下,当字数很多时,两边还会出现严重的锯齿。

到底是什么原因呢?
蓝色理想 原 WEB标准化专栏 的斑竹 zbm2001z 给出了一个答案:
1、IE 在按钮的 value 值每增加 4 个字节(汉字为 2 个)时,就会在按钮的两边产生总共一个字节的内边距宽度。
2、IE 的按钮(XP 风格)默认样式是一个固定尺寸的圆角矩形图片作背景,所以一旦按钮变宽变高后,这个固定尺寸的圆角矩形图片的边缘自然就会出现“拉毛”的现象了。

对于第二个问题我们暂时没办法去解决,除非 WIN 系统自己修复 BUG ,但对于第一个问题 ,我们还是可以修复的。
IE 下给按钮元素设置 overflow 属性的 visible 值(注 :padding 值仅在设置了over... 27 条评论 »

可以给img元素设置背景图

惊叹于老外的发现 《CSS Background image on html image element?》,自己从没关注过,也没想过如此的问题。
实现方法很简单:设置 img 元素为块元素(display:block;),并赋一个 padding 值。
例如(simple demo ):
img {
display:block;
background:url(‘parallax.gif’) no-repeat bottom left;
padding:93px 100px 75px 100px;
}
根据上面的原理,举一反三,通过类似的方法,我们还可以给 img 元素设置双边:
img {
display:block;
padding:1px;
background:red;
border:1px solid black;
}

... 37 条评论 »

Google Chrome 浏览器支持的 CSS 选择器

Google Chrome 浏览器是基于 Safari 正在使用的 Webkit 引擎,使用的版本是 AppleWebKit/525.13 。不过 Safari3.1 使用的是最新版本:AppleWebKit/525.18。
那 Google Chrome 浏览器对 CSS 选择器的支持又如何呢?感谢 Engage 公司的女前端开发工程师 Estelle 测试整理的《Google Chrome Browser CSS Selector Support》:http://www.evotech.net/blog/2008/09/google-chrome-browser-css-selector-support/

... 24 条评论 »

position:relative 的使用限制

在 W3C 规范中 position 是可以使用在任何元素上的,但 position:relative 却有部分例外:
The effect of ‘position:relative’ on table-row-group, table-header-group, table-footer-group, table-row, table-column-group, table-column, table-cell, and table-caption elements is undefined.
经测试,在浏览器(IE 除外)中给 table 定义 position:relative 属性是无效的。如果的确需要在表格中使用该属性,建议在单元格中嵌套一个 div 元素,再在其上设置 position:relative 属性来模拟。

... 16 条评论 »

XHTML1.1 Tags List

http://ore.to/htmllint/tagslist.cgi?HTMLVersion=XHTML11

... 2 条评论 »