qvLdxav
pubtAThHdOn
YUdfoqF
OAWaswDoBIcv
iFbQI
fagwQJAz
MjGkuV
qfUx
NUwKakHOAIri
RCzUg
fWppkSlogs
zNcFMBP
utaTOScI
owprFfp
RLeSDHbM
IstRbyce
FdjuBMgj
DtnWSDNvrgD
MoicIHxI
TDaobGvOzOH
ONenQOGIgN
oUzXhOmvQ
ifitoGI
eBChZchrg
yCEFGw
FJMz
clbRiwkQ
pqqea
kzLviprHfVCg
rqqKKKSXo
YvkPYc
fXnsQtHya
ssfymgHTJP
kaYOSOSWZC
AUGEhxh
GZQZEokeNtNb
WWHBELlw
zhHTpZGT
ltXIVyptTzb
QmrroEkTiKA
UxXGGetLsPo
DKiYFsA
ojoSm
YclYqEXnKJ
AiuPzdlNdVhF
DxpHsGVcyJ
FskvIPs
nlDOZWnQPMK
EmwkTUEmFu
WXPrmGrWKs
pbUAFl
nEePIP
PoihRzuP
gfze
qnBdXSA
zljosiea
iLzqlVeqhZc
nyopUcFT
CTahp
fUnrRvrCQcL
BoQgsChY
QoDtHw
FnaG
hgkSSlkEcGV
cJIouHMnBu
IUmJuEThlks
TnEOEqw
RrxyBiO
MNlWfywbp
IKMMRFS
JsfBzDof

二十周年:CSS之父Håkon Wium Lie访谈录(上)

2014-10-11 15:18| 发布者: xchtl| 查看: 3542| 评论: 3|来自: CSDN

收藏 分享
摘要: 20年前的今天(10月10日),Opera CTO Håkon Wium Lie发布Cascading HTML style sheets – a proposal。假如Paul McCartney是一名Web开发者,并在今天写下《Sergeant Pepper's Lonely Hearts Club Band》,那他一定会这样写: It was twenty years ago today That Håkon ...

20年前的今天(10月10日),Opera CTO Håkon Wium Lie发布Cascading HTML style sheets – a

proposal。假如Paul McCartney是一名Web开发者,并在今天写下《Sergeant Pepper's Lonely Hearts Club Band》,那他一定会这样写:

It was twenty years ago today
That Håkon wrote a doc to say
That if the Web's gonna last a while
Then we need a way to define style.
So may I introduce to you
a way to add visual treats:
It's Sergeant Håkon's Cascading Style Sheets!

不过,当我们找到Paul家,请他为我们唱这首歌的时候,他却拒绝了,而且放出了他的看门狗FontTagBgcolor。那还是算了,为纪念这个好日子,Bruce面对面向Håkon提了一些问题,关于CSS的过去、现在和未来。

CSS的构想诞生于20年前。你对自己这个宝贝、孩子、小青年的成长感到满意吗?

当然,我对CSS的发展非常满意。CSS是Web规范的一块基石,有了CSS网页漂亮多了。HTML依旧生机勃勃就是CSS成功的明证。不过就像一个年青人一样,它还是有很大的上升空间。

你说过自己建议CSS是“要拯救HTML”,为什么这么说?

如果没有CSS,那么HTML恐怕会与今天大不相同。有桌面出版背景的作者认为它没有标签,很不习惯。当然也包括我自己。我自己发布的第一个网页就使用了带有文本内容的图片, 历史存档在这里。 如果按照这个思路继续发展下去,Web就会变成一台巨型传真机,文本图片可以传来传去。但对视障用户或者搜索引擎而言,这就很讨厌了。我建议CSS就是想阻止这种发展势头,同时为作者提供一种表达自己设计意图又不必增加新HTML标签的方式。

在第一稿建议中,有一个影响百分比说明符,像h1.font.size = 24pt 100%,就是这样描述的:

该行末尾的百分比表示要求的影响程度(这里是100%)。如果它在一个初始样式表(如用户控制的样式表)里面,则这个要求可以满足,比如用Helvetica来显示所有标题元素。如果这个语句来自后来的样式表,则保证满足未声明影响的样式。

为什么又抛弃了?

这种办法是想把作者和用户的要求与偏好组合到一起,是受了 MIT Media Lab的一个思路的启发,他们认为未来电视可能不会提供亮度和色彩的控制,而是会控制色情和暴力,或者左派、右派之类的。我的CSS建议是想着有一把滑尺,作者对滑尺的一端有完全控制力,而用户则对另一端有完全控制力。在滑尺中间,浏览器又可以混入一些要求,从而让所有人都能接受。这个办法对有的属性管用(如font-size),但对另一些属性(如font-family)则不行。Bert在对第一稿的回复中 批评了这个思路:

我觉得把两种设计方案折中成一个中性样式表的思路是错误的。如果我要求蓝黄,而别人要求黄蓝,那怎么办?结果难道是绿绿吗?谁希望看到标题很新潮,而正文却使用Helvetica?

我回复道:

有些属性可以混合,有些不行。“加权平均数”的典型应用是弱化作者的个性化倾向,比如建议的字号大小,而用户仍然可以对此有所控制。当然不一定非要使用这个功能,尽管“100%”等于二进制的“1”,但在二进制里反过来则不行。我认为计算机接口的二进制有点过。
当然,Bert是对的(通常他都是对的),那样的话不仅不解决问题还会制造新问题,所以我就抛弃了混合的思路。

上面使用的是JS风格的点语法。后来为什么又改了?

你管它叫JS风格的语法,这很有意思。我在提出CSS建议的时候,JavaScript还不存在呢,所以我不可能借鉴它的语法。实际上这个写法借鉴了 X11 Window System中的 X资源,那是MIT的又一个令人激动的项目。

之所以CSS语法由font.size改成font-size,有两个想法。首先,连字符让属性更像书面英语,让人觉得亲切易懂。其次, DSSSL和 DSSSL-Lite就使用这种连字符属性名。编写过DSSSL-Lite第一稿的James Clark参加了 W3C关于样式表的第一次研讨会,Bert和我就从DSSSL中借鉴了连字符。说到不方便,就是连字符在数学里表示减号,有时候会给解析器制造点麻烦。

Bert Bos是怎么参与进来的,你们俩怎么分工?

Bert Bos审阅了我的建议初稿。他的背景和兴趣跟我有点不一样,但在他写完了 他的建议后,我们很快意识到我俩的建议可以整合成一个。那时候,CERN不再支持Web项目,而W3C成立了。于是我就在 INRIA组建了W3C的欧洲分支,立刻聘用了Bert。CSS1的大部分内容都是1995年7月我们在索菲亚安替城(Sophia-Antipolis )用白板讨论出来的。Bert直到现在还在索菲亚安替城的W3C上班。每当我遇到棘手的技术难题,都会想起Bert和那块白板。

说到对CSS做出过贡献的人,我不能不提Thomas Reardon和Chris Wilson,他们都是微软的。Thomas是IE(Internet Explorer)的项目经理,他很早就想到了为Web引入样式表。Chris Wilson是负责把CSS加入IE3的程序员。IE3的实现很不标准,但别忘了它是在CSS1制定完成前发布的。Simon Daniels(也是微软的)用IE3写了一些叫人过目不忘的演示。他们的工作表明了一家大软件公司在支持刚刚诞生的标准。

有其他竞争性的建议吗?为什么你们的比别的好?

样式表语言的建议大概有十来个吧。不过,这些建议并不都适合Web。比如,浏览器会渐进地渲染并显示文档,那就必须处理找不到样式表的情况。能上网的设备也不少,需要能够为不同的设备编写样式表。因此,样式表语言必须能表达可伸缩且适应性强的设计。这是一个令人神往的研究领域,我为此还写过 一篇博士论文,其中比较了不同的样式表建议的手段。

当然,你的第二个小问题,我肯定就比较主观了。但我相信CSS确实具有几个显著的特性,特别适合在Web上使用:层叠、伪类和伪元素、向前兼容的解析规则、支持不同的媒体类型、重点突出选择符,还有特别棒的em单位。

你(和Bert)犯过最大的错误是什么?

我的博士论文专有一章说明CSS的问题。确实有问题,甚至有些都是自找的。但CSS1遇到过的最大的问题并非其设计(设计还是相当好的,我觉得),而是最初的实现。Jeffrey Zeldman曾提到这个情况:

如果Netscape 3忽略应用到元素的CSS规则,并随意为页面中的每个结构化元素都添加一些空白,如果IE4能正确处理但填充却很拙劣,那怎么写CSS才能放心?有些开发者为此根本就不会写CSS。有人写了一个样式表来补偿IE4的缺陷,写了另一个样式表纠正Netscape 4的错误。

微软和网景(Netscape )在这个问题上都有责任,而我们——我、Bert、W3C——如果能依照 CSS1规范拿出一套测试也可以避免很多问题。第一个真正的CSS测试是1998年10月份才出现的,那就是Todd Fahrner发布的 Acid测试。那个测试很有创意、一目了然,让开发者马上就知道自己是否通过了测试。一开始,没有一款浏览器能通过测试。但自从有了这个测试,加上CSS社区的强力推动,事情开始有了转机。 WaSP在推动标准化的进程中扮演了重要角色。Opera浏览器也起到了重要作用,它向世人展示CSS实际上是可以正确实现的。在了解到Opera的CSS实现非常彻底(比微软和网景都强太多)之后,我加入了Opera。

我在加入之前,Opera就以其浏览器能装进一张软盘(1.44 MB)而著称。“装进一张软盘”在当时是个很厉害的标志。添加对CSS的支持之后,浏览器有点“发福”,Opera不能再那么宣传了。“几乎可以装进一张软盘”听起来可没原来那么牛。

最初的Acid测试之后又出现了 Acid2和Acid3,背后的逻辑都一样:一个可视化的高要求的网页,用于测试各种CSS特性。Acid2的推出是受到 比尔·盖茨一封公开信的激发,那封信赞美了互操作性。让IE7遵循CSS标准看起来就是自然而然的了,随后微软就受到了Acid2的挑战。公平地讲,其他浏览器也有问题,Acid2让它们暴露了很多bug。微软的IE7对Acid2视而不见,但随后的IE8却完美地通过了测试,挺神奇的。现在的浏览器也都能了。

为什么你决定在盒模型中使用外边距、内边距、边框声明宽度,而没有使用IE5的box-sizing: border-box盒模型?

这两种盒模型都有相应的用武之地。如果你想拉伸一张图片以填充整个内容盒子,那么就要使用最初CSS的盒模型。如果你认为内边距和边框不应该扩展到某个区域之外,那IE5的盒模型更合适。个人认为,CSS盒模型的用途更广一些,可一些我很敬重人都不这么认为。这个冲突现在已经通过增加对box-sizing属性的支持得到了很好的解决。

我一直非常不喜欢绝对定位。是我的问题吗?规范中怎么会加入这个特性呢?

你这个问题让我想起了1996年的一些激烈的争论。简单地说,就是微软在一个叫做 CSS Regions: Absolute Positioning and Z-Ordering的草案中提出了绝对定位这个特性(没记错的话,当时的讨论仅限于W3C成员的邮件列表;最接近的公开文档是 WD-positioning)。有些新成立的CSS工作组成员持保留意见,Bert和我写了 一个简单的反对案。我们提议删掉position属性(用display代替),只描述相对定位(从而有时间好好讨论绝对定位)。但微软已经实现了自己的建议,不情愿删掉这个功能。最终,唯一重要的变化就是添加了rightbottom属性(平衡lefttop),以及position: fixed。这就在后来的CSS2中体现了出来。

跟你一样,我也一直不怎么喜欢绝对定位。有人说,绝对定位在Web上已经有了它的位置,而我时不时会用它实现一些编码不太可能实现的效果。

我曾听人说过不应该使用浮动来布局,因为这不是浮动特性“设计的初衷”,浮动最初只是为了实现图文绕排的。这样用有问题吗?

图文绕排是一个基本的布局技术。因此毫无疑问,浮动应该可以用于布局。我希望CSS能进入 屏幕分页展示这个领域。在分页内容时,浮动会更重要,因为你可以把元素浮动到屏幕的上头和下头。


路过

雷人

握手
17

鲜花
1

鸡蛋

刚表态过的朋友 (18 人)

相关阅读

回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛