Errol 写道
您对以下情况有何看法:您开始
命名类,然后在中途意识到
您需要相同的类,但命名不语义。您是创建一个重复的类,还是将现有类重命名
为更通用的名称,或其他方法?例如
我将有一个 #modules_list_footer,但现在我需要相同的
内容用于文章,因此我可以只使用 modules,但它
应该为“#articles_list_footer”。
我们都遇到过这种情况。
当您第一次编写网站代码时,它具有美丽的语义性。一切都被完美地命名,对所有人都有意义。然后网站发展壮大,增加了新的区域,需要新的布局,样式表开始膨胀。您的“#articles_list_footer” 非常合理,但现在您需要将相同的页脚用于一个并非文章的新区域。使用该 ID 会非常方便,因为它可以正常工作。但这会让您走上一条语义性下降的道路…… 可怜的程序员该怎么办呢? 我认为有以下几种选择,按从最好到最差的顺序排列。
1. 重命名!
我在这里表明,您的首选方法应该是重命名有问题的 ID 或类名。这可能很麻烦。这可能涉及更新许多页面,而且很繁琐,但……这是正确的方法。
2. 创建一个新名称
可能会出现重命名完全不可行的情况。数千个页面……可能丢失的页面,并导致布局问题……在这种情况下,我建议您除了原来的过时名称外,再添加一个新名称。在 Errol 的情况下,只需添加一个更有意义的通用 ID 名称即可
#modules_list_footer, #list_footer {
...
/* Note: #modules_list_footer is deprecated, use #list_footer */
}
由于它们将共享完全相同的属性,因此您可以使用新名称。然后在您的 CSS 中记下旧名称已弃用,供未来的开发人员参考。
3. 使用旧名称
如果您需要的不止是一个新名称,而是很多新名称,那么 #2 可能导致的 CSS 膨胀可能过于严重。您不会因为放弃并使用旧名称而扼杀任何小猫。至少您吸取了教训,并了解了下次可以做得更好的地方,这已经超过了 80% 的其他 Web 开发人员。也许在您的 CSS 中记下命名问题,您在编写下一个网站时,可以从 #list_footer 开始!
当然,这些只是我的想法。我相信你们中许多人有自己的处理此问题的方法。还有其他人有处理此问题的方法吗?
使用级联
<body id="article">
然后,在您的 CSS 中
#footer {} /* 通用规则 */
#article #footer {} /* 特定规则 */
我同意使用级联的建议 - 我自己有 OOP 背景,级联对我来说既熟悉又易于阅读。
但是,对于 Errol 提出的具体问题,我同意 Chris 的方案 #1。许多编辑器和 IDE 中的查找/替换功能越来越强大,我认为这种情况需要进行测试。
祝你好运,Errol!感谢 Chris 在代码范式中提出了另一个有趣的讨论!
关键是编写代码,避免出现这些问题。例如,如果正确嵌套元素,并使用 ID 定义基于结构的元素 - 以及使用类定义动态、重复或模块化的元素。
快速示例
main -> div.inner -> p
sidebar -> div.inner -> ul
footer -> div.inner -> p
main、#sidebar 和 #footer 包含结构的 CSS(宽度、高度等),并且 div.inner 被声明并应用于每个部分,也许是为了显示不同的背景颜色或图像,并使用填充进行定位。此外,声明通用 div.inner 和 #main div.inner(特异性)可以产生不同的效果!非常灵活!
这就是我使用 Dreamweaver 的原因之一,因为您可以将所有页面链接在一起,因此 Ctrl+F 然后“全部替换”将更改您网站上所有不语义名称的实例
答案 #1,重命名选择器,是一件麻烦事,为什么这次要比第一次做得更好呢?除非该项目是开发人员的第一个项目,或者该项目即将被放弃进一步重构。而且,除非有类似于评论 #4 的解决方案可用(如果可用,则提出的问题将不再是一个问题,因为这应该在 5 分钟内完成)。
答案 #2 是高度临时的,仅适用于短期解决方案。此外,它会增加 CSS 和 HTML 的文件大小。
答案 #3 可能是最有效的方法,与设计指南或可供所有参与 CSS 开发人员使用的等效指南一起使用。
为什么要修复本来就没有坏的东西。
天啊,我一直都在作弊,进行批量查找/替换。哈哈。
我使用 MySQL 数据库中的搜索和替换 替换了 WP 帖子中的类。这有点吓人,但是如果您先备份数据库,则可以随时还原。这对我很有效,当我将图像从 Photobucket 移动到我的服务器时,可以替换类和图像地址。