论坛首页 Web前端技术论坛

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

浏览 11445 次
该帖已经被评为良好帖
作者 正文
   发表时间:2007-08-22  
CSS
上篇

第2章

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

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


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

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

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

“盒模型”主要是有三维空间的感觉,但是“盒”有容器的意味,可以表达“方块套方块”的境界

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


关于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。

...
   发表时间:2007-08-30  

行不更名坐不改姓,俺就是译者。为什么没有译者简介是遗憾?是翻译得太烂了,想上门扁我吗?

“框模型”是俺自己想的,主要是因为“盒模型”实在难以接受。简直荒天下之大谬,应该考察谁先这么说的。

既然你是“框模型”的罪魁,应该早点承认,我替你挨了几个月骂了。
0 请登录后投票
   发表时间:2007-09-26  
Box Model: 我认为其"Box"含义更具有层次,嵌套的意义,大盒子套小盒子。y
0 请登录后投票
   发表时间:2007-11-12  
盒模型确实包含有z轴上的特性;
如:子容器除“static”之外的定位就是个最简单的表现;
且不说未来的CSS规范有可能会赋予更多的三维属性(想象一下全息投影);
作为一个CSSER对这个没有什么好争论的!
0 请登录后投票
   发表时间:2007-11-13  
zbm2001 写道
盒模型确实包含有z轴上的特性;
如:子容器除“static”之外的定位就是个最简单的表现;
且不说未来的CSS规范有可能会赋予更多的三维属性(想象一下全息投影);
作为一个CSSER对这个没有什么好争论的!


我们在推敲译名,第一,并非任何一个csser对于css就有完全准确的理解,第二,准确理解也不代表就有准确的译名。

严格的说,position不是box model的一部分。就算考虑上position的z-index,那也是层的堆叠,而没有任何立方体意味——考虑到这一点,“盒模型”的译名只有愈发显得糟糕。
10 请登录后投票
   发表时间:2007-11-13  
大家觉得“包模型”这个名字怎么样?既有英文box的谐音,也体现了容器的概念,而且没有2D和3D的混淆。
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics