20June2008
CSS优先级的知识大家应该都比较了解了(如果不了解可以参看《详解CSS的优先权》)。但是,注意哦,这只是W3C的CSS2.1规范自己声称的。而事实上,确实有“极少数的浏览器”并不一定按照这个规则来办。这个“极少数浏览器”我就不点名了哈。
今天介绍一个最简单的。
div.colorful {color: red;}
div .colorful {color: green;}
按照CSS2.1规范里的规则,这两个CSS选择符应该是相同的优先级,应该以最后的为准。但是,在IE里并不是这样哦。
在IE(随便哪个版本)和FF(或Opera)里看这段代码:
看到了没?标准浏览器里是绿色,而IE里是红色哦。
同样的问题还会出现在:
.colorful div {color: red;}
div .colorful{color: green;}
IE认为,“.colorful div”比“div .colorful”的优先级高。自己去试试看。
但是呢,它会认为“.colorful div”和“div.colorful”的优先级一样。所以结果是
.class html = html.class > html .class
这个结论在IE5.5、IE6、IE7、IE8beta1里面都成立。
是不是有点晕了?哈哈~~实在记不住就算了吧~
17June2008
拿到IE 8 beta 2的 Search Partner Build Invitation。于是下午花了点时间先在网上搜寻了一下关于IE 8对CSS的支持,以及如何对它做Hack。
我是个懒人,最不喜欢去记那些复杂的hack,所以总是希望能找到一个“银弹”Hack,也就是“能搞定一切的通用方法”。下面是我能找到的最好的一个:
.indicator{
background: red; /** 只对FF Opera和Safari有效 **/
#background: blue; /** 只对IE7有效 **/
_background: green; /** 只对IE6有效 **/
/*/background: orange;*/ /** 只对IE8有效 **/
}
说明一下:
- 上面的顺序不要去改动它,也不可以少写某一行。因为事实上以上各句的有效性应该是:
第一行是对所有浏览器有效(废话!)
第二行只对IE6和IE7有效(FF和IE8无效)
第三行只对IE6有效(FF和IE7、IE8无效)
第四行只对IE8有效(FF和IE6、IE7无效)
很抱歉,没有单独为IE7使用的对属性的hack,淘宝UED Team上有一个,但要重写选择符,我觉得形式太烦,不喜欢。
- 请不要用以前区分FF和IE6的hack方式,即在FF那一行加上!important,因为IE 8认得出这个单词(英语水平提高的原因??哈)
- 除了我在注释里面写的几个以外,其他浏览器的效果我全部都不知道。若是想要做什么IE5.x或是IE/mac的hack,我建议你再另外单独写一个ie5_hack.css之类的,毕竟那是对少数族群的关怀。
- 再次说明,这是为像我这样记性不好的懒人使用的,而且这样写出的CSS是非常好理解的。如果你想为更全面的浏览器做Hack,或是想只针对某一个浏览器做hack,请用你自己的方法,只要你记得住。
最后,给大家一个测试页面,像试纸一样可以比对页面在不同浏览器上的效果
16June2008
(图片引用自Deviant Art)
昨天在W3C看到,6月10日发布了新的HTML 5 草案(Working Draft)。粗略的读了一下它提供的新版本说明文档,作了一点笔记:
HTML 5草案并没有成为正式标准
Publication as a Working Draft does not imply endorsement by the W3C Membership.
作为“草案”发布并不意味着已经得到W3C成员的背书(支持)。
The HTML 5 specification will not be considered finished before there are at least two complete implementations of the specification.
HTML 5规范要等到有至少两个软件对其实现了之后,才会宣布定案。
XHTML 1是1999年就发布了,经过了两三年才得到全面支持,而直到近十年之后的最近才得到全面推广。所以等HTML 5得到支持(尤其是那位“非主流”的浏览器的支持),还得有一段日子。根据W3C的HTML工作组的时间表,要到2010年才会有正式的定案。
简单到惊奇的DOCTYPE声明
<!doctype html>
就这么简单,哈。而且,没有大小写之分。值得说明的是,规范要求,如果声明了这一个DOCTYPE,则可以用所谓的“‘custom’ HTML syntax(定制的HTML语法,我也不知道为什么叫这个)”,亦即以前那种不需要标签闭合的HTML语法。同时它仍然允许XHTML那样的XML格式语法,这样的话就要声明xml文档的DOCTYPE而不用上面这个。
向前兼容性
HTML 5规范没有“deprecated”的元素,原因就是它一方面要求设计师不要试用某些元素,另一方面却要求浏览器必须支持这些元素。这样的话,以我的直觉,它是想支持以前所有的用HTML或XHTML编写的网页。这对设计师来说算是一个福气,终于不用再受XHTML严苛语法的限制了。
被删去的元素
当然,这些元素是相对于HTML 4而言的,但是也可以看得出HTML 5并不是一个单纯的向HTML 4的倒退,它仍然秉承了XHTML的一些重要精神,比如纯粹的界面表现元素应该抛弃,而采用CSS等。
以下元素“因为是纯粹的界面表选元素,应该用CSS来代替(because their effect is purely presentational and therefore better handled by CSS)”,所以抛弃:
basefont / big / center / font / s / strike / tt / u
以下元素“因为对可用性与可访问性不利(because their usage affected usability and accessibility for the end user in a negative way)”,所以抛弃:
frame / frameset / noframes
以下元素“因为不怎么经常使用、引起混淆或是被其他元素代替(because they have not been used often, created confusion or can be handled by other elements)”,所以抛弃:
acronym / applet / isindex / dir
这里我要说明一下的是:
- acronym被推荐由abbr代替。但貌似在IE下,abbr反而不如acronym好用。详见http://www.mikkolee.com/3里的HTML测试文档。
- applet改用object。这个标签早就改抛弃了。不过当年我学HTML的时候每一本书都会提到这个applet,那时候大家都对java applet充满了憧憬,而如今却黯然退出历史舞台,还是挺感慨的。
- isindex 和 dir。这里两个就不讲了,HTML 3的时候就不推荐了。
更多新元素
HTML 5推出了很多新元素,我这里就不罗列了。请参看
http://www.ibm.com/developerworks/cn/xml/x-html5/。
如果你对HTML 5有更多兴趣,这篇文章底部还罗列了一些相关文章,也可以看看。