《精通CSS》读书笔记(二)

续[url=http://hax.iteye.com/blog/114914]上篇[/url]。

第2章

box model译作“框模型”,我是始作俑者(大约在2003年,在opendl.com的w3c翻译讨论区中提出)。绝大多数是译作“盒模型”。当然据说之前就有人译为“框模型”,但是至少本书的译者估计或多或少受到了我的影响。因为[url=http://blog.youkuaiyun.com/turingbook/archive/2006/11/24/1409559.aspx]刘江说译者认为“盒”有3D的意思[/url],而这是我在opendl论坛提出的论点。当然不能排除译者与当时的我正好有相同想法的可能。

不过我后来觉得“框模型”也有点问题。在Zen of CSS Design(也已购买,等待读完本书后继续)的译者的论坛上,我[url=http://www.cnblogs.com/dflying/archive/2007/02/04/639837.html#643217]留言[/url]到:
[quote]“方框模型”或“框模型”很久以前提过,只是因为感到“盒模型”不够好(有三维意思),但是“方框模型”也未必见得就好。不知有什么更好的译名。……为什么“框模型”更贴切? :) 虽然我也是最早将其列为候选的(之一),但是我还真没有觉得“框模型”就更贴切也。。。“框模型”的主要问题是强调了框,加上border(边框),就有点乱了。“盒模型”的主要问题就是盒子是3d的。。。 [/quote]

不过好玩的是,Zen的译者认为“框模型”比“盒模型”好,但是实际上用了“盒模型”。

要问我现在我觉得怎么翻译box model好?我也说不上。

首先把box译作“框”是ok的,例如TextBox文本框,radiobox单选框,checkbox复选框,MsgBox消息框。但是“框模型”,容易与“边框”混淆,而且给人感觉重点在框(边界)上。

“盒模型”主要是有三维空间的感觉,但是“盒”有容器的意味,可以表达[url=http://www.happybo.net/article.asp?id=78]“方块套方块”的境界[/url]。

其实有时候我想,是不是大白话的“方块模型”才是最好的? :)


关于IE/Win的box问题,本章给出的建议是“回避”,等待到第9章。但是这里没有说明,回避其实是有坏处的,因为将padding和margin加到父元素或子元素,很有可能会引入额外的无意义标签,或者破坏样式本身的自明性。


记录IE的bug:相对定位元素内若向右下进行绝对定位,需要设定相对定位元素的高宽。

在IE中模拟fixed定位,本书举了Jonathan Snook的网站作为例子,遗憾的是,他的网站已经改过版了,找不到fixed了。我原来以为首页上方的黑边是fixed的,但是一看,原来是border而已。

IE对于fixed定位有个很大的错误,我不是说不支持fixed就不对,但是既然其接受fixed作为合法参数,就不应把其当成static来处理,至少应当作absolute处理,这样可以graceful degradation。

模拟fixed的一个办法是使用脚本改变元素的绝对定位坐标,但是通常会导致抖动。实际上有两个小技巧可以模拟出不抖动的fixed。一个是使用css expression配合background-attachment:fixed。另一个(偶自行发现的)方法是使用ie的standard mode,然后html元素overflow:hidden,而body元素overflow:auto,这样body上绝对定位的元素在外层没有定位元素的情况下,会始终相对于html元素定位,从而达到和fixed定位一样的效果。这一方法是我在试图解决standard mode下scrollbar抢夺焦点的Bug(IE7似乎仍有这个bug)时偶然发现的。

关于containing block如何包围float元素(似乎有很多人以为这是FF的bug),需要额外的空元素来clear。为了避免引入无意义的标签,使用::after是个好方法,类似的,也许也可以用:last-child伪类,不过这两种方法无法用在IE上。但是IE可以用Holly hack,实际上就是让containing block获得hasLayout。

待[url=http://hax.iteye.com/blog/117219]续[/url]...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值