回复腾讯兄弟,再谈谈960
早上看见腾讯兄弟的这篇文章网格(UED所谓栅格化)方案生成器。初略一看,心里窃喜,以为有数学高人给出了严格的证明。晚上回来仔细一研究,心内沮丧,颇为失望,有几点想说明一下。
选用960,其实很简单,因为960能够被很多数整除,同时又很接近1024,因此很多网站选用了这个宽度。
我在960的秘密一文中,只是想从数学的角度上指出对栅格系统来说,960是个很灵活的宽度而已。这只是一个引子,想激发大家对栅格系统的兴趣,之后的文章才是重点。
我的数学分析
在将960分解质因数后,我最初的结论确实有不妥之处。这点小奎指出来了,720比960的约数更多,还有1440的约数也很多。从数学上,可以简化为以下问题:
W = 2^m * 3^n * 5 N(W) = (m + 1) * (n + 1) * 2 - 2
m和n是整数,现在要使得N(W)尽量大,同时W的值最接近1024. 简单分析质因数可以得到:
... N(480) = N(2^5 * 3 * 5) = 22 N(960) = N(2^6 * 3 * 5) = 26 N(1920) = N(2^7 * 3 * 5) = 30 ... N(360) = N(2^3 * 3^2 * 5) = 22 N(720) = N(2^4 * 3^2 * 5) = 28 N(1440) = N(2^5 * 3^2 * 5) = 34 ...
就这两个系列的的N值最大(稍加分析,能够比较明显地“看”出来,我相信数学系的学生能严格证明)。
很明显,上面最接近1024的就是960.
国外同行的依据
960不是新鲜玩意,国外同行们已经有过很多讨论,比如:Optimal width for 1024px resolution?, 作者选用960的原因是:
I’ve been using 960 for some time now, as it’s slightly smaller than full width, and it’s divisible by 3, 4, 5, 6, 8, 10, 12, 15, and 16 (imagine the grid possibilities). I’d love to hear what all of you are wrestling with.
再来看看960.gs作者的解释:
All modern monitors support at least 1024 × 768 pixel resolution. 960 is divisible by 2, 3, 4, 5, 6, 8, 10, 12, 15, 16, 20, 24, 30, 32, 40, 48, 60, 64, 80, 96, 120, 160, 192, 240, 320 and 480. This makes it a highly flexible base number to work with.
关于苹果系统下浏览器的默认宽度为960,国外也早有人谈及,看看这个ppt:Grids Are Good
一个有意思的巧合
上周去阿里中文站交流CMS系统的设计,中文站选用了960的宽度。他们调研了很多显示设备,发现320是很多显示设备屏幕的最小单位。因此在Web浏览器上,选用了3个320组成的960布局。这个思路蛮有意思。
关于10像素的间距
选用10px的理由非常简单:写CSS时,比较容易计算各种padding和margin. 淘宝的设计有个潜规则:间距最好都是5px的倍数。5的倍数容易计算,对人友好。Blueprint的设计中,也是把间距定位10px, 类似的例子有很多。就这么简单。
值得一提的是,阿里中文站采用了8px, 原因是8是2的立方,计算机在渲染时,能减少性能开支。不过这个性能影响实在太小了。在软件工程中,人的成本是最大的,感觉对计算机友好不如对人更友好。
关于Grid的翻译
个人觉得“网格”太偏设计领域,而且“网格”的外延很多,不容易让读者立刻领悟要表达的意思。不如“栅格”,一看就很明了。当然,每个译者都可以保留自己的意见,就如“优雅降级”和“平稳退化”一样,存在的不一定是最好的。既然是翻译,就应该有自己的思考和选择。
关于腾讯兄弟的数学证明
w = x * n + (n - 1) * y
上面这个公式和我说的是一样的,x是我说的c, y是槽距g, 对于950, 我的公式是:
W = c * N + g * (N - 1)
至于后面的,
w=z*Math.floor(n/m)+(Math.floor(n/m)-(n%m-1))*y+x*(n%m)
实在不敢苟同。何必引入z来让问题复杂化?小模块划分好了,大模块也就有了。本质上都是穷举,没必要这样折腾。
其它的,比如黄金分割,不想说什么。如果腾讯兄弟认为1px的栅格有意义,我实在佩服。
很重要的一点
栅格并不会限制设计师们的设计,这个在《超越CSS》一书里有很好的阐述和例子。若认为栅格化后,设计师们只能定定颜色、画画小图,实在让我汗流浃背无语凝噎。
栅格化对前端开发工程师更是一种解放,从每天的重复性劳动中解脱出来,多些时间来研究新应用,无论对公司还是对个人都是好的。
最后,提前公布下工具
我不会Photoshop, 原文章中的那些图,其实都是用自己写的一个小工具生成的。放在线上好久了,只是想着等完善后再公布:
http://lifesinger.org/lab/2008/grid_design_tool.html
这个工具借鉴了老外的 Grid Designer 2. 功能如下:
- 可以测试各种蛋糕的切法^o^
- 公式中,带灰色小箭头的表示是计算值,可以在三种计算值之间切换
- 注意那个Add Box按钮,添加的Box,可以拖动,鼠标放到边框附近,还可以调整大小
- 还有一些方便截图的小功能,折腾折腾应该就会用
最后,本文不欢迎任何侮辱性的留言评论。我非常期望国内的前端开发工程师们能向国外的同行们学习:开放真诚地讨论问题,互助学习、共同进步。

November 11th, 2008 on 0:35
设计是很感性的东西,你的栅格是理性的东西,为什么要用理性去制约感性呢?
November 11th, 2008 on 0:43
是沙发吗?
November 11th, 2008 on 1:53
先占沙发
今天看了一天关于Grid system的东西
很神奇!
November 11th, 2008 on 9:15
仅仅了解一下,大的布局制约一下宽度。其他都是自由发挥。
如果全部按照这些理论来做东西,我想我的工作效率会下降很多!码头说的对,很对!
November 11th, 2008 on 10:36
嗯,有点钻牛角尖了吧。。。这个还是要从用户体验出发去做事情。。。像这样玩学术搞理伦,貌似不是我们互联人应该干的吧?
November 11th, 2008 on 12:54
研究了太深了,佩服
November 11th, 2008 on 14:02
从始至终,看着事情的进展,从未评论过。任何事物都有他的优点,应该辩证的去看问题。栅格固然有他的局限,当然更有他的优势,当要求你在一个月之内建成1000多个频道页面的时候,或许这时他是当之无愧的适合。
November 11th, 2008 on 14:23
道是大同,一定要分个首末?
再说,你能觉得你说是正确能维持多久?
一天?一个月?一年?你的一生?
说不定过几天,你又会觉得你说的也不够完善,而别人的却有可取之处。。。
November 11th, 2008 on 14:37
实话,那个超越CSS我基本上看完了,关于什么栅格网格的好像只是带过而已!根本没有两位说的那么详细! 关于黄金分割什么1.2的问题,好像在实际应用中并不像书中作者描述的那样!
两位的继续深入性,确实让人佩服!
November 11th, 2008 on 14:38
看评论貌似大家对栅格的思想还不是很接受
November 11th, 2008 on 14:51
顶码头.的确.很多时候设计师如果考虑到布局会让灵感猥琐的.
November 11th, 2008 on 14:58
我觉得怿飞说的好,当然这个网格系统肯能对淘宝这样的大网站很适用。
November 11th, 2008 on 15:11
一直在关注这个栅格系列,发现同志们似乎对栅格这个名词颇有微词,我觉得确实栅格比较好一点,网格中高度这个属性特别明显,侧重的是网,而栅格则侧重栅,期待玉伯更多思考的诞生。
November 11th, 2008 on 15:41
反思完毕,但是《超越CSS》的书上面别人写的是“网格”而不是“栅格”。
就这一个对笔者不敬的罪名是逃不了的。赶紧给别人笔者道歉吧。
960……这个就不想说了,就像邮件中的回复。如果你们觉得你们是对的,那么你们就是对的吧,坚持的走下去,不要改变,就那样的坚持。打死也别改。
至于10px宽还是不能让人信服,你给的答案是因为“5的倍数对人最友好”。还是很牵强,为什么是5的倍数,我觉得3的倍数对人最友好,就算是5的话为什么不是5不是15非要10?
最后,感谢你将你们淘宝的那个工具公开了。但不能代表全部设计师感谢你,我只是一个网站重构工程师。
November 11th, 2008 on 15:56
の~··引用龙哥的一句话。【复杂的东西搞简单了 NB;简单的东西搞复杂了 SB】
November 11th, 2008 on 16:25
博主的GRAVATAR头像好大。
我还没见过这个size。留言看看我的头像。
November 11th, 2008 on 17:05
为什么要去争论一个单词怎么翻译呢,叫什么并不是重点。
各有各的长短,适合自己才是真理。
November 11th, 2008 on 18:01
“网格”而不是“栅格”。都是外文翻译而来,有必要这么死磕么?
November 11th, 2008 on 19:43
淘宝UED是一个乐于分享的团队,我们乐于把工作中的实践和经验教训都分享给大家。
栅格化并不是银弹,它并不适合所有的Web页面开发。但对于淘宝的一些系统来说,栅格化能简化并规范我们很多的工作。栅格化应用的结果大家会在淘宝的网站上看到,应用的心得我们会继续分享。如果它能帮到你,我们会很高兴。
但不管怎样,玉伯和腾讯兄弟的研究态度都值得钦佩。问问自己,你用心做事了吗?
November 12th, 2008 on 11:47
我选用了950,这个950又是怎么一回事呢?
November 27th, 2008 on 14:14
970才是经典的
December 4th, 2008 on 21:35
其实这种东西研究的深度和结果都不是最重要的,重要的是各自研究的过程。但是我对于博主将腾讯那兄弟时时挂在嘴边,还一再重复那兄弟套用你的答案云云,这样的做法感到有点bs。
December 5th, 2008 on 20:45
@松: 感谢你的反馈。我会好好改进
January 15th, 2009 on 9:41
支持960px,我一直在用!
February 2nd, 2009 on 15:44
有句话叫“树大招风” QQ空间以前不支持FF的时候,一年也能赚不少钱–这是一个不争的事实,但现在很多的网站他们可能支持IE6 IE7 FF等,但赚的钱没有QQ空间多。
所以只能说“周俞打黄盖,一个愿打一个愿挨” ,就像我前天赶着上班的时候,车坐过了到上海才下,遇到一个带路的,明知是被他宰可还是要他载着我去买票然后给他钱。钱不好赚,但那个时候也只有被宰的份,我只能感叹一句:“苏州、上海真是一样黑!”
August 21st, 2009 on 19:01
我也经常用960的,这个研究太深了。
August 25th, 2009 on 11:08
http://lifesinger.org/lab/2008/grid_design_tool.html
怎么打不开了?提供打包么?
August 25th, 2009 on 13:43
@inleshan: 博客迁移过一次。转移到这里了:
http://lifesinger.googlecode.com/svn/trunk/lab/2008/
August 28th, 2009 on 11:48
对您的文章很有兴趣,同时也想看看您公布的工具,
可是http://lifesinger.googlecode.com/svn/trunk/lab/2008/
这个里面有很多php.js的文件,请问一下,工具叫什么名字
February 8th, 2010 on 11:25
想问下,为什么960的槽距都是用20px?最外框用的10px也不是很理解,既然960已经不是满屏为什么还要留10像素的外框?如果考虑960加的外框,且用10px为槽距,那么970不是更加合理么?小弟刚入门,望赐教。
leave a reply