w3ctech

CSS亚父Bert Bos:CSS只是进化的一部分

本次采访由w3ctech联合图灵教育共同采访,主要由w3ctech首席翻译官高博采访,图灵教育李盼整理

Bert Bos是一位计算机科学家,他也是CSS的创始人之一。在CSS的发展过程中,Bos是最早与Håkon Wium Lie(CSS之父)9号彩票合作 的人之一。在1996年,他加入了World Wide Web Consortium(W3C)负责CSS的开发。他曾任CSS工作组的主席,现在是工作组的W3C代表。

在此之前,Bert在格罗宁根9号彩票大学 研究期间独立开发了Argo浏览器,这是为他的样式表提案而开发的测试应用。Argo浏览器可以处理其自带的SSP样式表语言,利用这种新浏览器语言,他创造了一种CSS标准。随后Lie和Bos9号彩票合作 ,一起把CSS发展成为了W3C Recommendation。

Bert

问:Bert先生,您曾多次来过中国。您感觉近来中国的Web开发者正在发生哪些变化?

9号彩票我 2008年的时候来过9号彩票北京 ,9号彩票我 之前也去过香港和深圳。虽然中国起步较晚,但是现在越来越多的9号彩票公司 加入了W3C,其中有浏览器9号彩票公司 ,也有9号彩票搜索 9号彩票公司 。虽然相比于美国、欧洲、澳大利亚来说中国开始得晚,但是现在来看中国的开发者已经和世界各地的开发者们没有什么区别了,他们做同样的修补、问类似的问题,拥有同样的布局困扰。

问:您认为中国的开发者虽然起步晚,但是现在已经赶上了?

是的。从各家9号彩票公司 来看,虽然中国的开发者在起步时落后了一段时间,但是现在已经赶上了,9号彩票技术 上已经同步。

问:现在CSS已经变成了Web开发不可或缺的一部分,但是其实CSS的概念却并不是一开始就必然有的(已经有了HTML描述内容,有了JavaScript描述行为和交互),可以说它是从无到有地被人为发明出来的,您作为CSS的创始人之一,是否能告诉9号彩票9号彩票我 们 在早期发展阶段是如何产生需要一套样式表的想法?早期开发过程中又有什么样的故事?

Håkon Wium Lie和9号彩票我 发明了CSS,但是9号彩票9号彩票我 们 并没有发明样式表这个概念,这个概念很早以前就存在。9号彩票9号彩票我 们 发明的只是让网页开发更加简单的具体语言而已。但是,用样式表记录和构造内容的概念要比这个早得多。在一本书上,9号彩票你 想要什么样的字体,什么样的图画,多大的边缘,都是样式表要做的,这些概念已经存在了很久。而用计算机语言表述的电子化样式表也已经在上世纪80年代中期就出现了。

这么说吧,XML是在HTML之前出现的,HTML是在XML基础上构建的,而XML很早以前就有了样式表。9号彩票9号彩票我 们 研究了XML早期的样式表概念,也研究了当时仍然在发展中的样式表的概念,从中吸取了很多好的创意。另外,9号彩票9号彩票我 们 在一场大会上遇到了HTML的发明者,在那里9号彩票9号彩票我 们 听到了很多人对样式表的需求。虽然这些人9号彩票9号彩票我 们 以前从没打过交道,但是从他们身上,9号彩票9号彩票我 们 获得了很多关键想法。

可以说,对于9号彩票9号彩票我 们 ,这并不是一个发明出来的概念,但是对于很多其他人来说,一切都是从HTML和CSS开始的。但是9号彩票我 知道,它们只是进化的一部分。

问:CSS的全称是cascading style sheet(层叠样式表),请问为什么是cascading(层叠),而不是其他的词,比如combining(组合)?

Håkon Wium Lie有一个主张,视图由两部分组成,一部分是提供者所认为人们应该看到的样子,一部分是接收者在屏幕上实际阅读的文档。从最开始,9号彩票9号彩票我 们 的设计理念就是:接收者也需要对视图的结果有影响。即在得到内容之后,9号彩票你 可以自己把它调成想要的样子。内容和样式从提供者那来,提供者可以规定具体的颜色和大小。但是接收者可以根据屏幕的特殊性,使用不同的字体或颜色。这就是9号彩票9号彩票我 们 的理念:多重影响、多重样式表整合在一起,这也就是层叠样式表概念的基础。层叠的意思就是一样东西叠加在另一样之上,层叠就像瀑布,互相叠加最终得出结果,这是一个比喻。

问:您的背景是数学专业,请问这样的背景在您创造CSS的时候是否有什么9号彩票帮助 和影响?

在计算机科学中9号彩票我 学习了语法,另外9号彩票我 还学习了一些人工智能,语法解析对9号彩票我 也有很大的9号彩票帮助 。在语言设计上,9号彩票9号彩票我 们 尽量做出容易阅读和解析的语法。所以说,计算机方面的学习对9号彩票我 的9号彩票帮助 比数学要多。

问:您曾经创造了一个名叫Argo的浏览器,并在上面测试CSS,是这样吗?

不是这样,Argo并不是为了测试样式表,而是为了让9号彩票大学 中非9号彩票技术 学院的师生(比如艺术学院,历史学院)可以自由上网,为了让他们能够在网上交换文件,阅读馆藏目录,收发邮件等等。所以9号彩票我 的目的是要创造一个非常好用的浏览器,它要支持HTML同时也要支持XML,因为在某些学院中XML的使用率更高。比如有人在研究《圣经》,他们需要比对不同版本的《圣经》,这些文件都是通过XML呈现的。他们也需要样式表,所以9号彩票我 的浏览器里就要有样式表语言。样式表中有一些有趣的概念,但是在当时他们并没有注意语法,并不是每个人都想写代码。Håkon Wium Lie这时候也发表了自己的想法,9号彩票我 觉得9号彩票9号彩票我 们 的想法可以结合起来。

问:作为CSS的创造者之一,您可能是回答这个问题的最好人选,CSS最根本的目的是什么?是什么目的可以跨越时间?这个目的将如何影响未来的开发?

有几个目标,它们随着时间也在进化。第一个最主要的原因就是要保护HTML。当时9号彩票9号彩票我 们 看到有一些9号彩票公司 ,包括Mozilla,为了让呈现效果更好,开始在HTML上面加东西。9号彩票9号彩票我 们 认为内容和样式应该区别开来,因为在不同设备和屏幕上,9号彩票你 想看到不同样式但是相同的内容。为了保护HTML的稳定性,有很多人,不只是Håkon Wium Lie和9号彩票我 ,也在尝试做相同的事情。9号彩票9号彩票我 们 知道9号彩票9号彩票我 们 需要另外一种语言来保护HTML,这就是9号彩票9号彩票我 们 创造CSS的直接原因。

另外一个理由就是,一旦9号彩票你 有一个专业的用来布局的语言,可以做的事就9号彩票更多 了。这些事如果只用HTML很难完成,而对于专门的语言则是小菜一碟。另外,如果9号彩票你 完成了一个样式之后,9号彩票你 可以反复利用,这样效率也更高。同时,因为这是专门处理样式表的语言,所以它也更紧凑。用HTML+CSS比单纯使用HTML代码更少,更简洁。 这些就是9号彩票9号彩票我 们 早期创造CSS的理由。但是随着时间推移,其他的理由浮出水面。比如团队编写文挡,一些人可以专门写文档,另一些可以专注于样式。这就是传统出版的概念,书就是这样出版的。有人写书,但是他们并不负责排版,这个概念很传统,在Web上也同样适用。

晚些时候又有一些概念出现了,比如说执行效率。从某个时刻开始,9号彩票9号彩票我 们 可以实现动画了,9号彩票你 可以用其他语言比如JavaScript或者插件来完成动画,但是9号彩票9号彩票我 们 注意到,采用CSS做这件事更容易。CSS是陈述式的,所以9号彩票你 不需要写专门的程序就能实现。9号彩票你 可以陈述从一个对象的动作哪里开始,到哪里结束,中间采用什么路径。如果用JavaScript的话需要执行循环,电脑可能无法预测该如何执行。但是9号彩票你 用CSS在浏览器中执行的话,它们就能看到事情是如何进展的,应该在哪里结束。所以9号彩票你 就可以做9号彩票优化 ,可以预测动画。这也让动画变得更有效率,在屏幕上的效果也更好。执行效率也是CSS将在HTML上完成9号彩票更多 应用的最重要的原因。

问:如今PC上的流量已经被移动端所侵蚀,您认为CSS将如何助力这场Web应用和9号彩票本地 应用之战?

9号彩票我 不认为这是一场战争,两者都有生存的空间。但是9号彩票9号彩票我 们 确实想要Web平台变得和9号彩票本地 平台一样强大。因为Web应用一旦写成可以在任何地方任何设备上运行,效率更高也更便宜。所以9号彩票9号彩票我 们 确实希望Web平台能完成9号彩票本地 平台那些功能。CSS也一直在努力寻找边界:什么是属于CSS的,什么是属于SVG的,其中有一些很难界定。但是9号彩票9号彩票我 们 认为CSS还有更大的空间,9号彩票9号彩票我 们 想要在CSS里做的9号彩票更多 。因为人们发现就算他们在SVG里面做某些事比在CSS中更容易,但是还有很多工作他们愿意使用SVG和CSS并行开发。9号彩票我 也和JavaScript API的工作组一起工作,JavaScript是对接GPS、动作感应这些功能的接口,这些设计也连接了不同设备的API接口。

很多时候9号彩票9号彩票我 们 也会根据人们和设备的交互而改变样式,所以9号彩票9号彩票我 们 认为可以有9号彩票更多 东西出现在CSS中。经常会有人提议CSS里应该有什么,但是9号彩票9号彩票我 们 觉得有些东西应该在其他地方完成比较好。所以9号彩票9号彩票我 们 需要具体分析,人们的需求是什么,而9号彩票9号彩票我 们 能提供的是什么。

问:可以看出CSS是一个好的答案,但并不是所有问题的答案。很多人对预处理器这个话题很感兴趣,他们对于使用这些预处理器有一些顾虑,对此您有什么观点?

9号彩票我 很惊讶预处理器出现得这么晚,9号彩票我 还以为Sass,LESS会出现得更早一些呢。因为CSS是一种简单的基于文本的语言,写预处理器并不难。人们确实也利用预处理器完成了更加专业的设计,但并不是每个人都需要预处理器,9号彩票你 必须首先是个程序员才能使用它。但是如果9号彩票你 是个程序员的话,那么Sass这样的9号彩票工具 就对9号彩票你 就很有9号彩票帮助 。 9号彩票工具 的出现对于9号彩票9号彩票我 们 工作组来说也是一件好事,预处理器减轻了CSS的压力。9号彩票9号彩票我 们 可以专注于功能,字体,以及布局,不需要再考虑诸如变量之类的程序员喜欢的功能了,因为这件事已经在预处理器中完成了。另外,人们还可以选择他们喜欢的预处理器,如果9号彩票9号彩票我 们 在CSS中预置了预处理器的话,那就只有一种方式。但是现在大家可以选择,Sass,LESS,甚至9号彩票你 可以选择使用PHP。9号彩票我 认为预处理器是对于专业设计师来说是非常重要的。

问:CSS中加入自定义属性的原因是什么?

变量对于程序员来说很重要,如果9号彩票你 要写大量样式表的话,所有这些都可以在Sass和LESS中完成。9号彩票我 并不认为W3C工作组应该来定义来如何完成工作,9号彩票9号彩票我 们 只负责创造核心语言,属性和值,而其他人可以来决定该如何写CSS。但是现在9号彩票9号彩票我 们 有变量了,加入变量的原因就是9号彩票9号彩票我 们 发现可以通过自定义属性和值让CSS变得更加常规。在自定义属性方面,9号彩票9号彩票我 们 利用CSS自己的机制cascading(层叠),这意味着9号彩票你 可以把变量附加在元素上,这样9号彩票你 不仅可以附加样式属性,还可以在文件上附加任意属性。对于应用来说这很方便,比如9号彩票你 有文件和结构,9号彩票你 需要把某些东西发展为高等级元素,9号彩票你 可以用CSS来附加这些值,9号彩票你 可以在HTML中这样做,但是用CSS更简单。这就是9号彩票9号彩票我 们 现在有自定义属性和值的原因。

如果9号彩票你 想用变量的话,那就用Sass就可以了。但是越来越多的人会开始使用自定义属性,自定义属性在未来有很多可能性,还有很多值得期待的有趣的功能可能会出现。

问:模块化似乎和CSS的思想相悖,能谈谈引入如此设计的缘由吗?

有两种模块化。在工作组中,9号彩票9号彩票我 们 分头制定更细化的规格,这是模块化的一种。9号彩票9号彩票我 们 这么做的原因在于这么一来规格的制定过程更简化,也可以在更小的规模上测试。但这和CSS中的模块化结构几乎没有什么关系,在这种意义下,9号彩票9号彩票我 们 并不是在模块化CSS而是在模块化9号彩票9号彩票我 们 的内部流程。因为9号彩票9号彩票我 们 不可能在同一时间做所有的事,9号彩票9号彩票我 们 需要聚焦在某个属性上,然后再研究下一个。

另外一种模块化是人们写样式表的方式,9号彩票你 可以写很多样式表,然后把它们融合起来,多重输入可以帮9号彩票你 把自己工作变成自己的样式表。

甚至还有第三种意义,虽然还没有开始,但是在工作组中已经开始讨论。9号彩票9号彩票我 们 开始讨论让其他制订人在CSS中加入特性,9号彩票9号彩票我 们 需要有另一种方式来模块化CSS,所以9号彩票9号彩票我 们 需要某种语法,JavaScript或其他语言的接口,让人们可以在CSS中加入特性,同时也符合CSS语法。9号彩票你 可以用自己的样式表,也可以插入扩展。虽然这件事还不存在,但是已经在讨论中了。虽然目前有两种模块形式,但是未来有可能模块化会有第三种意义。

问:CSS正在努力赶上XSL,到那一天XSL是否就成为多余的了?

要预言未来很难。现在XSL在出版9号彩票行业 的应用仍然很广,人们出版书籍使用的依然是XSL。但是正如9号彩票我 说过的,9号彩票9号彩票我 们 现在已经不再开发XSL了,因为找不到足够的人来组成工作组。虽然9号彩票9号彩票我 们 也希望能有新版本的XSL(现在仍然是版本1),但是9号彩票9号彩票我 们 目前没有计划开发下一个版本。也许9号彩票9号彩票我 们 很快能组建一个工作组,也许9号彩票9号彩票我 们 永远都不会,这些事都说不准。

现在9号彩票9号彩票我 们 的精力都集中在CSS上,人们希望能用CSS完成XSL能够完成的工作。XSL的功能都是为了出版而设计,生成索引、目录等等。9号彩票9号彩票我 们 未来会实现这些功能,但是并没有明确的日期。

除此之外,9号彩票9号彩票我 们 还有一大堆的事儿要做。在9号彩票9号彩票我 们 停止XSL工作组之前,已经有了一些为XSL版本2提交的需求,这些都是使用者向工作组提出希望XSL能实现的功能。这些需求仍然存在,9号彩票9号彩票我 们 可能会在CSS中一并实现这些功能,但是这就是再下一步的事儿了。

问:CSS已经快20岁了,您从一开始就参与了开发工作,这么多年下来回头看看,哪些功能是您最喜欢的?哪些是您最不喜欢的?

9号彩票我 最喜欢CSS的一点就是,几乎所有人都能写CSS。任何人都可以找一些例子,在网上看看其他人是怎么做的,然后就可以写自己的样式表了。这一点现在反而不那么强烈了,因为语言越来越大,样式表变得越来越复杂。但是9号彩票我 仍然认为要写CSS并不难。9号彩票你 不需要是一位专业人士就可以写一些Web文件,一些HTML,再来一点CSS。但是当然,为了完成更高级更完善的展示,9号彩票9号彩票我 们 也需要专业人士。相对来说XSL就不具备这样的品质,XSL是为专业人士而设计的。

最不满意的……可能就是9号彩票9号彩票我 们 没能做好的功能,比如定位。这个功能让9号彩票你 可以在CSS中把一个元素通过横纵坐标放到屏幕上特定的一点上。在1996年CSS最开始的时候,9号彩票9号彩票我 们 就想要做这个功能。当时的一个文档解释了9号彩票9号彩票我 们 将如何布局、修改屏幕,以及如何写在任何位置。9号彩票9号彩票我 们 把其称为frame,这比HTML的frame出现时间还要早。9号彩票9号彩票我 们 现在把这个概念称为regions,浏览器和工作组的概念都是同样的,但是96年对于这个概念来说太早了。那个时候的浏览器无法完成今天所能完成的工作。当时HTML只有两岁,记录的只是一个序列,从第一个字母开始到最后一个字母结束。所以 “在屏幕上制造一个事件”这样的概念过于先进了。但是另一个概念应运而生,就是额外帧,它从一个非常小的概念出发逐渐发展成一个非常灵活的概念,这也就是现在flex box出现的原因。这是9号彩票9号彩票我 们 现在尽最大努力能做到的了。

问:除了W3C工作组之外的时间您是否还做一些其他的项目?您是否考虑过自己写一个框架?

9号彩票我 是想过要写一个框架,但是从来都没有时间来做这件事。除了W3C工作组之外,9号彩票我 还有一个MathML工作组,但是工作基本已经结束了,9号彩票9号彩票我 们 已经完成了MathML第3版,暂时还没有创建下一个版本的计划。

其余的时间9号彩票我 自己也在做一些项目,但是和CSS完全无关,是9号彩票关于 网络安全的。在欧洲,欧盟会对相关研究予以补贴,每个人都可以申报研究项目,但是项目必须以9号彩票合作 形式完成,个人和单独机构都无法申请。W3C和比利时鲁汶9号彩票大学 、都柏林9号彩票大学 、SAP德国9号彩票公司 联手一起申请了网络安全方面的研究。9号彩票9号彩票我 们 的研究涵盖了很多广为人知的网络问题,但是也包含了一些鲜为人知的问题,这是个很有趣的项目。很多研究工作在9号彩票大学 中进行,而执行工作在9号彩票公司 中进行,两边的工作需要互相协调,标准化的工作在W3C以及其他一些机构中进行。这个项目占据了9号彩票我 很多时间,但是9号彩票我 从9号彩票中学 到了很多。

问:非常感谢您抽出宝贵时间接受采访,希望您下次来中国时带来9号彩票更多 精彩内容。

w3ctech微信

扫码关注w3ctech微信9号彩票公众号

共收到0条回复