众所周知,id在html标签中应该是唯一的,因此可以使用以下方式直接引用:
#container
但是我注意到有些开发人员会在其前面添加标签名称,如下所示:
div#container
现在有区别吗?它与性能有关吗?或者它是最佳实践惯例?或者为了简单的代码可读性?
答案 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"
尽管您认为只使用一次id是最佳做法。如果你需要再次使用某些CSS,不妨使用class。
答案 3 :(得分:1)
在html中,您可能有很多其他元素,例如span,table等,它们可能具有相同的id,例如“container”。所以这段代码:
#container: {....}
是对所有这些内容的引用。
但是当你这样写:
div#container: {...}
您在这些项目的特定子类别中引用。你也可能有很多div。通过上面的参考,您可以在divs元素的特定子类别中进行定位。
答案 4 :(得分:0)
好的我用错误的假设问了这个问题如下:
只有一个HTM页面,因此:
应该只有一个ID(容器)
此页面将有一个内部CSS块
基于上述错误的假设,不必包含标签名称。
但是,正确的假设应该是:
您的网站有多个页面
尽管id(容器)在每个页面中都是唯一的,但是它可能被分配给不同的元素,例如div id="conainer"
在一个页面中。并在另一页<{p>
p id="container"
最有可能是外部css文件或是为所有这些页面提供服务的文件。
基于这些假设,标记名称前缀更具体的好处将防止异常行为
这与laaposto的answer几乎相同