CSS工作经验总结

排除相对定位的误解

在狭小的空间挪动UL实在是很痛苦的事情。与其去HACK盒子模型的兼容,不如用相对定位好了。

我起初的理解:“相对定位”都是“相对”于上一个物件的定位方式,似乎很好理解。第一个相对定位标签没有出现问题。我顺利把“1”从红色区域下移20个像素到了他现在的位置。

但是“3”的相对移动却出现了问题。“3”的“相对定位”,应该“相对”于哪个对象呢?相对于整个盒子?不对,相对于“1”的当前位置?设置了一下也不对。整了个把小时,翻了好几本书,在《css权威指南》对相对定位的解释中仿佛看出了混乱的原由,但是还是晕乎乎不能理解,直到重新建立了一个测试模型才反应过来:“3”的相对移动跟前面“1”相对定位后的位置无关,它只关心自己本该在做什么位置,然后根据这个“本该”在的位置为原点相对定位。在此例中,“3”本该紧接在“1”未移动时的位置后面,也就是红色边框的下部。以这个点作为参照,设定移动参数,位置就完全正确了。

正确的感念应该是:相对定位就好像玩拼图,等默认位置排定以后,再把要相对定义的块抠出来,进行相对移动。《css权威指南》中举的例子中,文字被从段落中抠出来相对定位,是一个很经典也很极端的例子,可惜我开始没有静下心仔细领会它。

ID命名不可以数字开头

在测试的时候发现了一个以前没注意的情况,那就是ID选择符的命名不能以数字开头,ID为01、02、03是浏览器不可接受的。我不记得以前在哪似乎看过这样的规则,但是今天翻遍了手头的书也没查出这个禁忌,书上所有提到XHTML规则的地方只提示名字必须用小写字母,名字的值并不受这个规则限制,更没有提到说不能以数字开头。最让人摸不着头脑的是DW8的“所见即所得”可以接纳数字ID,而IE、FIREFOX、OPERA这些冤家在这个问题上立场统一:通通不接受,就当这个数字ID不存在。

也许这是DW8的一个BUG。

背景翻转的一个经验

在做导航菜单常用的背景图翻转时,发现一个经验:横向纵向数值要同时设置,那个0值是不可避免的。否则那个数值会直接写在CSS文件中,没有任何指示,结果实际效果就不可想像了。另外常用的将导航中文字缩进用负值的方法,个人觉得很别扭,在FIREFOX的web developer中查看css信息时拉出一条长长的方框,出于心理原因,干脆加上一个SPAN隐掉它。

20070611补充:SPAN隐藏的方法虽然以前比较流行,但是牵出了图片不可显示时的可用性问题。这个观点是从《CSS禅意花园》中得到的。看来,拉出个长方框就让它拉吧。

发表评论

邮箱地址不会被公开。 必填项已用*标注