冰与火之歌:浏览器前缀

寻找薛定谔的猫 寻找薛定谔的猫     2022-09-08     363

关键词:

以下内容摘自《CSS揭秘》一书 

 在标准的开发过程中,总是有大大的"第22 条军规"1①挡在面前:标准的工作组需要网页开发者这一端的输入,以确保各项规范可以处理真实的开发需求;但是开发者往往没有兴趣尝试那些在生产环境中还不能使用的东西。当实验性的技术被广泛应用到生产时,工作组就被这些技术早期的、实验性的版本捆住手脚了,因为一旦这些技术有变动,那些已经在用这些技术的网站就挂了。显然,这完全否定了让开发者尝试早期标准的好处。

  这些年来,为了解决这个难题,许多方案被提了出来,但都不够完美。饱受诟病的浏览器前缀就是其中之一。这个方案是指每个浏览器都可以实现这些实验性的(甚至是私有的、非标准的)特性,但要在名称前面加上自己特有的前缀。最常见的前缀分别是Firefox 的-moz-、IE 的-ms-、Opera 的-o- 以及Safari 和Chrome 的-webkit-。网页开发者可以自由地尝试这些加了前缀的特性,并把试用结果反馈给工作组,而工作组随后会将这些反馈吸收到规范之中,并且逐渐完善该项特性的设计。由于最终标准化的版本会有一个不同的名称(没有前缀),它在实际应用中就不会跟加前缀版本相冲突了。

  听起来不错,对吧?但是你可能也猜到了,现实与我们的期望往往有很大的落差。当开发者发现这些实验性的、加了前缀的属性可以轻而易举地实现以前大费周章才能达到的效果时,他们就开始滥用了。这些加了浏览器前缀的属性迅速成为CSS 领域的一大潮流。网上的教程会写到它们,Stack Overflow 上的问答会提到它们……很快,几乎每个有上进心的CSS 开发者都开始争先恐后地使用它们。

  不久,网页开发者们就发现,在使用这些神奇的新特性时,如果只写出当下有效的浏览器前缀,就意味着以后要经常回来打补丁:每当又一个浏览器实现了这个新特性时,他们都需要多加一行。跟进各个特性在各个浏览器下是不是要加前缀,光是想想就让人头皮发麻。开发者会怎样应对?那就是先发制人地加上所有可能的浏览器前缀,再把无前缀的版本放在最后,以图一劳永逸。我们最终写出的代码可能就是这样的:

-moz-border-radius: 10px;  
-ms-border-radius: 10px;  
-o-border-radius: 10px;  
-webkit-border-radius: 10px;  
border-radius: 10px; 

  这里面有两条声明是完全多余的:-ms-border-radius 和-o-border-radius 这两个属性从来没有在任何浏览器中出现过,因为IE 和Opera 从一开始就是直接实现border-radius 这个无前缀版本的。

  显然,把每个声明都重复五遍是相当枯燥的,而且很难维护。因此出现某个工具来把这项工作自动化只是个时间问题。

  ■ 像CSS3, Please!(http://css3please.com)和pleeease(http://pleee-ase.io/playground.html)这样的网站允许你把无前缀的CSS 代码粘贴进去,它们会自动帮你把必要的前缀都加好。这类网站是"前缀危机"所催生出的第一批工具,很快就过气了,因为跟其他方案相比, 它们的使用成本太高了。

  ■ Autoprefixer(https://github.com/ai/autoprefixer)采用Can I Use... (http://caniuse.com)的数据库来判断哪些前缀是需要添加的;此外, 它是在本地完成编译的,类似预处理器。

  ■ 我自己开发的 -prefix-free(http://leaverou.github.io/prefixfree)会在浏览器中进行特性检测,来决定哪些前缀是需要的。它的好处在于几乎不需要更新,因为其所有信息都是用一份属性清单在真实的浏览器环境中跑出来的结果。

  ■ 类似Stylus(http://stylus-lang.com/)、LESS(http://lesscss.org) 或Sass(http://sass-lang.com)的预处理器并不自带任何加前缀的方法, 但很多人开发过一些能为常用属性加前缀的mixin;社区中也有一些库提供了这类mixin。

  由于网页开发者使用无前缀的属性是想确保代码的向前兼容,那么工作组想要修改这些无前缀语法就变得不可能了。我们基本上就跟这些半生不熟的早期规范绑在一起了,只能通过极其有限的途径来修改它们。用不了多久,这个"坑"里的每个人就会意识到,浏览器前缀已是一场史诗般的失败。

  最近,浏览器厂商已经很少以前缀的方式来实验性地实现新特性了。取而代之的是,这些实验性特性需要通过配置开关来启用,这可以有效防止开发者在生产环境中使用它们,因为你不能要求用户为了正确地浏览你的网站而去修改浏览器设置。当然,这会导致一个后果:尝试这些实验性特性的开发者会减少;但我们仍然会得到足够多的反馈,甚至是更高质量的反馈(你可能会质疑),同时还避免了浏览器前缀的所有缺点。不过我们还需要很长的时间,才能从浏览器前缀所引发的涟漪效应中解脱出来。

急求冰与火之歌:权力的游戏 第一季高清完整版下载,谢谢!!

...11年4月17日美国首播。剧情根据GeorgeR.R.Martin的系列小说《冰与火之歌》七部曲为基础改编创作而成。故事发生在一块虚构的大陆(维斯特洛)。剧情主要讲述北境之王史塔克家族的领主艾德·史塔克受国王邀请进入议会,成为国... 查看详情

冰与火之歌:python的三元表达式

我不知道为什么,Python这么优雅的语言居然不支持三元运算符,也就意味着无法像C语言一样直接使用conditon?a:b来返回a或b。我感觉我对Python的喜爱受到了挑战。我不喜欢这种感觉。经过上网搜索和自行实验,我终于找... 查看详情

冰与火之歌:python的三元表达式

我不知道为什么,Python这么优雅的语言居然不支持三元运算符,也就意味着无法像C语言一样直接使用conditon?a:b来返回a或b。我感觉我对Python的喜爱受到了挑战。我不喜欢这种感觉。经过上网搜索和自行实验,我终于找... 查看详情

ai创投的冰与火之歌:泡沫跟风短板和有钱花不出去的沮丧

转自:http://36kr.com/p/5071386.html国内的AI行业仍处于野蛮生长阶段。热钱不少,优质项目却不多。创业者拿钱难,投资者有钱却花不出去。编者按:本文来自微信公众号“刺猬公社”(ID:ciweigongshe),作者哲铭;36氪经授权... 查看详情

docker前台进程和系统init进程的冰与火之歌

参考技术A终于搞定了将/usr/sbin/init换成/usr/lib/systemd/systemd --system --unit=basic.target实际上,前者是后者的符号链接,真正执行的是后者。两者执行的时候都同样会卡住,卡住是啥意思呢,stackoverflow的原话是noreturn,即它执行... 查看详情

开源与安全的“冰与火之歌”

作者|何苗    责编|张红月出品|CSDN(ID:CSDNnews)2022开年log4j引发全球信息安全大地震,世界各国政府、非营利基金会、智库都在高度关注开源安全领域:中国信通院成立“开源与安全”部门;OpenSSFGMBrian... 查看详情

求权力的游戏第七季百度云

...视剧。该剧改编自美国作家乔治·R·R·马丁的奇幻小说《冰与火之歌》系列。由戴维·贝尼奥夫、D·B·威斯、艾伦·泰勒等人执导,大卫·贝尼奥夫和D·B·威斯编剧,乔治·马丁担任剧本顾问,彼特·丁拉基、琳娜·海蒂、艾米莉亚... 查看详情

xml的四种写入方式

DOM方式生成XML:<?xmlversion="1.0"encoding="UTF-8"?><bookStore><bookid="1"><name>冰与火之歌</name><author>乔治马丁</author><year>2014</year><price>89</ 查看详情

sax-xml解析

<?xmlversion="1.0"encoding="UTF-8"?><bookstore><bookid="1"><name>冰与火之歌</name><author>乔治马丁</author></book><bookid="2"><name>安徒生童话</name> 查看详情

《恶意》——读后总结

...同一件事分段讲述,从不同人物角度给读者全新的体验。冰与火之歌,其实也是这种手法,故事描述很有立体 查看详情

java解析xml文件(代码片段)

.xml文件,树形结构标准XML文档示例:<?xmlversion="1.0"encoding="UTF-8"?><bookStore><bookid="1"><name>冰与火之歌</name><author>乔治马丁< 查看详情

龙族青铜与火之王的哥哥与路明非的关系

参考技术A路鸣泽和路明非是堂兄弟关系路鸣泽是路明非叔叔的孩子,与其一起就读于仕兰中学。 查看详情

扒完社交网络关系才明白,《权力的游戏》凭什么是神作

...DT君当你看冰火的时候,你在看什么?作为一个《冰与火之歌》的资深迷弟,看到如今的冰火电视“ValarMorghuli,凡人皆有一死。”“没错,但那是‘凡人’。会数据的,都不是凡人。”——恩威科技君当你... 查看详情

权力的游戏第七季哪里可以看啊?在线等,急

...视剧。该剧改编自美国作家乔治·R·R·马丁的奇幻小说《冰与火之歌》系列。由戴维·贝尼奥夫、D·B·威斯、艾伦·泰勒等人执导 查看详情

2阶段——xml解析(代码片段)

...n="1.0"encoding="UTF-8"?><bookstore><bookid="1"><name>冰与火之歌</name><author>乔治马丁</author><year>2014</year><price>89</price></book><bookid="2"><name>安徒生童话</name><year>2004</year&g... 查看详情

java解析xml文件(代码片段)

...;UTF-8"?><bookStore><bookid="1"><name>冰与火之歌</name><author>乔治马丁</author><year>2014</year><price>99</price></book><bookid="2"><name>秦腔</name><author>贾平凹&... 查看详情

魔镜完全是被王后问烦了才给她找点事做不再来烦它吧(豆瓣的经典评论)

这才是我心目中《冰与火之歌》的瑟西皇后啊和黑影里爱娃格林不相上下面瘫女去死,早在暮光里就觉得你演技差了,现在居然还来和塞隆女神比美很喜欢F+MACHINE就是唱breathoflife(此片主题曲~)的那个乐队 今天看了他们behin... 查看详情

a1-2017级算法第一次上机练习赛calvinzh去图书馆

题目描述AlvinZH最近在看《冰与火之歌》系列,这天,他又看完了一本书,于是决定去图书馆再借一本。大家知道,在去图书馆的路上,有一条"扯蛋路"。大概是这个样子的(秀一波拍照技术):AlvinZH从第一块石砖出发,接下来... 查看详情