-1

我正在制作一个网站,使用:MODx、SASS、Bourbon & Neat、jQuery、Bootstrap、Velocity 和其他一些小型库。使用的IDE是PhpStorm,所有文件都是utf-8编码,没有BOM;它还包括来自 3rd 方资源的搜索表单,其中一些放置在 iframe 中,有些是“本地”的,具有标准的 html 表单。所以,命名地狱快到了,我还没有建立任何标准化的 CSS 命名约定,如 BEM、SMACSS 等,只是一些常见的良好 CSS 建议(低嵌套级别、精细语义、无处不在的 .class 选择器)

我将搬到BEM并寻找一个命名空间,但我不想坚持下去,因为这是我的第一个 BEM CSS 项目,我不能 100% 确定我会表现良好关于它的一切,我害怕在进行任何全球操作时破坏某些东西(重命名,也许是别的东西)。所以,我想使用非标准符号组合,比如☺☻或♥♦♣♠或其他。这应该是 100%不是来自第 3 方的任何项目库都很忙。之后,我可以使用例如 Grunt regexp 或自定义后处理应用程序,将这些字符替换为正常的命名空间名称,或者根本没有命名空间(很好,小红利)。我不会让这些符号保留在生产代码中。Apache、PHP、SASS 解析器和浏览器将收到“正常”代码。这些符号将仅对“Devend”项目(Grunt、PhpStorm 等)“可见”。

但是,我从未在 Internet 上看到任何文章和作者推荐这种方法。因此,看起来,它存在重大问题。有吗?

补充:那些问题是什么?

PS:我知道,许多现代浏览器都可以使用 CSS 类名称的 unicode 符号(就像 Java 允许函数/变量/等名称的 unicode 符号一样),因此,理论上我可以将它们保留原样,但出于同样的原因,它对我来说看起来不太好:从未见过有人这样做/推荐这样做。

4

1 回答 1

1

经过一番研究,我整理出了正确的问题和答案:

在为项目选择 CSS 命名空间名称时,如何避免将来出现麻烦,使用 BEM 命名约定。


CSS 类命名的一个常见良好做法是使用所有小写字母。也许,在某些命名方法中,规则可能不同,但在BEM中,必须使用所有小写字母。所以我可以使用带有几个破折号的大写字母,比如NS--。我自己的代码足够集中,可以准确地定义 Grunt 或 PhpStorm 等的搜索/替换范围。我可以去开发我的标记,而不必为将来的问题而烦恼。一个主要优点是即使没有预处理/后处理它也可以工作,在我的情况下它只是一个很好的约定与 BEM 一起使用。

下一个挑战是如何处理php 和 js 中组合的类名/选择器字符串。在这里,第一部分(静态标记)的解决方案并不限制如何解决这个问题的“动态部分”。在这里,我们还可以通过在 PHP 和 JS 中引入变量来避免预处理/后处理。

我喜欢预处理器/后处理器,但是在这种情况下我们可以避免使用它们非常好,因为它实际上是一个命名约定问题,而不是工作流增强问题,这是网站管理员预处理/后处理工具的主要目的。

于 2015-08-31T11:46:02.247 回答