Lea 是一位来自希腊的前端网页开发者。您可能听说过她,因为自从她开始用英语 写博客(下面将详细介绍)以来,她的知名度就迅速提高。或者您可能见过她的一些作品。她创建了许多 单页网站,这些网站要么展示了 CSS 的惊人功能,要么帮助您完成一项困难/繁琐的任务。
我问了 Lea 一些关于她作品的批判性反应、希腊的社区、CSS 的未来等等方面的问题。
*Chris:我认为您用 图案库 证明了 CSS3 渐变可以做的不仅仅是制作 3D 风格的按钮。您在哪些现实世界的设计场景中使用过渐变来完成任务?
Lea:首先想到的是这些:
- 在我的博客上,您可以看到一侧是桃红色的条纹,另一侧是白色。实际上,渐变不仅用于桃红色的条纹,还用于用白色覆盖另一侧。我在 -prefix-free 的首页使用了相同的技巧。
- 在 cubic-bezier.com 上,指南是用 CSS 渐变制作的。
- 在 CSS.coloratum 上,我在颜色的后面使用了用渐变制作的黑色和白色条纹,这在颜色半透明时很有帮助(当颜色为纯色时,它根本不会显示)。
- 在 Michaelia 酒店的网站 上,用于圆圈中的孔以及 预订页面 上的左下角对角线。
当然,在更多需要渐变的情况下,我也使用了 CSS 渐变。但我想你并没有问这个 :)
*Chris:您最近编写了 -prefix-free,这是一个 JavaScript CSS 处理器,它会自动添加 CSS 属性所需的供应商前缀,以使其在用户使用的任何浏览器中都能正常工作。您对此收到了极端混合的反应。反对者可能会谈论“未添加 CSS3 内容的闪现”或笼统地说 JavaScript 不适合这种事情。您能概括一下最常见的投诉并发表您的看法吗?
Lea:“极端混合的反应”确实如此!人们要么非常喜欢它,要么非常讨厌它。幸运的是,前一类人比后一类人多得多。第二类人最常见的投诉是:
“它会导致 FOUC(未添加 CSS3 内容的闪现)”
我的回答:如果您将 -prefix-free 放在样式表之后,FOUC 会非常小,以至于没有人会注意到,除非他们在寻找它。普通用户不会像我们这样去寻找 FOUC。我们可能会认为“它非常快,但我设法注意到一个 FOUC,哈哈!”,但用户甚至不会想到参与愚蠢的“发现 FOUC”游戏。如果持续时间过长或差异过大,他们会注意到它。例如,常规的 FOUC(未设置样式内容的闪现)更容易注意到,因为页面完全没有样式。-prefix-free 的 FOUC 只是在很短的一段时间内缺少一些 CSS3。
“它使样式依赖于 JavaScript”
我的回答:如果 JavaScript 不可用(< 2% 的访问者),则唯一缺少的样式将是一些 CSS3 功能(随着时间的推移和供应商删除前缀,这种情况越来越少)。如果您在设计页面时考虑了优雅降级,即使没有任何 CSS3,它也应该可以正常工作并看起来不错。如果您没有这样做,您将遇到比这更大的问题。“这在服务器端做得更好。只需执行一次,而不是在每次页面加载时执行。”
我的回答:-prefix-free 做的事情在服务器端是不可能做到的。-prefix-free 检测哪些功能需要前缀,并且仅在需要时添加它。此外,它会自动检测哪些需要前缀的属性可用。它不必保留需要为哪些功能添加哪些前缀的列表,所有内容都会进行功能检测,因此非常具有未来证明性。使用预处理器,需要维护关于此类内容的列表。此类列表注定是不完整的,并且很快就会过时。我尝试过的每个服务器端前缀器都会在某些情况下失败。
例如,考虑一下 CSS 动画。一开始,只有 Webkit。然后 Firefox 实现了它们,我们不得不回去添加 -moz- 版本。现在 IE 也刚刚实现了它们,所以一切都必须更改并包含 -ms- 前缀。很快,Opera 将实现 CSS 动画。我们真的要第三次回头添加 @-o-keyframes 吗?可能不会。大多数人只会开始编造关于 Opera 的市场份额很低以及他们不需要费心的借口。-prefix-free 在此类情况下非常有用,因为您永远不需要回头更改任何内容。当 Opera 实现 CSS 动画时,它们在 Opera 中也能正常工作,甚至不需要更新 -prefix-free。
“但是,如果您确实需要供应商前缀因为实现存在错误怎么办?”
我的回答:-prefix-free 不会更改已添加前缀的内容,因此,如果您需要为特定引擎指定不同的内容,您可以将已添加前缀的内容与未添加前缀的内容一起使用。-prefix-free 还会在根元素中添加一个包含当前前缀的类,以提供更大的灵活性。
*Chris:您现在住在希腊。也许只是我的看法,但希腊似乎并不是进步的网络技术的温床。或者我错了?显然,这并没有阻止它培养出像您这样的世界级开发者。对于您能取得的成就,位置还有多大关系?
Lea:你一点也没错,Chris,希腊距离成为进步的网络技术的温床还差得很远。您可能会惊讶地发现,我在希腊几乎没有得到任何认可。我甚至还有一个希腊黑粉!(尽管他住在布鲁塞尔,而不是希腊)
当我第一次开始写博客时,我开始用希腊语发布我的研究成果。没有人太关注。几个月后,我决定试试我的英语博客,好吧,我们都知道结果如何 :)
我认为这是因为大多数希腊开发者都想要一个可以在每个浏览器中都能快速使用的解决方案,将其应用于他们当前的项目并继续前进。他们没有时间思考研究和酷炫的新事物,他们仍在努力使事情正常运作。因此,即使他们会认可帮助简化其日常开发工作的项目和人员,他们也不会太关心实验性内容。希腊人也很重年龄歧视,除非你有很多“工作经验”,否则他们甚至不会听你说什么。年轻人在这里通常会被轻视,如果你不够强大,你实际上可能会相信自己什么也做不了,直到你四十多岁。幸运的是,在我们这个领域,位置关系不大,至少就国家而言是这样。如果您想拥有国际受众,您只需在您在网上做的所有事情中都使用英语,就这么简单。
但是,我计划在几个月后搬出希腊,希望是去美国。即使我是希腊人,希腊也从未真正让我感到像家一样。当我不在这里的时候,我快乐得多。最近的电影《猩球崛起》中有一句台词,我发现它非常感人,正是因为这个原因。在凯撒与其他猿猴相处了一段时间后,再次遇到了他的养父,他拒绝回家,而是告诉他“凯撒回家了”。有时,你所属的地方(“家”)不是你成长的地方或你亲人所在的地方。它是你很容易找到与你相似的人并真正“理解”你的人的地方。
*Chris:多年来,设计师一直通过创建“纯 CSS”的复杂图像来扩展 CSS 的能力。一方面,通常很巧妙且令人印象深刻。另一方面,通常不切实际且无意义。一年半前,您 指出了这一点 并引用 SVG 作为更好的替代方案。您认为为什么设计师没有更多地尝试使用 SVG?一年半后,它仍然是更好的选择吗?
Lea:是的,我仍然认为 SVG 是更好的选择。它是为此目的而创建的,并且它允许做的事情比 CSS3 还要多。但是,它仍然没有获得应有的采用,我主要将其归因于以下原因:
- 语法复杂。 SVG 允许我们做一些疯狂的事情,但大多数时候伴随着同样疯狂和复杂的语法。一旦你理解了每个功能是如何工作的,它就说得通了,但学习曲线非常陡峭。尤其是在没有调试工具帮助你理解哪里出错,以及关于浏览器支持的信息非常少的情况下,你可能会卡住,想知道是自己误解了什么还是根本不支持。
- 资源不足。 这有点像先有鸡还是先有蛋的问题。如果参与 SVG 开发的人不够多,就不会有足够多的人编写教程,因此不会有足够多的人受到启发学习 SVG。现有的少量资源要么是针对初学者的非常简单的示例,要么是与应用工作没有太大关联的学术内容(而且两者通常都很丑,把设计师吓跑了)。
- 规范难以理解。 虽然 CSS 和 HTML 规范在大多数情况下都比较容易理解,但 SVG 规范的很大一部分需要大学级别的计算机图形学和线性代数知识。即使你拥有这种知识,它仍然很难。鉴于上面提到的缺乏良好的 SVG 资源,这对 SVG 的采用造成了比看起来更大的伤害。
- 懒惰。 人们喜欢熟悉的东西,他们已经知道的东西。如果他们可以避免学习新事物,大多数人都会这么做。
- 浏览器支持问题。 SVG 带来了自己的一套浏览器错误,其中大部分的文档记录都远不如 CSS 和 HTML 错误。这也是一个先有鸡还是先有蛋的问题:开发人员使用某种技术的越多,其错误的优先级就越高。目前有一些SVG 错误已经存在多年未解决,因为使用它的人不够多。
但是我认为 SVG 拥有巨大的未开发潜力,尤其是在我们现在可以将其嵌入 HTML5 文档的情况下。它隐藏在那里,等待被发现。我们只需要更多有创意的人开始尝试它。
*Chris:你的 CSS 愿望是什么?一些你经常希望用 CSS 实现但无法实现的事情。也许是一个浏览器支持非常有限的现有功能,或者一些完全超出当前规范和规范讨论范围的东西。
Lea:我最喜欢的 CSS3 功能,但目前实现还不够多的是 CSS3 对 attr()
的泛化。在 CSS2.1 中,我们可以在 content 属性中使用 attr()
,在生成的內容中使用属性值。在 CSS3 中,我们应该能够在每个属性中使用 attr()
,这将大大减少表示性的 JavaScript 代码。不幸的是,只有 IE9 支持它,而且还不完全。如果开发人员意识到它简化了多少用例并开始推动浏览器供应商支持它就好了!
但我也有很多尚未存在的 CSS 功能愿望清单
- 对
currentColor
的泛化:一个current()
函数,它可以接受任何属性(currentColor
将成为current(color)
的别名)。 inherit
关键字变成一个函数,它可以接受一个参数来指定向上嵌套多少层。inherit
将成为inherit(1)
的别名。- 能够在任何地方使用颜色关键字
invert
,而不仅仅是在轮廓中。 - 能够在选择器中使用
attr()
和counter()
。 - 锥形渐变,希望在 CSS4 中出现。
- 对角线角,具有可调节的角度和大小(示例)
以及许多其他功能。在 CSS 方面,我是一个梦想家 :)
很棒的采访。感谢 Chris 和 Lea 分享!这进一步促使我去了解 -prefix-free。
我必须说,我非常喜欢阅读这篇对 Lea 的采访。我多次受到她惊人作品的启发,继续努力!
谢谢!
做得好。在过去的几个月里,我一直关注着 Lea 的推特,并且关注 CSS-Tricks 网站的时间更长。你们两位都让我成为了自己工作的粉丝,这是一个了不起的礼物。我认为每个人都会忘记这一切有多有趣。感谢分享!
很棒的采访!另外,这可能有点令人毛骨悚然……但她真的很漂亮。
很遗憾 Lea 在自己的祖国没有归属感。我希望有一天,在不远的将来,她能够对希腊有更多好感。也许是经济环境导致了这种情况。
关于 CSS,要掌握的内容实在太多了。再加上 HTML5 和 JavaScript 的发展,以及其他语言(如 PHP),任何开发者都有很多工作要做。
非常感谢向他人学习——比如 Lea,她抽出时间进行实验、记录,并且重要的是分享。
谢谢
我完全同意关于 SVG 的说法。我认为 Raphael.js 是一个实现良好跨浏览器 SVG 图形的好工具,可以与之交互并进行动画处理,但它确实有一个相当陡峭的学习曲线。能够在 Illustrator 中将矢量对象导出为 SVG 很好,但然后你该怎么办?我最近在一个大学项目中使用了 SVG。我们有一张美国地图,学生可以根据自己的出身地深入了解负责其地区的招生顾问。我们选择 SVG 仅仅是因为它比处理图像映射更容易。但 IE 不支持 SVG,而是使用专有的 VML。 Raphael.js 会自动为你转换它,但我们的时间太紧了,无法将所有内容从 SVG 转换为 Raphael 代码。相反,我们使用了一个名为 SVG Web 的 JS 插件,它将页面上的 SVG 转换为 Flash 以支持 IE。它很容易使用,并且非常适合我们的目的。因此,如果您愿意挖掘一下,就会有很多选择。
嘿,Ryan,
你是将 SVG Web 与 Raphael.js 结合使用还是将其作为替代方案?
谢谢,
Pat
很棒的答案!喜欢“人猿星球”的参考!
+1 @John Gilmore
我喜欢 Lea 新颖的想法,并希望她永远不会失去她的创造力和对实验的兴趣。
不过,作为一个希腊人,我对她说的话感到有点难过。所以我想代表希腊的开发者和设计师弥补这一点
整个网络创意社区中,只有很少一部分人是原创创新者,并且对互联网技术有很好的理解。知道在 CSS 博客中这听起来会多么有争议,你必须承认 CSS 只是网络的一部分,因此,真正能够欣赏 CSS 天才作品的人就更少了。与此同时,有很多人仅仅因为大众情绪而追随他人。尤其是在设计师群体中,通常有一些人进行创新,而数千人只是欢呼和模仿。我的意思是,Lea 和其他天才人士应该重视其他同样天才人士的赞扬,并忽略其他人的欢呼。否则,他们只是将自己的自负置于傲慢的道路上。现在,希腊是一个小国,拥有能够欣赏她作品的天才人士的比例很小。我认识不少,所以他们确实存在。所以,Lea 不要做你指责他人对你做的事情:除非你有了深刻的理解,否则不要如此严厉地评判他人。
我之前的评论本应是对此的回复,我想我忘记点击回复了。该死。
Alex,我说的是“大多数”。当然也有例外,我心中有几个。从你所说的“一小部分”来看,我认为你并不太不同意关于大多数人的这种看法。
在获得……拥有糟糕观点的……特权之前,我不确定有什么需要深刻理解的。希腊人?我一生都生活在希腊,我不确定我的理解还能更深入多少。
我也不知道为什么不理会人们的好评,除非它们“独具匠心”,就会让你走上傲慢的道路。我认为恰恰相反。这里不想火上浇油,但傲慢似乎是希腊人最喜欢的侮辱词。在大多数希腊人看来,任何不认为自己一无是处的人都是傲慢的。自从我在业界开始小有名气以来,我收到了很多来自希腊人的批评,说我傲慢,自负。奇怪的是,非希腊人似乎持有完全相反的观点。我有很多关于为什么会这样发生的理论,但这条评论已经太长了。
嗨,Lea,
这种傲慢和咄咄逼人的态度在巴尔干地区很常见。我来自保加利亚,但在美国生活了很多年,我理解你的想法。我相信这种敌意正在拖累我们。当然,也有例外,但巴尔干地区的大多数人都在很大程度上表现出上述行为。
很棒的采访。 :)
我真的很喜欢挑战自己,尽可能少地在页面上使用图像和 JavaScript,而 Lea 网站上的那些 CSS3 工具非常棒。
我完全打算在我的最终实现中也开始使用 Prefix Free,以确保它们始终保持领先地位。
我正在重新制作我学校的网站 (tannernelson.me/ehs),我计划实现更多的 CSS3 内容,所以这很有启发意义。
谢谢!
很高兴看到极客、漂亮的女孩子在网络发展的世界里做一些有意义的事情!继续努力,姑娘!
也就是说,如果你在希腊感觉不自在,也许可以去其他地方试试运气? :)
这就是计划 :)
感谢你的赞美 :)
有趣的采访。很好,Lea 直言不讳。+1
就像我之前说的,Lea 是我真的很想亲自见一面的人,因为她真的对网络了解很多,而且非常善良。感谢 Chris,进行了这次很棒且鼓舞人心的采访,它让我学到了很多!
谢谢 Marco!
顺便问一下,我在荷兰参加了 Fronteers,我们怎么没见面?
我真的很想去那里,但不幸的是,那天恰好是我们正在开发的产品的一个非常重要的截止日期/发布日期。希望下次能见到你!
哇,我不确定这叫什么,当你自己的国家不太受欢迎时,与之撇清关系,也许是势利?有人帮我找找这个词……
我 *必须* 喜欢它,因为它不太受欢迎?哈哈,小众国家,从没想过这样 :P
哇,非常令人兴奋的东西,感谢你所有的努力和分享成果!
很棒的采访——能够听到推动网页构建边界的人的想法真是太好了。感谢分享!
Lea,当你谈到希腊时,我感同身受!希望你很快能找到新的“家” :P
嗨,各位极客!
我是来自希腊的 Dimitris。我承认我以前从未听说过 Lea,但从 Chris Coyier 那里听说后,我一定会关注她的。
到目前为止,我认为 Lea 的态度没有问题。相反,是希腊人那种“你成功了,我讨厌你”的态度把我们拖入了困境。
在希腊,我们有一句话很好地概括了普遍的行为:希腊吃掉自己的孩子,意思是当你试图与众不同时,其他人都会试图把你拉下去。这是事实,我曾经有过类似的经历几次,但我就不再详述了。
无论如何,我很高兴看到一个有趣的希腊人。这给了我继续前进的力量。
哦,是的,我也想离开这个国家。
Dimitris
PS:抱歉,我的英语不太好。
嗨,Dimitri!
感谢你的支持。
PS:我可能不是合适的人选,但你的英语在我看来完美无缺 :)
很棒的文章!
Lea,有一天来澳大利亚吧!不确定你之前是否来过,但我希望有一天能在 Webdirections South 见到你。 :)
我明年八月要去新西兰。不是澳大利亚,但比我其他所有的演讲都要近得多 :)
非常棒的采访!我一直希望两位最大的 CSS 支持者能够一起进行一次采访……现在就等着一个合作项目,我相信它将凭借其纯粹的 CSS 强大功能震撼宇宙!:D
你好,Lea
我来自哥伦比亚,一个位于南美洲的国家,你的工作看起来很棒,我想能够更密切地关注你,从你那里学到更多,并在我的自学过程中更好地指导自己。
拥抱
(@JaoPi)
PS:抱歉,我的英语不太好。
好的采访。我想了解 CSS。
Lea 说得很好.. 首先我想告诉你,我钦佩你的工作。我使用过你的作品,学习过你的作品,我真心相信你是一位很棒的开发者。如果离开希腊能让你快乐,你就应该去做!
访谈记录不错。感谢你的辛勤工作。这对许多渴望学习更多关于 CSS 的人很有帮助。