【问题标题】:HTML - Using same name for an ID and a Class [duplicate]HTML - 对 ID 和类使用相同的名称 [重复]
【发布时间】:2014-02-01 22:36:15
【问题描述】:

可以吗?对类名和 ID 名使用相同的名称?是不是代码味道?

<div class="wrapper" id="wrapper"></div>

【问题讨论】:

  • 为什么不通过W3C Validator 运行您的页面?
  • @rednaw 很抱歉很挑剔,但那条评论真的增加了什么吗?已经有 3 个答案,共有 13 个赞。
  • 这不是问题,但对于 CSS 和使用 JavaScript 访问 DOM 元素,只有 id 就足够了。
  • @JonathonReinhart 抱歉,有时只是想装点幽默。

标签: html css


【解决方案1】:

是的,这样做是有效的。不过,需要 这样做并不常见:这有点像code smell。这可能表明您需要重新审视您的命名约定。

扩展命名约定和语义问题:

当您使用 ID 为 wrapper 时,您是在说“这是 包装器 - 同类中唯一的一个”。当您使用 wrapper 类时,您是在说“这是 其中一个 包装器,可能还有其他类似的包装器”。同时说这两个东西有点奇怪,对吧?

我建议您使用特定的 ID:#primaryWrapper#outerWrapper 等。这意味着您正在表达“primaryWrapper 是包装器之一”,这使得堆更有意义。

【讨论】:

    【解决方案2】:

    是的,它完全有效,你可以做到

    希望您知道
    #ID 必须是每页唯一的,而
    .CLASS 可以分配给多个元素。

    如果您倾向于编写简洁易读的HTML 标记,请始终将您的属性保持在可以理解的最低限度。

    【讨论】:

    • 但不要多次使用id。此外,您应该意识到旧版本的 Internet Explorer 不区分大小写。
    • 他说#ID“必须是每页唯一的”。
    【解决方案3】:

    是的,您可以,但作为一般规则,您不应该这样做。类可以重复使用,但 ID 必须保持唯一。如果需要,请尝试 wrapper1wrapper2

    【讨论】:

    • 我会说 wrapper1(作为一个 ID)和 wrapper2(作为一个类)将比 wrapper 作为 ID 和类更有用:1 和 2 似乎表明两者是兄弟姐妹/等于,事实并非如此。
    • 我想在某些情况下人们会混淆这一点......尤其是如果他们对 id 和 class 使用相同的名称......
    【解决方案4】:

    是的,没关系,从浏览者的角度来看,它们是两个完全不同的元素。

    类使用. 定义,ID 使用# 定义。

    但是在编码的时候要注意不要把自己弄糊涂。

    更多信息可以参考文档
    元素标识符:id 和 class 属性 at
    http://www.w3.org/TR/html401/struct/global.html#h-7.5.2

    【讨论】:

      【解决方案5】:

      是的,它们是不同的实体。但是,不能在多个实体上使用相同的 ID。

      【讨论】:

        【解决方案6】:

        是的,你没事。

        正如人们所说,只要记住你的 id 是唯一的。

        指针:

        类通常用于对许多样式相同或非常相似的事物进行分组。

        id 用于标识特定元素,主要用于 javascript。

        【讨论】:

        • 类主要用于样式和 Javascript 的 ID 的区别是不正确的,它甚至不是一个可靠的约定——有些人可能会这样使用它们,但也有很多人不这样做。这个问题无需参考 CSS 或 Javascript 即可回答。
        猜你喜欢
        • 1970-01-01
        • 2016-01-04
        • 2012-07-13
        • 2021-03-29
        • 2017-03-04
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        相关资源
        最近更新 更多