我所说的“样式注入”是指能够在编写样式后立即看到样式变化,而无需手动刷新浏览器窗口。这不是一个全新的概念,我现在之所以提到它,是因为它太棒了,如果你还没有把它纳入工作流程,你应该考虑更新你的工作流程以包含它。
过去
很长一段时间以来,Dreamweaver 都能够显示正在构建内容的实时预览。CSS Edit 也有一样的功能。现在,这项功能已内置到 Espresso 中,我快速浏览了一下,发现它仍然提供预览,但不是分屏可编辑的预览。
但是,它们使用了一些内置的 WebKit 功能来实现,运行的是谁也不知道确切版本的 WebKit。我喜欢在人们使用的浏览器中进行测试。此外,当您进行 CSS 预处理 时,这些方法将无法正常工作。
如果您使用这些编辑器或以这种方式工作,我无意冒犯,只是不适合我。
新风格
我知道的第一个这样的工具是 LiveReload。通过浏览器扩展,当您保存文件时,更改会自动注入。
“LiveReload”这个名字暗示它会为您重新加载页面,当您更改 HTML 或 JavaScript 时确实如此。即使这样也很方便,因为它可以避免您切换应用程序和手动刷新页面。但是,当您更改 CSS(无论是预处理还是未处理)时,样式会“注入”,这意味着它们会生效而无需刷新页面。
我喜欢 CodeKit,它也已经有一段时间了。CodeKit 只能以这种方式与 Safari 和 Chrome 协同工作,但它会自动执行而无需浏览器扩展。
如果您愿意在页面上添加一个脚本标签,LiveReload 可以在 Chrome、Safari、Firefox、Mobile Safari 和 Opera(经过一番调整)中使用。不使用脚本标签,您可以在 Safari、Chrome 和 Firefox 中使用它。
Mixture 也将提供实时更新,但我还没有研究它们是如何实现的。 Yeoman 有刷新功能,但没有注入功能。它是开源的,所以也许有人可以添加它 =)。
为什么样式注入很酷?
因为页面没有刷新,您可以对页面进行样式设置而不会影响其状态。假设您有一个单击后会弹出的对话框,您想对该对话框进行样式设置。当使用一个进行样式注入的应用程序时,您可以将该对话框保留在浏览器中打开,并编写更改它的 CSS 代码,并观察这些更改立即生效,而无需刷新浏览器并丢失该状态。并非所有状态都与 URL 更改相关联。对话框就是一个常见的例子。
以下是一个例子
状态越复杂,它就越有用。想象一下,您试图对一个自定义下拉菜单的悬停效果进行样式设置,该下拉菜单出现在默认情况下关闭的面板中。要为每个微小的样式更改复制该状态,需要很多步骤。
屏幕设置
我喜欢使用 Divvy 快速将我的代码编辑器放到右边,浏览器放到左边,立即开始工作。我已经将 Divvy 设置为只有左右两个区域,没有复杂的网格。

记录
CodePen 也提供边输入边更新的功能,并有一个 实时视图 模式。我认为这非常酷,非常有用,但 CodePen 还没有真正适合您实际的 Web 开发工作流程。
多年来,我一直使用 Firebug 来实现这一目的。当然,它没有将更改保存到源文件中的优势。
我也喜欢使用 Firebug 来完成这种事情,并且已经使用了几年了。但是,在我工作的地方,我们使用的是 Mac(令我非常沮丧),我的一些队友喜欢使用一个名为 Charles 的程序(但我不喜欢)。它会在您进行更改时在浏览器中进行实时更新。我自己不喜欢它,是因为当您打开并运行它时,它不允许电子邮件传递给您。至少在我工作的地方是这样的。我没有与其他使用过这个程序并且在其他地方工作的人谈过,所以我不确定这是 Charles 本身的问题还是仅仅是我工作场所的网络设置问题。
Chrome 开发者工具实际上会对您的更改进行版本控制,并允许您保存它们!不过,您可能已经知道这一点了……
*保存
相关:http://remysharp.com/2012/12/21/my-workflow-never-having-to-leave-devtools/
您错过了更改实时 CSS 样式的最简单/最便宜的方法。如果您在 Firefox 中安装并使用 Chris Pedrick 的出色的 Web Developer 工具栏来打开一个面板,其中包含可编辑的 CSS,您可以修改、冻结以进行页面刷新,并保存到磁盘。我在我工作的每个网站上都使用它。 http://chrispederick.com/work/web-developer/
我也使用过它,但我不确定它现在与预处理器配合使用效果如何,因为页面只是提供 CSS,而不是 SCSS/LESS 或您正在使用的任何东西。
感谢您的文章 Chris,我一直玩 brackets.io,但是直到他们推出预处理版本,我可能会继续寻找。
再为 Firefox 中的 Web Developer 工具栏投一票 - 它太棒了。您甚至可以执行一些操作,例如在鼠标悬停时更改 :hover 的 CSS。能够查看(和玩弄)我遇到的任何网站的 CSS,让我学到了很多东西。
不要忘记优秀的 Mac 应用程序 Codekit,它提供预处理器编译和 CSS 注入。还有 Handlino 的 Compass.app,用于多平台解决方案。
+1 给 codekit。整个预处理器过程变得容易了一百万倍。
好工具!我一直都在使用它。看看 这个拉取请求。
+1 给 compass.app。如果您使用 SASS,它是一个非常好的方法来处理您的文件并实现 LiveReload。 http://compass.handlino.com/
再为 compass app 和 FireSass(用于调试 scss)投一票
另一个有用的扩展 - Stylish。
从几年前开始,我使用一个扩展来重新加载 css,而无需重新加载页面 https://addons.mozilla.org/en-US/firefox/addon/css-reloader/ 你只需要在你的编辑器中编辑你的文件,然后按下“f9”就能看到变化。
我知道它并不特别有用,因为它只适用于 WebKit,但是你可以在 Google Chrome 中编辑 SASS 以进行实时重新加载。因为 Chrome 允许你在网页检查器中保存和编辑 CSS 文件,你只需要启用 SASS 实验就能获得 SASS 的相同功能。
Andy Osmani 在这段 YouTube 视频中解释了它:http://youtu.be/PPXeWjWp-8Y?t=47s
我感觉自己像个白痴,虽然你可以在 Chrome 中编辑 SASS 文件,但它依赖于 Live Reload(或类似的东西)才能让更改在浏览器中显示出来。对此我表示歉意。
这已经是 Firefox 开发工具的内置功能。Firefox 菜单 -> 开发工具 -> 样式编辑器。如果你想创建新的 css 文件,可以直接创建(或者使用已经附加的文件)。直接在框中编辑并保存。
Hammer for Mac 在这方面做得非常棒。
http://hammerformac.com
http://help.hammerformac.com/features/autoreload.html
我刚写了一些 JS 代码,我想改进它,但我还没有回来重新加载你的 CSS。但不知何故,我一直无法让它在 Chrome 中正常运行。几分钟后它就会出现故障。我始终搞不懂是什么原因,但我假设这至少部分与内存处理有关。
v1 只添加了一行带有 href=”cssfile.css?randomNumberForCache 的代码,这样它就会查看新的 css 文件。然后我会删除它(我最初尝试只更改 href,但这会导致 Chrome 闪烁)。它会每隔几秒钟执行一次,我猜想这就是 Chrome 过了一会儿就崩溃的原因。
v2 我计划让它更智能,这样每隔几秒钟的 ajax 就会调用一个 php 脚本,告诉你 css 是否有更改,如果有,则执行上述操作。这样可以减少很多负载,并希望避免 Chrome 崩溃。
如果我有时间,也许我会把代码拿出来再改进一下。
SoFresh
你可以为 github 做贡献。
:)
Mixture 绝对是最好的处理方式 - 它在所有浏览器中都能正常工作(即使是 IE6),无需任何插件,你也可以连接每个测试平台,让它们的狀態完全遵循一个“领导”平台。不幸的是,如果你不使用特定的模板系统(Liquid),它目前是不可用的,这是一个巨大的时间投资。
@tome,
很高兴你喜欢这个刷新,我们正在为它开发一些很酷的更新。
我们选择 Liquid 是因为它只是带有了一些(非常强大的)附加标签的 HTML,学习基础知识并从那里进步非常容易。我很快就会录制一些快速视频教程。
但是,知道你想要使用什么其他模板也很不错。
你也可以使用基本的 HTML,你只需要在 url 中使用扩展名调用它。
还有 Live.js。一个 JS 插件,通过对文件进行持续的 AJAX 请求来检查 HTML、JS 和 CSS 的更改,如果有更改,它会加载新的 CSS。查看:LiveJS
非常有用的工具,我在很多场合都用过它。
这太棒了。
我赞同。最简单的设置,很棒的效果。我已经使用它好几年了。
有人知道是否有支持 LESS 和 Linux 的工具吗?
嗨,Richard,不需要专门的 LESS 支持(因为你将在 css 中编译 LESS/SCSS)。
我在 Linux(ubuntustudio 12.10)上使用 guard、guard-livereload 以及 firefox 和/或 chrome 的 LiveReload 扩展,效果非常好。
你只需要通过终端进入你的 web 项目文件夹,然后执行
guard init
命令,然后执行guard
命令。完成这些操作后,你只需要点击这些扩展提供的唯一按钮,就可以在浏览器中启用 LiveReload 扩展。
它会自动重新加载你 web 项目文件夹中指定相对路径下的所有文件类型(在自动生成的(通过
guard init
命令)名为 Guardfile 的文件中指示,你甚至可以编辑它,如果你想添加其他特定的路径,你希望继续“守护/监视”)。试一试,如果无法正常工作,告诉我。
我不太喜欢 guard,因为它有时会有点问题。而且对我来说,你必须保存两次 .less/.scss 文件才能生效。如果你不需要样式注入,我建议使用 Yeoman 进行实时重新加载。此外,LiveJS 也在上面的评论中提到了,你可以查看一下。
Brackets 编辑器的测试版有一个不错的样式注入功能,虽然它还没有为繁重的工作流程做好准备。
Espresso 确实有分屏。你只需要将它拖出来,它就会变成一个单独的窗口,这样你就可以在第二台显示器上使用它。我最喜欢 Espresso 的地方,也是我仍然使用它的原因:CSS 更改非常快,几乎是即时的。我试过 LiveReload 和其他一些工具,但它们仍然有一点延迟。
Espresso 有两个问题:没有预处理器支持,实时预览基于 Safari,因此不支持新的 Flexbox 或其他新功能。所以,我开始换用其他工具。Chrome 开发工具也开始变得越来越有趣。
我仍然使用 Espresso,这也是我没有切换到其他编辑器(如 ST2)的最大原因。能够在本地或远程编辑和注入样式非常棒。Livereload 对我来说是一个障碍,因为你必须保存才能注入。据开发者说,他正在开发一个扩展来使它与 ST2 一起使用,但那是他提到这一点将近一年前的事了。
我仍然在寻找/希望有一个工具,它本质上与 Espresso 一样,但适用于 ST2。对我来说,关键是能够在本地和远程工作。
我试过 Divvy,但最终使用了 Moom - http://manytricks.com/moom/
Brackets.io 也很有用!
CodePen 还没有真正用于你的实际 web 开发工作流程。如果可以的话那就太好了!
我已经使用 Firebug 很久了!
如何让它将更改保存到源文件?有人知道吗?如果只有保存部分可以实现 - 它将完美适合我的工作流程。
我实际上安装了一个名为 Acebug 的 Firebug 插件,它使用颜色语法和主题来增强编辑器,但它也允许你保存 CSS 文件;)
一如既往的好文章。
我个人非常喜欢 Sublime Text 2 和 Livereload 的配合方式。我今年夏天写了一篇关于它们的 评论。
供你参考,我使用 Spectale 来完美地分割我的屏幕。免费的 Mac 应用,运行良好,但鲜为人知。
我使用这个 Chrome 插件来重新加载 css https://chrome.google.com/webstore/detail/css-auto-reload/fiikhcfekfejbleebdkkjjgalkcgjoip 好处是它只重新加载 css,不重新加载 html,也不会改变你所在的页面位置。我也试过 Live reload,但对我来说,这个更好。
使用预处理器(用 SCSS 编写),CodeKit/Compass 的解决方案为处理源文件的实时更新提供了简化的流程。我不明白为什么许多人建议使用 Firebug 作为解决方案。我使用 Sublime Text 编辑 CSS,而不是 Firebug。
感谢您对 Divvy 的认可。这将非常非常有用。
Adobe 有一个很棒的工具叫 Brackets。它也具有此功能。
自从 Firefox 推出 Web 开发者工具以来,我认为我没有做过任何非“注入式”的 CSS 编辑。每次想要查看更改时都要保存文件并重新加载浏览器,这种想法对我来说听起来非常痛苦。这也是我远离预处理器的主要原因之一。你可能写的代码更少,但样式注入节省的时间非常多。
很棒的文章。我也使用这种方式(Chrome + Sublime Text 2 + 实时重新加载)。但我使用 Moom 而不是你的 Divvy。
PhpStorm 和 WebStorm 也通过 Chrome 扩展提供实时 CSS 注入。它不像 Espresso 那样快速,但它具有许多其他有用的功能。一个好处是,如果预览(即 Chrome)崩溃,它不会导致编辑器崩溃。
http://blog.jetbrains.com/webide/2012/08/liveedit-plugin-features-in-detail/
test
我不是要唠叨,但开发人员一直都在 Firefox 和 Chrome 中这样做吗?在开发工具中即时编辑?当然,我理解这篇文章的价值,因为有些人确实可能在以更困难的方式做事。样式注入是一个巨大的时间节省器,当你需要在应用程序环境中编辑嵌套的/特定的页面时,刷新页面会很快降低你的效率。对我来说,Divvy 应用程序很酷,但如果你是一个前端开发人员,你应该真的至少使用两台显示器来提高效率。(如果你的公司条件允许,我实际上建议使用三台显示器)。
总而言之,这篇文章的方向很重要,并且希望看到更深入的后续文章,其中包含更多/更好的解决方案。我知道对我来说,Chrome 开发工具已经证明了它的价值。
是的,我喜欢 SoFresh,它也具有相同的功能:http://sofresh.redpik.net/
很棒的讨论。机缘巧合,我偶然发现了 tin.cr,它是一个能够完成这篇文章讨论的许多功能的工具。它可能是一个可行的替代方案吗?
该网站声称它具有以下功能:
– 实时重新加载
– 从 Chrome 开发者工具保存更改
– 跨平台(因为它全部在 Chrome 中运行)
我还没有机会自己尝试,但我计划尽快尝试。
网站
http://tin.cr/
干杯
很棒的文章,谢谢!
我真的很着迷于您分享的所有好东西。我正在尝试使用 Espresso,到目前为止我真的很高兴。它确实物超所值,让我节省了很多时间。谢谢!
这看起来很酷,我以前从未使用过,我总是刷新我的浏览器,如果我可以直接在屏幕上看到我所做的更改,它将节省我大量的时间:)
我一直在使用 Sublime Text 2 的 LiveReload 插件以及 Chrome 的配套扩展。但是,我最近决定尝试用 Yeoman 为一个新项目。我只是根据自己的需求稍微调整了快速启动生成器。到目前为止,它运行得非常完美。至少对于快速原型设计,我认为它会成为我工作流程中一个永久的组成部分,特别是当我开始学习它所构建的 JavaScript MV* 框架设计时。我建议您尝试一下。
我爱 Divvy!当我切换到 OSX 时,我失去了 Windows 的窗口快照功能,Divvy 填补了这个空白,甚至做得更多。它有时也会出现烦人的弹窗(就像 ST2 一样),所以你没有必要购买,但它太棒了,所以我还是买了(大约 10 美元)。
我的设置是使用 grunt 作为我的构建系统,以及 实时重新加载 任务。我有两台桌面电脑,一台装有 ST2 和终端,另一台装有 Chrome 和 Inspector(非常适合进行响应式设计),并将其停靠在右边。使用 grunt 的 watch 任务,我的 LESS 代码在更改时会被处理,并且输出的 CSS 更改会自动传递到浏览器。
当你完成设置后,这是一个非常棒的工作流程(实际上,这并不需要太大的努力,只是第一次设置起来有点让人望而生畏)。
天哪!我真希望我早点尝试这个!我一直把 LiveReload 当作要尝试的东西,但我一直没有去尝试。感谢您提供有关实时注入的信息,这条信息促使我尝试了它,我立刻发现我永远不想回到没有它的工作流程了。我喜欢你可以设置它来监视网站根目录下的文件夹,它就会自动运行。它甚至可以毫无问题地重新加载包含 .cshtml 扩展名的 ASP.Net MVC 布局文件(我之前没有想到这一点)。
一个比 Divvy 更好的(免费)替代方案是不可思议的 Spectacle 应用程序,它像 Windows 7 的智能窗口管理一样工作。此外,它与 OS 和 OS = <3'z 相兼容。
我使用 Adobe Brackets,它内置了样式注入功能。它目前只支持 Google Chrome,但它一直在不断改进。使用过样式注入后,你永远不会再想回到没有它的工作流程了。
我一直在使用名为 CSS Refresh 的 .js 插件。只需将其放入你的 .js 文件夹中,在你的页眉中链接它,你就可以使用它了。你的移动设备实际上会在你眼前更新,而无需刷新。这可能只适合开发阶段使用。
我知道已经过去了好几个月了,但我很好奇是否有人找到了一个好的方法来实现这一点。我还没有放弃 CSSEdit,因为我觉得实时预览和代码补全使编写 CSS 比编写 SASS 速度更快。但我正在承受一些压力,开始使用 SASS,并且想知道现在是否有一个好的方法来使用 SASS 并获得实时预览。
Molly,我感觉和你一样。我已经使用 SASS 大约 6 个月了,但工作流程感觉不像我使用 Espresso 进行实时编辑时那样自然。而且,由于我在工作中直接在服务器上工作,而不是本地工作,所以实际上无法模拟我所发现的这种实时编辑感觉。
可能有点晚了,但请查看 grunt-style-injector。非常棒。它使用
Socket.io
并且与平台/编译器无关;它只是查找最终的(CSS)文件并进行软注入。我发现它非常棒,因为它从不会导致重新加载失败,并且从不会在部分编译的 CSS 上进行错误的重新加载(我发现 Livereload 经常这样做)。我刚刚在我的博客上发布了一篇关于它的帖子 这里。