有时,最简单的小事可以让你在以后避免巨大的头痛。我在这里说的是,当你对 CSS 文件进行更改,几天后才发现它破坏了你网站的一部分,而当时你没有注意到。这可能是非常明显的。你记得你做了什么,可以跳回去修复它。但如果你那天做了很多更改,或者你 просто не помнишь?
当我在 CSS 文件中进行修补时,我喜欢留下一些更改的指示。有时,这可能意味着一个大型的系统,比如 Subversion,或者在你开始进行更改之前进行完整的网站备份。如果你觉得你即将进行的操作不需要这么大的步骤(我希望你始终进行备份!),你可以尝试一些“更小的”技术来跟踪这些更改。
正如你从这篇文章的标题中猜到的那样,其中一项小技巧就是简单地缩进你 CSS 中的新行或更改的行。例如
#sidebar ul li a {
display: block;
background-color: #ccc;
border-bottom: 1px solid #999;
margin: 3px 0 3px 0;
padding: 3px;
}
在这个例子中,你可能试图改变侧边栏中链接的外观。为了查看效果,你给每个链接添加了一些填充和底部边框,以帮助它们分开并从视觉上让它们呼吸一点。你保存了更改,然后查看你的网站,bellissimo!太美了!你继续你的快乐时光,直到三天后你收到一封电子邮件
“嘿,Chris,你应该看看你的联系页面,有些东西坏了 =P”
-爱你的,妈妈
哎呀。看来在你进行最后一轮更改时,你忘记了查看网站上的所有地方,以确保一切都按计划进行。现在有些东西坏了……但究竟是什么更改导致了这个问题?这就是你的缩进行派上用场的地方。快速浏览你的 CSS 文件,你应该就能看到你上次做出的所有更改,然后找到有问题的行。
扩展想法
仅仅缩进是一个非常简单的解决方案,但也有一些明显的问题。例如,缩进的行是全新的,还是只是该行发生了更改?如果发生了更改,是从什么更改而来?你什么时候“取消缩进”该行?
这些问题的答案取决于你。仅仅缩进可能对你来说就足够了。如果你的 CSS 文件非常庞大,你不信任自己能够记住你做了什么,或者你只是那种“宁可错杀一千,不可放过一个”类型的人,你可能需要更深入地扩展这个想法。
#sidebar ul li a {
display: block;
background-color: #ccc;
border-bottom: 1px solid #999; /* ADDED Apr. 9, 2008 */
margin: 3px 0 3px 0;
padding: 3px; /* CHANGED Feb. 14, 2008 (Prev. 1px) */
}
那么,你们怎么看?你们是怎么处理这种情况的?
源代码管理。尝试使用 Subversion。
哦。太快了,但这主意不好。一点也不好。
这是一个有趣的想法,Chris,我可以看到能够快速查看我何时进行更改的好处,绝对如此。
不过,我对此有一个问题,那就是所有额外的空白和注释,以及它们对页面加载速度的影响,考虑到样式表是第一个读取的文件。但我相信影响不会很大,对吧?
我认为可以有一个“实时”版本和一个开发版本,后者记录这些更改,前者看起来正常。
Alex
你很快就会遇到 5 级缩进和奇幻、史诗般的描述。使用源代码版本控制,绝对如此。
你可以使用 Mac 上的 CSSEdit。它使你能够设置 CSS 文件的里程碑/备份,这样你就可以在以后的时间点恢复它们。
我使用缩进表示子标记等,所以如果出现额外的缩进,就会有一些混乱,它是一个子标记,还是最近发生了更改。
另一个问题是,当你进行新的更改时,你是删除旧的缩进,还是会留下一堆缩进,使页面变得凌乱。你多久删除一次缩进?
第二个想法好得多,因为你可以看到它是一个更改,但实际上你并不需要缩进。唯一的问题是,如果有很多更改,它会变得凌乱,更难阅读,并且会增加加载时间。(尽管随着速度的提升,这些时间可能微不足道)
这篇文章确实让我思考了这个想法,让我觉得某种记录是个好主意。
将来,我可能会在完全单独的文件中记录更改作为参考,该文件不会上传,只存储在我的 PC 上。它可能只是一个 .txt 文件。
感谢你的想法!
我曾经与一些人在他们的 C++ 源代码中注释并注明每个更改的日期。 (这种做法始于没有使用源代码控制的旧时代,并持续了一段时间。)随着时间的推移,这些注释给代码带来了混乱,因为没有人会删除它们。大多数代码阅读者并不关心代码历史中做出的每个更改。项目越大,就越有意义地让源代码控制来做它的事情。
在更小的规模上,这种策略可能会有所帮助,但使用源代码控制的复杂度阈值比许多人认为的要低。即使是一个人的任务也可以从源代码控制工具中获益。
顺便说一句,我正在 IE7 上查看它,代码中的缩进没有显示出来。在 Google Reader 中看起来正确。
这篇文章做得很好。在 PHP、Javascript 和所有其他语言中,注释很重要——为什么 CSS 不行?
我总是对 CSS 文件进行注释。不是用日期或其他东西,而是用之前的 value。如果我更改 margin 或 padding,我会添加一个带有之前 value 的注释。
这根本不是个好主意!你最好开始使用版本控制软件 (例如 Subversion)。它适用于任何文件类型,更安全,可以为你 (对于文本文件) 提供所有修改的逐行比较。你还可以恢复旧版本,以及更多更多!
而且最好的?它是免费的!
这实际上非常巧妙,我从未想过要缩进更改。我认为我不会走那么远去注释它们,并且我同意其他评论中的一点,最终你的 CSS 会变得非常凌乱。但缩进很简单,也很有效。
我通常不会遇到这种问题 (至少现在不会),因为在大多数情况下,我知道问题所在,但我可能会开始注释我新添加的行或更改的行,感谢你的建议。:)。
我非常赞成注释代码。它非常有用。但 SVN 应该用于所有内容。我不确定你说的大规模是什么意思。SVN 非常适合所有内容……大小皆宜…….
我认为这篇文章最棒的部分是你的妈妈知道并使用“borked”这个词。
@david walsh
对于实时文件,注释是浪费空间,它们会使你的文件比应该的更大:),
我总是用 SVN 维护我的文件的两个版本,一个是带注释的 (开发文件),一个是未注释的、干净的公共文件。如果我删除注释,通常每个文件可以节省高达 20kb 的空间。
这让人想起过去的日子;一位在汇编语言中工作的同事同时拥有一个带注释和一个不带注释的源代码文件,其中列出了他所有的变量。为了构建程序,必须存在一组特定的源代码文件,而带注释的版本与 8 英寸软盘上的所有其他文件都不兼容!
对不起,这真是个愚蠢的想法。版本控制是您需要的答案。缩进应该用于可视化代码的结构,以与代码当前范围一致的方式,而不是以您上次编辑时的任意级别进行。Subversion 或类似工具将使您能够轻松地比较两个版本之间的更改,并轻松地帮助您撤消操作。学习它,使用它,您将不需要像这样的黑客技术。
版本控制。真的。您从它那里得到了什么?您在提交更改时输入了实际的更改注释。您拥有 diff 功能,可以立即显示同一文件的两个版本之间的差异。
很多评论都这样,我同意这些观点。过度缩进?很快你就会因为太多缩进而迷路。如果您曾经考虑过团队合作,它绝对不适合。
我碰巧非常喜欢这个想法。我使用了类似的东西,但它都是基于注释的。缩进是一个非常好的主意。
我会用同样的方式做。
我甚至会进一步缩进“高风险”行——以便更快地找到它们。
哦,一群愚蠢的人!!!
在文件中添加注释或缩进不会产生大量额外的文件大小。大多数详细的 CSS 样式表只有 5-6 kb,如果它们更大,您需要学习如何正确编写代码。
我认为这是一个好主意。它比添加注释更好,代码更少,大小更小。
如果您正在处理自己的代码并且不介意清理,那么这并不是一个坏主意。如果您正在与团队/专业环境合作,那么整洁和版本控制可能更有意义。我想,如果它不适用于您,您就已经知道了。我个人不会使用缩进,例如,因为我们的团队使用它来表示后代选择器,而随机缩进会让我们感到困惑。
@Jermayn - 嗯,我查看了您的博客,您似乎没有资格称这里任何人为“愚蠢”。我建议您学习如何进行建设性批评。
我最近开始在我的 CSS 文件中对任何更改的先前值进行注释,直到我开始阅读这里的评论,我才意识到这可能不是最明智的做法。当然,我目前正在进行的项目(我乐队的网站的 Ajax 重构)仍在开发中,因此我可能会继续做我正在做的事情,然后在我准备好发布时进行清理。或者我可以查看 Subversion。感谢大家让我大开眼界!