说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

CSS生日快乐:CSS之父Håkon Wium Lie访谈录

HTML文档下载 WORD文档下载 PDF文档下载
CSS是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。

【编者按】CSS是能够真正做到网页表现与内容分离的一种样式设计语言,相对于传统HTML的表现而言,CSS能够对网页中的对象的位置排版进行像素级的精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力,并能够进行初步交互设计,是目前基于文本展示最优秀的表现设计语言。


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恐怕会与今天大不相同。有桌面出版背景的作者认为它没有<color><font>标签,很不习惯。当然也包括我自己。我自己发布的第一个网页就使用了带有文本内容的图片, 历史存档在这里。 如果按照这个思路继续发展下去,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忽略应用到<body>元素的CSS规则,并随意为页面中的每个结构化元素都添加一些空白,如果IE4能正确处理<body>但填充却很拙劣,那怎么写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能进入 屏幕分页展示这个领域。在分页内容时,浮动会更重要,因为你可以把元素浮动到屏幕的上头和下头。

如果你能施展魔法,那你最希望当前CSS中的哪些东西从这个世界上销声匿迹,又希望添加并让哪些东西瞬间无所不在?

我希望清除特定于浏览器版本的代码,比如<!--[if lt IE 7 ]>。虽然从技术上说这不属性CSS,但这种“注释”不应该成为必要的东西,它们败坏了Web标准的名誉。

你提的后一个问题更有意思。如果是在2006年,我想说 Web字体。如果是在2007年,我想说 <video>元素(误入HTML领地有年头了)。这两者现在所有浏览器都支持了。

2011年,看到那么多应用使用页面(不带滚动条)创建令人眩目的幻灯片,我开始想让网页变成真正的页面。思路就是样式表可以触发分页模式,把内容分配到多个页面中。用户可以通过手势或者PageUp和PageDown切换页面。我希望这样一来在浏览器中创建电子书不仅成为可能,甚至更容易。为此,有点魔法会更好。你可以帮我在所有浏览器提供商的额头上撒些仙尘吗?

为什么我们还不能通过CSS实现分页布局,又不是什么尖端技术?(Flexbox,注意啦……)

布局很复杂,在Web上实现布局更复杂,因为页面要在很多不同设备中显示。CSS有几种排布内容的机制,包括绝对定位元素、浮动、多栏布局和CSS表格。这些特性综合运用起来非常复杂,但我也不认为这是什么尖端技术。不过我承认没有怎么用过Flexbox。

你怎么看SASS和LESS这些预处理器?CSS可以从这些技术上借鉴什么?

当然,预处理器很有用。我想可能可以从预处理器的功能里选择5个左右最流行的,内置到CSS里。我个人比较喜欢嵌套选择符、单行注释(以//开头)。等CSS 50岁的时候,我会告诉你为什么CSS一开始并没有考虑这些。

你是WHATWG的成员,怎么会出现这个组织?

WHATWG成立于W3C想要放弃HTML,并把工作重心转移到基于XHTML、XForms、SMIL和SVG构建 混合文档上的时候。对浏览器制造商而言,HTML太重要了,怎么能放弃呢!因此,当时还在我的Opera团队的Ian Hickson成立了WHATWG,继续开发新的Web标准。同时,我们也关注微软的 XAML,它在专有应用语言上面加入了一层简单的XML。因此WHATWG的目标就是应用,而不是文档。Ian作为编辑还在继续开发HTML标准, 硕果累累。

你是CSS之父,但你最近却在WHATWG而非W3C的CSS工作组名义下发布了一些规范。为什么?

事实上, CSS Figures和 CSS Books是WHATWG的工作项目。以WHATWG的名义发布这些规范有重大的意义。这个“活标准”模型可以低成本快速更新,这与过去发布W3C Working Drafts的困难程度形成了鲜明的对比。WHATWG 保持规范适度超前于实现而不致使实现放弃的目标,我非常认同。

最后一个问题,CSS还能胜任自己的角色吗?或者说,我们是不是应该换一个新模型,比如网格样式表(Grid Style Sheets)?

1999年,Ethan Munson和Philip M Marden就提到“对样式表语言的研究严重不足”。这个结论到今天依然不过时,任何研究和改进样式表的努力都必须鼓励。

GSS是个有意思的例子,它在样式表机制中添加了“Cassowary”约束求解器。在1995年最初的CSS实现中,我使用的是“SkyBlue”约束求解器来解决样式表语句的冲突。(顺便说一下,这两种约束求解器都是华盛顿大学开发的。)通过约束求解器可以表达任意两个元素之间的关系,并能自动解决冲突。可是,随着旧元素的消失和新元素的加入(比如通过DOM操作),问题会变复杂。此外还要恰当地处理好循环依赖。考虑到这些问题,我很早就打消了通过CSS表达任意元素间布局约束的念头。

过去,要支持新规范必须说服所有浏览器制造商,要他们拿出宝贵的开发时间。这就提高了门槛,可能还高得离谱。而现在,已经可能像通过库扩展JavaScript一样扩展浏览器了,试验和研究样式表容易多了。

回到你的问题上:CSS还胜任它的角色吗?我认为胜任。我还没看到有可能取代它的新模型出现。新想法一定会有,但应该会扩展而非替代CSS。我相信我们今天写的CSS代码,500年后的计算机仍然能看懂。

谢谢你接受采访,祝CSS生日快乐!

英文来自: Dev.Opera

译文出自:图灵社区

走近黑客们的世界,感受网络空间的心跳 VMworld 2014 Day One:Docker、数据中心、混合云新举措 Docker和Kubernetes或将加速SDN发展 前端开发框架三剑客—AngularJS VS. Backone.js VS.Ember.js 【CTO俱乐部读书会】《流程的永恒之道》辛鹏:企业的本质就是流程运营 紧扣微信研发痛点 2014微信开发者大会吸引大量外地参会者 Mobile First!jQuery UI组件集Wijmo五年最大更新 首届TCL杯HTML5智能电视—应用开发大赛火热开启! MDCC智能硬件征集关键词:智能家居、机器人、健康生活 采集颜色、自动同步,还有比这更牛叉的儿童触控笔么? AppCan移动平台:为企业移动化进程加速 学生强则国强,访天猫推荐算法大赛Top 9团队 Mozilla与三星之子——Servo特性解读 360天巡启动公测 打造新一代企业级无线安全解决方案 继Storm和Spark之后,Hortonworks添加对Kafka的支持 一周消息树:国产操作系统最快10月发布,并支持应用商店 技术团队看板方法实践的难点分析 SAP云服务加速转型:调动资源瞄准中国市场 开发测试全承包!移动应用开发工具Telerik平台 火火火火火!看HomeKit如何改变物联网和智能家居? MDCC应用与工具关键词:平台、社交、垂直、解决方案 Leap Motion正式入华 将发布第二代软件SDK 120万操作/秒Redis Cloud 集群单一服务器非基准测试程序 2014微信开发者大会顺利结束 TOP10优秀微信开发商名单公布 【最佳实践】通过DevOps确保可靠和有效的信息安全 2048 Hello World:跨平台快速应用开发Python框架Kivy Forrester:关于私有云的10个事实 2014年8月操作系统份额:Win 8.x大涨,Linux继续下跌 0代码、不编程—交互式网页设计工具VXPLO 揭秘Instagram Hyperlapse背后的技术 【CTO俱乐部在线教育研讨会】用互联网技术深入创新教育产品 ==有关打印图表的问题??=== 如何把TRichEdit中的内容转成流?(要把其中的内容保存到数据库) 哪位知道在ASP中可不可以用VB中的Winsock控件 关于数组 50分!!!!!!!!!!!!!! 如果只有ss.mdf没有ss_Log.ldf怎样恢复ss数据库??急 TRichEdit用什么代码可以使其翻页?就和用键盘的pageDown效果一样! 谁能帮我?怎么把 服务器Script的变量 传给客户端的Script的变量? 大家快看这个! 如何执行中文名class 在PARADOX表中,日期型字段如何写Sql? evb中创建控件 请问在EAS下开发,server端使用datastore的用法与传统的pb有所不同吗? 谁能给我讲讲(SDK中)Dialog 是怎样由CreateWindowEx( )生成的? 关于引用和指针传递参数的问题,基本功扎实的请进 美丽的心愿 PLCC j 我已经新建了picturebox(100),如何定义该控件数组各个控件的click()事件???? 为什么这样不可以呢 这本书好吗? 哪里有卡通警察???? 如何实现在子窗口中加上listctrl等控件?谢谢! 哪里有好用的Win2000下用的五笔软件? 对IP数据包截获,过滤,TCP协议分析的朋友请留下email 高手请进!50分赠送!!!!!!!!!!!!!(运行正确即送分)! 一个关于dropdowndw的问题 普通PC是否有装UNIX的必要? 谁有好的加密算法介绍几个,在这里谢谢大家了! alter table--问题 请求帮助!help me!回答正确一定给分 哪里有卡通警察???? int64@163.com 我在一个.CPP文件中定义了一种ENUM类型,我怎样在其他的.CPP中定义此ENUM类型的变量? 小问题 Crystal reports的问题 a question about sqlserver + delphi 有关数据库的设计 请问谁有360度可以许多张图片旋转的代码。 各位大虾,kde下的KDevelop怎么用,尤其是C++编程? 急!急!急!急!急!急!急!急! 我该如何调试一个进程外的exe组件呢?我该如何调试一个进程外的exe组件呢? 打包的问题? 如何在一个MFC程序中取得theApp的指针?? vb与ACCESS200以上版本的兼容性问题 怎么做到的录像? 能不能在基于对话框的程序里实现串行化? MS专家请进:行锁定问题 怎样得到一个文件的扩展名 我在VB中引用了"Microsoft DAO2.5/3.5 compatibility Library",请问在做安装程序时要添加什么DLL和库文件? 高手请进!35分赠送!!!!!!!!!!!!!(运行正确即送分)! sos sos sos 求一源程序或者代码,或者详细制作方法 求教:用java怎样写,内详。 水乡民居、窑洞、客家土楼、蒙古包 主要分布在哪里? 8. 质量为m的小球在竖直平面的圆形轨道的内侧运动,经过最高点而不脱离轨道的临界速度值是v,当小球以2v的速度经过最高点时,对轨道的压力大小是A 0 B mg C 3mg D 5mg 只有重力做功才能从重心的位置变化来计算吗如果是其它力可以看重心变化来计算大小吗 水乡居民、窑洞、客家土楼、蒙古包主要分布在哪些地区及它们各自的特点 高中物理曲线运动的公式和具体内容 抓着一个东西在水平方向移动,重力做功吗? 表现人物性格或品质的环境描写的句子、、 机械能的增量等于除重力外其他力做功的代数之和如果有两个物体或以上还适用吗,为什么?如果过程中因碰撞而有能量损耗还适用吗? 在竖直方向提升货物,也算重力做功?图是工厂里用来吊运货物的行车滑轮组.某次作业时,行车在钢丝绳的自由端用2000N的力,将重6000N的货物匀速竖直提升3m,接着又在水平方向移动6m.在竖直方向 对日本的自然地理特征,表述不正确的是( )A、多火山、地震 B、多优良港湾,海岸线曲折C、日本境内多山,3/4是山地和丘陵D、降水稀少,河流长、水量大 除重力或弹力以外其它力做功等于机械能的改变量 这句话如何理解 分析透彻哦 龙阳之事是什么意思? 是不是安培力做功总是电阻的产热? 除重力以外,有电场力做功、弹力做功,所以机械能的增量等于电场力做功和弹力做功的代数和.这句话对吗? 不要做龙阳啊 是什么意思? 发于心而止于口的意思是什么 消耗的机械能,等于非重力做功,是不是也可以用 消耗势能+消耗动能 来计算? 龙阳是什么意思 发于心而至于口意思 谁知道大家拍婚纱摄影有什么意义拍婚纱照等老了回味一下幸福的认为记念一下啊 高中物理知识点整理方法我是高一的,高中物理知识点整理需要整理错题吗?整理知识点是只整理自己平时有疑问和需加强理解的地方还是照搬整理每个知识点?求有经验的学哥学姐给点建议,最 感恩一定不要仅发于心而至于口的含义 有没有高中物理的公式大全? 谁帮我整理高中物理所有知识点 浮沉原理是谁发现的?是个科学家 有人发 детёныш Сласйбо! 刚刚拍的,谁知道这是什么蛇? 气体的浮沉原理是什么 “那时我们大家才醒悟过来,在岔路口诚实不欺,多么重要.” 这句话中的( )一词有两层意思;一层指( ),一层是指 ( ). 高中物理必2公式大全 有关沉浮原理的发明创造把鸡蛋放在水中,鸡蛋会沉在水底.慢慢向水中加入食盐,用筷子不断搅拌,随着食盐的逐渐溶解,原先沉在杯底的鸡蛋浮了起来!它为什么会浮在水面上呢?人类根据物体沉 从自然地理和人文地理的角度比较英国和日本 “拍施”是什么意思谁知道大神们帮帮忙 描写"月"的诗句20句描写"月"的,急! 光在空气中的传播速度是多少? 高中物理和化学的公式大全公式要知道清楚 克服安培力做功会产生电流吗比如切割磁感线 用一段话写自己的家乡我老家在安徽 谁知道,我拍的照片中最下面那个三角号代表什么意思 描写自然环境 寒冷的句子 20句 写一段话,介绍一下你的家乡. 这样,支持力做功是不是只有当有与支持力相同方向位移才会做功?重力做功又是怎样? 电流为什么能做功?施力物体是什么? 用一段话描写我的家乡我的家乡在梁山,用一段话来写她的美丽,在一小时内哦! 除重力以外其他力做功的是什么能啊或者说它改变的是什么能量 电流是怎样做功的,不是说在力的方向上移动一定的距离吗? 233333333什么意思 高中物理的所有知识点公式 为什么安倍力做功,电流就转化成其他形式的能 233333333是什么意思OωO 高中物理的知识点及公式总结, 住窑洞、蒙古包、客家土楼跟当地环境有什么关系啊今天地理老师叫查,我半天都查不出来啊啊啊啊~!拜托亲们了就没人来帮帮我嘛 9.如图4-1-12所示,一辆汽车沿水平地面匀速行驶,通过跨过定滑轮的轻绳将一物体A竖直向上提起,在此过程中,物体A的运动情况是(  )A.加速上升,且加速度不断增大B.加速上升,且加速度 古代,除了短袖龙阳之外,还有没有称男同性恋的词语?如题.附加一个,为什么古代叫男同性恋是兔爷? 水乡民居、窑洞、客家土楼、蒙古包,这几种民居主要分布在哪些地区?说说它们各自特点. 如图所示,水平台AB距离地面CD高0.80m.有一小滑块从A点以6m/s的初速度在水平台上做匀速直线运动,并从水平台边缘的B点水平飞出,最后落在地面上的D点,已知AB=2.20m,落地点到平台的水平距离是2.00 古代龙阳之风很盛行吗?主要那个朝代比较盛行 ,主要是那个阶层. 水乡民居、窑洞、客家围屋、蒙古包的建筑特点还有当地的自然环境特点 高中物理曲线运动公式和具体内容 做俯卧撑时做功到底是肩膀上升高度做功还是重心上升高度做功?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘