在大学期间,我在一家酒吧工作。酒吧有一个小厨房,供应典型的美国酒吧食物:汉堡、鸡翅和汤。我们有两道汤,一道会轮换,另一道总是辣椒。我们每周手工制作辣椒。有时我们会卖光,有时我们会在一周结束时剩下辣椒。 如果有剩菜,我们会把它扔掉或带回家。它仍然可以安全食用,只是在餐厅出售一周前的辣椒不是一个好策略。
我和我的一个朋友在这家酒吧工作。他是一个素食主义者。他不是出于口味或个人健康原因成为素食主义者,而是出于全球可持续性。辣椒里面有肉。所以,对我的朋友来说,通常是菜单之外的东西。
有一周结束的时候,我们剩下了一些辣椒。我的朋友在工作。他可以把这盘辣椒倒进排水沟,也可以把它带回家。现在,如果你是一个素食主义者,并且你仅仅出于全球可持续性的目的而成为素食主义者,那么,在这里,正确的选择应该是把辣椒带回家吃。扔掉食物,然后食用其他东西是浪费。
是的,他可以把它带回家给我,或者带到他祖母家。我们可以想出 100 种让这盘辣椒走的替代路线,但是让我们保持这个比喻——它确实会发生,一个人个人的理想受到实用性的挑战。有时会涉及辣椒。
当我和我的朋友讨论这个难题时,我认为他为他不吃辣椒提供了一个很好的理由。他说:“这关乎在沙滩上划一条线。”。很有可能,他可能在 引用《谋杀绿脚趾》,但他接着说出了一个很好的观点。
这与一盘辣椒和一个在一家酒吧的男人无关。这关乎为了长期和更大的利益不妥协。也许下次酒吧做辣椒的时候,酒吧会少做一点,或者因为知道会有浪费,所以会做成更小的批次。也许下次酒吧修改菜单时,会有更少的肉类食物,因为我们知道有一些像我的朋友一样不妥协的素食主义者,他们在酒吧花费大量时间。如果这种态度成为标准,就会涉及到数百万盘辣椒和一个改变的世界。
好了,那么,HTML 类。
您知道用类进行样式化通常是最好的吗?这是 OOCSS 和 SMACSS 以及关于 CSS 的 现代写作 教导的内容。不仅仅是“明智地使用类”,还有“不要使用 ID”。CSS Lint 甚至会因为在选择器中使用 ID 而向您发出警告。什么?真的吗?写一个完全有效的选择器会出现错误?
是的,真的。ID 比类具有无限的特殊性。嗯,几乎。这太强大,以至于它会在 CSS 中迅速失控。是的,它可以成为一个快速、简单、强大的覆盖,但如何覆盖它呢? (谁来监督监察者?) 如果你同意自己 (和团队) 永远不要使用它们,你就可以避免这些军备竞赛。这些覆盖困境总是可以通过其他方法解决——通过代码重构、嵌套类或其他更冷静、更明智的方法。
许多聪明人不同意这种观点 (参见另一篇帖子的评论线程)。但对我来说,这再次归结为在沙滩上划一条线。我不会使用 ID 来设置样式。不妥协。即使一个 ID 似乎可以在短期内拯救我,但长期不使用它们的益处更大。
有一天,我决定在沙滩上划一条线,从那时起,我就没有使用过 ID 来设置样式。有时,它可能会让人觉得不合逻辑,但总的来说,我觉得它提高了我的工作效率。
太好了,现在我满脑子都是吃辣椒……哦,还有做一些“查找‘#’ -> 替换为‘.’”。
我刚刚做了这件事,吓坏了,因为一切都坏了。然后我意识到我废除了所有颜色。:(
像 header、footer、aside 和 nav 这样的标签不就像是伪 ID 吗?这无疑是我认为它们的一种方式。我认为,如果你在代码中只使用一个,那么你就不需要为它添加类或 ID 来进行样式化。
我仍然不相信 ID 已经不再有用或可用了。
Al
标签是选择器。ID 是在标签上代替类的单次使用。
class=”foo” (你可以随意使用)
id=”foo” (只能使用一次)
不过,ID 在 JavaScript / jQuery 中仍然有其作用!
实际上,拥有多个 header、nav 或 aside 是完全有效的 (我认为你只能有一个 footer)。例如,你可能有一个主 header,然后在每个 section 标签中都有一个 header。
我认为 Chris 并没有说 ID 不有用。你可以在 CSS 中使用它们,它们对于 js 来说也很棒。但如果你坚持使用类,它可以帮助使事情变得井然有序。
我的团队使用了一个 id 来标识一个提交按钮。他们认为永远只有一个提交按钮。他们错了,我不得不将 id 转换为类。这不是什么大事,但使用类可以使事情变得更容易。
我同意,ArleyM,使用 ID 仍然是使用脚本语言操作元素的最有效方式。getElementById 比所有其他替代方案快得多,因为浏览器会保留一个带有 ID 的元素索引,并且它只返回一个元素。当然,我们有 getElementsByClass 名称,但首先浏览器必须遍历每个元素,寻找该类,然后你必须再次遍历结果,以找到你正在寻找的元素。
你可能会说 jQuery 会解决复杂性问题,但它仍然在幕后执行完全相同的逻辑。
如果你关心脚本速度,你会使用 ID。
我认为对 HTML 的一个基本部分进行全面禁止是错误的。它们是需要明智而适度使用的工具。让我们不要过度反应。许多人滥用表格,我们吓唬了每个人,让他们完全停止使用表格。有些人滥用 ID,但让我们不要再犯同样的错误。
阅读 Chris 的说法
“使用 ID 来设置样式”,即编写 CSS 来设置具有特定 ID 的元素的样式。所以这与 JavaScript 无关。我想他仍然会使用 ID 来用 JavaScript 针对元素。
从某种程度上来说,这个链接完全无关,但在另一方面,它让沙子/辣椒的比喻回归原点。我今天早上偶然读到了它
快餐辣椒里真的有沙子:http://www.businessinsider.com/11-disgusting-ingredients-that-arent-advertised-in-food-2012-3?op=1#ixzz1qYZOG1QU
你的朋友现在可以进入隐喻的可持续性,在辣椒里划一条线了!
使用 ID 作为文档中的片段标识符怎么样?http://www.w3.org/DesignIssues/Fragment.html
片段标识符不是 CSS。本次讨论纯粹是关于使用 ID 作为样式挂钩。当然,ID 应该仍然用于其他目的。
说得对。
我完全同意,虽然我必须提前为我的愚蠢行为道歉……
快速查看此页面的源代码,显示有 47 个 ID 用法。好吧,你没有将它们用于样式目的,这一点是公平的。但等等,页面的样式表中也有一些 ID 声明。
那么,这对你来说是未来要“在沙滩上划一条线”吗?或者,在某些情况下,ID 是否有必要使用?
这是我最讨厌 WordPress 的地方之一。我尽力在我的所有项目中编写干净、最佳实践的代码,但我的个人博客 (人们会认为它应该代表我的最佳作品) 却是一团糟。因为 WordPress 在代码方面很糟糕,尤其是当你有很多小工具和插件的时候。在许多情况下,只有这些插件才能实现你想要的功能,它们提供的唯一样式挂钩就是 ID。
从我对 Chris 代码的快速查看来看,他似乎就是这样做的。所以,简而言之:WordPress 不算!:)
(这也是当你查看 Paul Irish 的 WordPress 博客的源代码时,你会看到消息:“这个网站自己的代码很糟糕……”的原因)
啊,这解释了!我不是 WordPress 用户,这也是另一个简单的原因。我感觉用一个这样乱搞你代码的 CMS 会很不舒服。
@Louis - 我不认为这是 WordPress 的错。你可以怪插件,当然,但作为一名开发者,我总觉得主题本身完全在我的掌控之中。
@gary
我同意,但承认,在个人博客上,懒惰胜过最佳实践!:) 允许 WP 变得糟糕更容易,仅此而已。
另外,关于插件,问题是:插件通常会自行插入 HTML。是的,我可以编辑插件文件,让它使用类而不是 ID。但是当我升级插件时会发生什么?这些类消失了,并且会破坏某些东西。我无法对每个手动更改的插件都进行特别说明。因此,在个人博客上,让 WordPress 拥有糟糕的代码更容易(读:懒惰)。所以我知道可以把它做得更好,但通常不那么有趣或实用。
糟糕...“gary”应该说是“gray”。我的错。:)
不同意关于 WordPress 的评论 - 开发人员对标记有 100% 的控制权,WordPress 不会乱搞任何东西。如果你选择垃圾插件,那是你自己的错。明智地选择你的插件,蚱蜢们。
我越来越擅长构建 CSS,我用 ID 来为东西设置样式的次数就越少。
但另一方面,我仍然使用它们,因为有些元素实际上是唯一的,并且*需要*是唯一的。ID 规则非常适合它们。
我知道的是,我在编写规则的那一刻节省了时间。我会用类而不是 ID 节省时间吗?嗯,谁知道呢?我怎么计算呢?
我几乎无法做到。即使我能,我也不确定是否值得付出努力。
如果我想要保护我的意识形态完整性,我会说我想随时能够在沙滩上划出一条线。这条线可以引导我走上正途。
仅仅因为一个元素是唯一的,并不意味着它的样式是唯一的。为什么不使用可以应用于其他东西的更通用的类?
仅仅因为现在某些东西是唯一的,并不意味着它永远是唯一的。你认为你总是只有一个标题、一个页脚和一个内容区域吗?
@Scott
当我说一个元素是唯一的,我的意思是它的样式是唯一的。就是这样。
你不知道我叫什么“独特”,以及为什么我确定它们是独特的。你真的认为我只是在谈论标题吗?
在某些情况下,我会将 ID 和类混合使用。我可以这样做,所以当需要时我会这样做。
最后,我认为使用 ID 规则在*语义上*比只使用类更正确。
MaxArt,我不确定你是否理解了这个概念。一旦你决定为一个 ID 设置样式,你就等于在说“我永远不会在任何其他东西上重复使用应用于此 ID 的任何样式”。如果你的构建方式一致/用户友好,我认为在每个“模块”中都有可重用样式的案例。
Merne,ID 的作用是在*该页面*中使元素唯一。我可以在多个页面中使用相同的 ID。
例如,如果我想在进行 AJAX 请求时用等待旋转器覆盖整个页面,以防止用户进行进一步的交互,我可以使用一个独特的结构来做到这一点。并且我可以在所有我想要的页面中以一致的方式使用它。
当然,我可以使用类。但为什么?在一个页面中有多个全尺寸覆盖的可能性吗?不,那将是一个界面错误。
只使用 ID 是语义上正确的方法。
你为一个非常具体的用例提出了一个很好的观点。在这种情况下,我同意你的观点。当然,这个加载器没有语义意义,所以它将通过 JavaScript 添加(如果我这样做的话),在 DOM 加载时不会出现。我在 JavaScript 中使用 ID,所以在这种情况下我也会使用 ID(但会使用一个用于样式的类)。
这里的重点是,如果你决定在你的样式表中混合使用 ID 和类,你就会开始一场特异性战争。我同意某些开发者可以做到(并做得很好),但是,如果出现你并不是唯一开发者的这种情况,事情就会很快变得混乱。
综上所述,我认为 ID 与语义无关。
没错!我就是这样告诉我的队友的......希望你的帖子现在能让他们意识到这些东西......刚在 Facebook 上分享了!:)
我仍然不相信。我偶尔会使用 ID,当这是一个非常特殊的情况时。
我为什么要覆盖它 - 它是针对特定元素的特定选择器,所以我只需更改该选择器的内容。我知道它不会影响任何其他东西,因为它 是唯一的。
当然,如果你在到处乱放 ID 并将它们用作选择器,那么你迟早会遇到麻烦,但如果你在非常特定的场景中偶尔使用它们,我看不出有什么问题。
在你链接到你*疯狂的城镇选择器*博客中的 CSS Wizardry 文章中,提到了“选择器*意图*”的概念。问问自己你在选择什么,如果你的答案是“这个元素,只有这个元素”,那么为什么不使用 ID 呢?如果答案改变了,那么是的,你需要用类或共享选择器替换它,但那是因为意图发生了变化,ID 不再合适。
我认为,与其说是一条限制性的沙滩线,说“在任何情况下都不要这样做”,不如说是一条沙滩上的*指南*(看看我做了什么?),以防止或阻止滥用。
当他们使用不适当的 ID、重复使用 ID 或他们的选择器包含无用的 ID 引用(例如,两个堆叠的 ID 选择器)时,我仍然会提醒他们使用 ID 的问题。但这与告诉他们永远不要这样做完全不同。
是的,我后来采用了不再使用 ID 的理论。我看看我以前构建的网站,当我以各种奇怪的方式覆盖 ID 时,我就会想“Ugh...多么混乱”。类使一切变得如此干净。
Estelle Weyl 的“CSS SpeciFISHity 图形”非常棒,可以可视化不同 CSS ID 和类在特异性方面的区别。
我认为那些反对“CSS 中不使用 ID”意识形态的人没有看到大局。
为了编写可维护、可扩展的 CSS,它将随着网站的增长和成熟而增长和成熟,你需要将页面的每个部分都视为一个模块,而不仅仅是一个模块,而是一组构建的块,从非常通用的模块到变得更具体的子模块。这样做,你就能看到使用类比 ID 更有价值的地方。如果我决定在一个子模块上使用一个 ID,那么我就无法再利用它来在其他地方重复使用这些样式,因为该选择器现在过于具体。
看看 Twitter Bootstrap 是如何构建的,它有像
.nav
这样的类,然后有像.nav-tabs
这样的“子”类。你有一个像.nav
这样的基本类,然后用.nav-tabs
构建它。你应该这样思考构建页面的每一部分。它可以被概括为一个基本类,然后我可以一遍又一遍地在我的网站上使用它吗?即使是像主导航这样的“独特”元素仍然可以从基本类中受益。你可以构建你的 CSS,使你主导航的实际规则只有几行,因为它依赖于其他基本类来完成大部分工作。你举了一个非常琐碎的例子。
你也可以在多个页面中使用相同的 ID,你知道的。
这是一个很好的描述,说明了为什么我们应该在沙滩上划出一条线。我一直在寻找一个更深入的解释,说明为什么“永远不使用[id] 的长期益处更大”。我想了解更多关于这方面的信息。
很好的例子。
我绝对同意你的观点,Chris。除非你使用 PHP。但即使那样,我也不建议为 ID 设置样式。
标签,如标题、页脚、aside、nav、section、article,不像 id,它们是标签。它们在样式中被用作标签。这意味着你需要的类要少得多,但保留了可能性。
例如,如果你想拥有主导航和副导航,其中一个可能是水平方向,另一个是垂直方向。在这种情况下,你可以对两者都使用 nav 标签,并分别给他们一个类。因此链接看起来可能相同,但具有不同的字体大小或任何你喜欢的样式。
顺便说一下,我在 WebKit 中修复了我们“类可以比 ID 更具体”的错误。现在类特异性将限制在 255 并不会溢出到 ID 区域。
但你不会成为素食主义者?: (
我的幸福结局在哪里?
我最近经常遇到这些讨论,但还没有听到任何不使用 ID 的充分理由。
在我的情况下,我虔诚地使用它们来识别(ID)网站或应用程序的某些部分(模块、部分,等等)。这样,我可以通过标签和类为整个系统编写一些通用的样式声明;然后可以使用容器 ID 来定位更通用模式的特定实例,这些实例可能需要一些额外的(或不同的)样式。
这种做法让我能够很好地控制样式表的尺寸,并更轻松地维护和修改将来的样式。
我已经转换为在几乎所有东西上都使用类。我仍然在 JavaScript 需要它们或用于语义的情况下使用 ID,例如;
因此,我使用 grid one-third(例如)来执行宽度、高度、样式等等,然后 main-content 专门用于使用 JS 定位,或者只是用于语义,我很少再使用它们进行样式设置。
嗯,无法让 pre/code 标签生效。无论如何,我的意思是;
div id=”main-content” class=”grid one-third”
例如。
但是,当你在页面上有 3 个相同的网格,并且你想让 #main-content 有点不同时怎么办?
如果我需要的样式只是为了那个 DIV 独一无二,那么我绝对可能会对 ID 进行样式设置。但是,如果它是一个重复的样式,颜色、背景、阴影等等,我会想办法创建一个类来有效地“选择加入”div,并简单地添加一个额外的类。
人们很容易陷入工具定律的陷阱,当他们意识到自己愚蠢地滥用工具时,常见的条件反射反应是完全停止使用该工具。
这是愚蠢的行为。
相反,要学习何时使用工具是合适的,例如当 ID 选择器是合理的解决方案时。
如果工具不合适,就不要使用它。
Chris,我关注你很久了,你的许多长篇大论最终会留在我心中,让我成为一个更好的人/开发者……无论我在那时如何不同意你。但是,我从未听到你用如此绝对的语气说话,我在这篇文章中反驳说,绝对地说话从来都不是一件好事。你是否认为 ID 在 Web 开发中没有任何用途,或者只是不适合样式设置?
Chris 在他的文章中明确表示“我不会使用 ID 来设置样式,没有妥协。”我只能假设他的意思是使用 ID 进行其他用途是可以的——比如 jQuery。
我们可以看看有人以不干净的方式使用 ID 选择的例子吗?
如果我有一个 ID 为“login”的登录 CTA,我将使用该 ID 为那个非常独特的 UI 元素创建一个小型、精美的选择器。之后,我会给自己一份辣椒作为奖励,以表彰我优雅地融合了 HTML、CSS 和 JavaScript。
现在,客户想要将相同的登录添加到页脚中……
我只使用类,除了当我定位页面上的锚点时,这种情况本身就很罕见。ID 似乎更适合功能而不是样式设置。
这是一件小事,但在 CSS 中,句点(.class)比 # 视觉上不那么分散/突兀。很傻,但确实如此!
多年来——可能比我甚至知道有任何理由不这样做的时间还要长——我从未使用过 ID 来设置样式,除了一个例外。对我来说,原因始终仅仅是“我是否将它命名为 #mani-nav 还是 .main-nav”?一个小小的烦恼,累积起来可能有数百个选择器。
唯一的例外——也是我可能仍然会继续使用的例外——是我在一个项目中只使用一个 ID,并且只在 <body> 标签上使用。此外,我从未在 CSS 中使用 ID 来设置样式,除了在一种情况下
或诸如此类。在我看来,如果 ID 标签有合法的用途,那就是为“识别”目的标记一个页面——也许使用双 .home.home 会违反“以太”的概念。
我从 ID 到类的个人路径:我在过去(最近)更多地使用 ID……我通常有这样的思维方式
1)页面内的“唯一部分”由一个 ID 标识
2)在它内部的所有内容都进行了样式设置,试图避免“divitis”和“classitis”,即使用合适的标签来表示内容,并避免在 HTML 中添加不必要的类
‘#’news {}<br/>
‘#’news h2 {}<br/>
‘#’news ul {}<br/>
‘#’news a{}<br/>
(也许这可以用类来完成……但是,嘿,那是过去!)
现在我迁移到了 HTML5(更多语义标签,哇!)和 LESS,我发现自己试图划清那条界限。
我绝对认为混合和嵌套使这成为可能。我仍在尝试,但它似乎工作得很好……
另一个帮助我写出更好 CSS 的方法是让网站样式在页面和部分之间更加“一致”(即避免不必要和无意义的变化)
嘿,有人告诉我如果我来这里可以得到一碗免费的辣椒……。
.totally-agree
在推广特定方法之前,你应该问问自己要实现的目标是什么。
那么,你在编写 CSS 时想要实现什么目标呢?
假设你想要编写最有效的代码,你该怎么做呢?
再一次,你必须问在这种情况下“最佳效率”意味着什么。
最小文件大小、最小覆盖规则、最佳可维护性、可升级性,还是其他?
因此,上述情况中的至少几种情况只有在整个网站的 HTML 标记完成并且你将其视为完全静态时才能实现。换句话说,这意味着你必须先编写所有 HTML,然后才开始编写 CSS,但谁会真正那样做呢?
为了避免标记中的微小更改导致更改或重写 CSS 的很大一部分,类无疑是一种合适(最佳?)方法。它们的最大优势之一是它们使 CSS 更加独立于标记的结构,从而提供更大的代码更改灵活性。类还可以轻松地由 Javascript 操作。
我可以想象,大多数人很少使用 CSS 类,因为他们想尽可能地保持 HTML 代码的整洁,而是尝试通过使用“header > h1 + p {…}”这样的脆弱结构来在 CSS 侧完成它。
为什么 ID 如此受欢迎呢?
好吧,我相信它们很受欢迎,因为它们提供了将规则限制在页面/网站的可管理部分的可能性。由于它们的特殊性,它们确保了无论哪些其他选择器匹配,样式都会被提供。
但即使广泛使用类,你仍然会陷入 CSS 的级联和特殊性概念。例如,只要考虑一下“响应式设计”和媒体查询的使用。因此,在现实世界中,你(通常)需要将几个类应用于一个元素,并在 CSS 中连接它们(一个典型的用例是 Modernizr 的使用)。
如果你以后在网站上添加一个新页面,你是否仍然了解你之前在 CSS 中定义的所有类?
你不会改变现有的类,因为影响是不可估量的。
问题是:“为什么我要这样做?”
你可以轻松地分组选择器,当添加新的 ID 或将旧的 ID 更改为类时等等。由于 CSS 完全依赖于标记,因此不可避免的是,对标记的某些更改也会导致对 CSS 的更改。
恕我直言,CSS 本质上至少有点低效。但我们真的需要关心它吗?
不要忘记辅助功能跳过菜单!我们需要 ID 来实现它,以及为了获得更好的 JS 性能。
我必须感谢你提供的http://shoptalkshow.com/episodes/034-with-jeremy-keith/——在那里,他描述了使用 ARIA 角色重新使用 html5 元素(如 header)以实现特殊性。这条建议彻底改变了我的标记,并使它变得更加清晰。那就是我划定的界限!
使用 ID 是可以的,真的。
你可能需要更“聪明”才能知道如何以及为什么使用它们。比那些只使用类的家伙更“聪明”。
此外,真正的名称是“chile”,而不是“chili”——墨西哥辣椒
通常我只会使用类(如果可能的话 - wordpress,你这个小丑,我在看着你)。
我不太确定为什么会陷入这种思维模式。我依稀记得几年前读过一篇关于使用类会提高性能的文章。我猜整体提升并不明显,但从那以后我一直坚持这种做法。
与你所读的内容相反,我读到的是 ID 实际上具有更好的性能。
它们确实具有更好的性能,整个文档都需要被遍历才能选择所有类,但使用 ID 选择器时只需要找到 ID 元素。除了使用一些较新的 CSS3 技术之外,我从来没有真正看到 CSS 性能成为一个大问题。
我有点犹豫要不要完全放弃使用 ID。由于我技术含量很高,展示我在编写代码时所想的内容非常重要,例如,始终只应该存在一个主菜单,如果存在两个,则页面无效。
不过,有了良好的命名,你不会损失太多,并且正如 Chris 所说,它应该可以带来更通用的代码。
辣椒不应该浪费!无论如何,我使用 ID 和类来区分顶级层次结构样式和其他样式。我不同意完全放弃它们。
表单呢?它们是特殊情况吗?或者我们仍然应该在标签上使用“for”属性以及 ID?
如果表单元素位于标签内,则无需使用
for
属性。如果你想在标签上使用 ID,这取决于你。如果你最终使用了,请放心,这完全没问题。
那么,如果你只使用类,难道不能只使用 ID 吗?因为除了特异性以及 ID 应该唯一的通用规则之外,我认为没有区别?或者浏览器在渲染/缓存/性能方面对 ID 和类有任何实际差异?
说得对。但是,只使用 ID 将证明几乎不可能重用组件。
就 OOCSS 而言,只使用 ID 将是它的反义词,而我们都知道 OOCSS 是一种良好的实践。
我认为我曾经在某个网页设计大会上听到(或读到)Aaron Gustafson 说 ID 的性能实际上比类更好。必须再问问他,关于这个话题似乎没有什么资料。
我完全同意 Chris 的观点。当我第一次听到它时,我睁大了眼睛,但这让我的生活变得更加轻松。
为什么你不使用 ID?!很多时候确实存在页面上只出现一次的元素。你很聪明,你当然应该知道何时何地应该使用 ID 而不是类?
为什么你不能同时拥有 ID 和 OOCSS?难道你不能像这样 <element id=”specific_stuff” class=”generci_stuff /> 并获得 ID 和 OOCSS 的好处吗?
嗯,
像这样* <element id=”specific_stuff” class=”generci_stuff />
我在本文中发现了一些智慧。比 ID/类之争更重要的是(我个人不使用 ID),经过思考和调查之后,你做出了一个你认为将有助于全球事物发展方式的决定,并贡献了一份力量。
我仍然使用 ID,但我知道我不应该使用,并将划清界限。
The Dude Abides
一旦我真正理解了 CSS,我就停止使用 ID,因为在开发过程中我不可避免地会想重用代码,然后必须将 ID 更改为类。这一切都是因为我想做一些只有类才能完成的事情,从那时起,ID 就从我的生活中消失了。
但是,虽然我习惯性地使用类,但有些地方可以应用 ID。例如,如果我在一个页面上多次使用同一个类,但我想让它们略有不同,例如不同的背景颜色或背景图像,或者不同的字体或行高。在这种情况下,你可以使用 ID 来修改它们。但我出于习惯使用类,在这种情况下,我仍然倾向于使用类。奇怪的是,我唯一仍然使用 ID 的地方是表单。真奇怪。
我同意 D 的观点,一旦你真正理解了 CSS,你就会停止使用 ID。除了你不会重用代码的情况。一旦我理解了它,它改变了我对 CSS 和开发的思考方式,因为代码重用可以节省大量时间。
我们真正需要的是一种完全在 CSS 中实现 OOCSS 的方法。在设计调整需要时,不得不更改模板 HTML 中的类属性,而不是只调整 CSS 文件,感觉像是倒退了一步。
我从不使用 ID 进行样式设置,并且尽量避免以任何其他方式使用它们。这感觉不太对劲。
ArleyM 和 Andy Griffin 都指出,使用 jQuery 将证明使用 ID 是合理的,因为它是 jQuery 脚本中最常见的优化技巧之一。
你自己(Chris)也经常说并证明了 jQuery 在你的工作中有多么重要。
所以我的问题是:当你使用 jQuery 时,你会说
A- 使用 ID 可以作为 Ben Frain 所说的“不得不”使用的一种情况(http://benfrain.com/never-use-ids-as-selectors-unless-you-have-to/)
B- 使用 ID 带来的速度优势与在我的工作中不使用 ID 带来的优势相比微不足道,所以我不会使用它们
C- 使用 ID 并没有真正带来速度优势,这是一个都市传说
谢谢