css中(div#container)和(#container)之间的区别是什么?

时间:2014-04-10 07:55:15

标签: html css css-selectors

众所周知,id在html标签中应该是唯一的,因此可以使用以下方式直接引用:

#container

但是我注意到有些开发人员会在其前面添加标签名称,如下所示:

div#container

现在有区别吗?它与性能有关吗?或者它是最佳实践惯例?或者为了简单的代码可读性?

5 个答案:

答案 0 :(得分:3)

div#container将确保您只选择元素div。如果没有类型选择器,则将定位具有该ID的任何元素。类型选择器还添加specificity,但这是次要的。

假设您遵循最佳做法并确保每个页面的ID都是唯一的,那么您通常不需要对ID选择器进行高估; #container应该足够了。但是如果你有一个很好的理由来区分元素类型,那么没有规则阻止你这样做(虽然坦率地说,考虑到ID的整体性质,我不明白为什么应该将相同的ID分配给不同的类型完全的元素。)

答案 1 :(得分:2)

基本区别在于div#container虽然存在id=container元素,但您可能无法定位元素。例如,如果你有

<div id="container"></div>

然后两者都会指向相同的元素。但如果你有

<p id="container"></p>

然后只有选择器#container会定位它。选择器div#container不会

答案 2 :(得分:1)

div#container#container之间的区别在于

#container仅适用于id="container"

元素

虽然

div#container仅适用于id="container"

DIV

尽管您认为只使用一次id是最佳做法。如果你需要再次使用某些CSS,不妨使用class。

答案 3 :(得分:1)

在html中,您可能有很多其他元素,例如span,table等,它们可能具有相同的id,例如“container”。所以这段代码:

#container: {....}

是对所有这些内容的引用。

但是当你这样写:

div#container: {...} 

您在这些项目的特定子类别中引用。你也可能有很多div。通过上面的参考,您可以在divs元素的特定子类别中进行定位。

答案 4 :(得分:0)

好的我用错误的假设问了这个问题如下:

  1. 只有一个HTM页面,因此:

  2. 应该只有一个ID(容器)

  3. 此页面将有一个内部CSS块

  4. 基于上述错误的假设,不必包含标签名称。

    但是,正确的假设应该是:

    1. 您的网站有多个页面

    2. 尽管id(容器)在每个页面中都是唯一的,但是它可能被分配给不同的元素,例如div id="conainer"在一个页面中。并在另一页<{p>

    3. p id="container"
    4. 最有可能是外部css文件或是为所有这些页面提供服务的文件。

    5. 基于这些假设,标记名称前缀更具体的好处将防止异常行为

      这与laaposto的answer几乎相同