Zoe 是现代网络的英雄。我第一次从她的书 灵活网页设计 中听说过她,这本书全面而明智地介绍了构建流体宽度网站(以及其他技术,使网站能够利用可变宽度的浏览器窗口)。当时,“媒体查询”还不是什么大事。虽然它是一个不同的概念,但在精神上是相关的。Zoe 在她的新书 Stunning CSS3 中讨论了这一点,以及其他一些 CSS3 技术:基于项目的 CSS 最新指南。
我曾在 ConvergeSE 见过 Zoe 一次,并听过她的演讲。她很懂行!我想我会和她聊聊,了解一下情况。
*Chris: 我知道你最出名的是你的书《灵活网页设计:使用 CSS 创建液体和弹性布局》。对读者来说,这是一本很棒的书,里面有大量的实用建议,而且不害怕说灵活设计能为你做什么,不能为你做什么。那本书才出版了几年。在那个时间里,灵活网页设计的理念有很大改变吗?例如,我仍然经常听到“流体”设计,但很少听到“弹性”,更多的是“响应式”。这些词语有意义吗?它们改变了网页设计的格局吗?还是仅仅是花哨的说法?
Zoe: 我认为自《灵活网页设计》出版以来的两年中,灵活网页设计的整体理念并没有发生太大变化,但它变得越来越重要,而且现在我们有了更多工具来使用,因为 CSS3 有了良好的浏览器支持。自 iPad 发布以来,液体或流体布局一直受到很多关注,因为它们根据用户的视窗大小改变宽度。当有人将他们的 iPad 从纵向旋转到横向时,它们可以适应。它们可以在旧的、小的显示器和大型电视上工作。
我真的很喜欢“响应式网页设计”这个词。与“液体”、“流体”和“弹性”这些仅仅是布局行为的比喻不同,“响应式”暗示了布局提供的益处。它是关于让你的设计响应用户的需求,而不是试图完全、严格地控制设计。但我认为响应式设计是一个大的伞形词——液体和弹性布局是实现它的两种方式,你可以在这些类型的布局中结合使用 CSS3 媒体查询。但你也可以在固定宽度网站上使用媒体查询,在我看来,这仍然是响应式设计。现在有许多方法可以根据用户的设置定制设计,使其尽可能地对用户友好和有吸引力。
我对与液体布局一起使用的媒体查询感到非常兴奋。它们让构建一个网站变得如此容易,这个网站可以在 320 像素的 iPhone 屏幕上一直到 1920×1200 分辨率的显示器上工作。(我不知道为什么有人会想在 1920 像素宽的显示器上浏览网站,但如果他们愿意,你可以选择在没有太多麻烦的情况下为他们提供支持。)
*Chris: 你认为我们应该仅仅依赖 CSS 来实现响应式网页设计吗?处理 1920 像素屏幕和 320 像素屏幕就是一个很好的例子。媒体查询可以帮助我们检测这些尺寸并相应地设计,但这意味着相同的内容被提供给这两个屏幕。难道 320 像素屏幕很可能是在互联网连接速度和处理能力方面要慢得多的设备上吗?因此,让服务器端技术参与进来,提供更轻量级的页面可能是一件好事?或者,让两种设备都获得相同的内容,而且设备之间的能力差距正在缩小,这难道是一件好事吗?
Zoe: 我同意,仅靠媒体查询通常不足以为你所有不同的访客创建最易用的网站。根据网站的不同,你可能确实需要让一些脚本参与进来,以便为不同的设备提供不同的内容或功能。但在一些网站上,我认为将大多数相同的内容和设计元素提供给所有尺寸的用户是合适的。例如,我在我的新书《Stunning CSS3》中使用的媒体查询示例基本上是面包店的宣传网站。像这样的内容简单的网站可能希望他们的移动版网站和桌面版网站具有相同的内容和功能——只是设计不同,以适应空间。因此,使用媒体查询来定制设计,并在需要定制内容和功能时使用其他脚本技术。
*Chris: 你出了一本新书叫《Stunning CSS3》,所以我假设你完全支持在今天的生产网站中使用 CSS3。你如何看待 CSS3 和 JavaScript 重叠的领域?使用 CSS3 并跳过 JavaScript?使用 JavaScript 代替?测试支持并进行回退?有很多方法可以处理它,而且似乎没有多少人对“最佳”方法达成一致。
Zoe: 我要给你一个有点令人恼火的答案:“视情况而定”。但事实确实如此,我认为。有些效果最好用 CSS3 控制,而有些效果最好用 JavaScript 控制。CSS3 中的大部分新增功能都是真正的视觉效果,因此,使用 CSS 而不是 JavaScript 来实现这些效果是最有意义和最有效的。例如,圆角。当然,JavaScript 可以做到,但它不是一种行为——它更有意义地放在 CSS 的领域中。使用 border-radius 来制作圆角非常容易,它只需要下载几字节的 CSS,并且在不支持的浏览器中也能很好地降级。
你当然可以使用 JavaScript 作为许多 CSS3 效果的回退。但同样,你是否应该这样做取决于效果和项目。回到圆角为例,你可以使用 JavaScript 作为 IE 的解决方法,但你可能会因为使用它而导致性能下降,因此对于这样一个小的视觉效果来说,它可能不值得。在我的书中,我谈论了整个过程中的 JavaScript 替代方案,以及非脚本解决方法,并讨论了它们的优缺点。在我认为值得实现解决方法的情况下,我会引导你完成操作步骤。因此,我认为我是这两种方法的支持者(放任不管和提供非 CSS3 回退)。
*Chris: 你有 CSS 的讨厌之处吗?在构建网站时,有没有什么东西让你觉得很头疼,你希望有更好的解决方案?
Zoe: 由于我通常构建液体布局,因此组合不同类型的单位是一件棘手的事情,我经常遇到,比如百分比宽度和基于像素的填充。有很多方法可以解决这个问题,但如果有一种更干净、更简单的解决方案就好了。当 calc() 函数最终可用时,它将非常适合处理这类问题,但这还有很长的路要走!
我讨厌在 CSS 中不得不做的一件事是,将并排元素垂直对齐。比如,使文字标签、表单字段和链接在它们的中间或基线对齐。灵活的盒子布局模型将使这变得很容易,但同样,我们必须等待它。
灵活的盒子布局模型做不到的一件事是我希望它能做到,那就是允许你按比例设置并排盒子的宽度。例如,使一个盒子占据与每个后续盒子两倍的空间,如果添加或删除盒子,每个盒子都会相应调整。有一个普遍且容易理解的误解,认为 box-flex 属性可以让你做到这一点,但根据 W3C 规范,它实际上不是这样工作的,也不是应该这样工作的。因此,目前还没有,也还没有计划,可以用 CSS 来实现比例宽度——至少我还没有找到!
*Chris: 你主要用什么软件来完成 CSS 工作?你使用任何类型的可视化编辑器,还是更喜欢手工编写?你使用任何代码片段/宏/捆绑包吗?还有其他炫酷的工作流程技巧吗?
Zoe: 我使用 Dreamweaver 进行所有 CSS 工作,但我所有代码都是在代码视图中手动编写的。它有很棒的提示功能,我偶尔也会使用它的代码片段功能。您还可以修改其默认的空白 CSS 文件,以包含您想要的任何 CSS 代码片段,这样每次您创建一个新 CSS 文件时,您的起始代码就已经存在了。多年来,我已经创建了自己的标准 CSS 规则集合,我将其添加到几乎每个项目中,因此它在我的默认 CSS 文件中,也保存为一个普通的 CSS 文件,我可以将其添加到我启动的任何新项目中。
我很高兴看到一个专业人士谈论 Dreamweaver。它因为一些没有适当技能和知识的人下载了破解版的 CS 并突然认为自己是专业人士而使用它,而受到如此负面的评价。它本身是一个可靠的工具,尤其是在你考虑 Windows 上的选择时(但我仍然认为 Coda 整体上更胜一筹)。
/endrant
我非常同意 THEDOC 的观点。
我也喜欢 Zoe 指出,只有某些效果最适合 CSS3,而对于其他效果,Javascript 仍然是最有效的。
去年 11 月,我在北卡罗来纳州罗利地区的网络开发者“indieconf”上听到 Zoe 介绍她的新书时,我对我在屏幕上看到的东西印象深刻。一个人可以从一个 iPhone 大小的页面开始,实时扩展到全尺寸显示器,然后又缩小到 iPhone 大小的页面,这种想法在思维上非常超前。我同意,对于某些网站,我们希望在 PDA 上获得与台式机上不同的用户体验。但是,我设计和制作的许多小型企业网站都需要在 PDA 上显示良好,而小型企业主通常没有足够的资金来同时构建一个 iPhone 应用程序。Zoe 在这里制作的东西,并以一本的书的价格提供给我们所有人,是让我们的客户以他们现在可以负担的价格获得所有东西的关键,并在需要时在以后进一步扩展。我非常高兴能成为这本书的拥有者,并将书中多屏幕尺寸选项的图像展示给一组又一组的网络人士。对我来说,这是自 Jeff Zeldman 和网络标准以来最好的新发展!
哇,与 Zoe Gillenwater 的访谈!太棒了!:)
两个月前,我一直在寻找一本专门讲述响应式网页设计的书,我很惊讶地发现 Zoe 的《灵活的网页设计》是唯一一本关于这个主题的书。尽管如此,我还是在阅读了几篇评论后决定购买它,我必须说我并没有失望。相反,我对此书感到非常高兴,所以我决定购买一本她的新书《惊艳的 CSS3》。Zoe,你太棒了!:D
哇,一个很棒的访谈。我一定会去买《惊艳的 CSS3》,Zoe 听起来确实像是她知道自己在说什么。
很棒的访谈。我最喜欢这部分:“我使用 Dreamweaver 进行所有 CSS 工作,但我所有代码都是在代码视图中手动编写的”,因为我也使用 Dreamweaver 进行 CSS 编码 - 当然是在代码视图中!
《灵活的网页设计》是一本非常好的书!我已经阅读了中文版。它给了我很多帮助。
我完全同意,要决定使用 CSS 3 还是 JavaScript 来实现相同的效果或回退,取决于许多情况。当然,我更喜欢 CSS 3 :-)
当我第一次开始做网页设计时,我使用的是 Adobe Dreamweaver。多年来,我越来越讨厌它。现在,如果我在 Windows 机器上工作,我会使用 Notepad++,如果我在 Linux 机器上工作,我会使用 vim(VI 改进版)。虽然我正在慢慢转向 emacs,因为它比 vim 强大得多。