Html CSS选择器非规范化

Html CSS选择器非规范化,html,css-selectors,Html,Css Selectors,有一个书面(多次)规则,即,id选择器将唯一元素标识到DOM树中 这总是伴随着这样一个结论:只有一个具有这个#id的元素可以存在于DOM树中 因此,如果您需要对DOM树中另一个出现的元素使用CSS选择器,则必须使用.class选择器 好吧,我对这种限制有严重的怀疑,我认为它并没有回应真正的需求,也没有避免更直观地使用#id和.class选择器 问题是: 存在类似于“#id1#id2”的代码,我可以理解#id2在#id1上下文中最好是唯一的,但是强制的含义是什么#id2在整个DOM上下文中应该是唯

有一个书面(多次)规则,即,id选择器将唯一元素标识到DOM树中

这总是伴随着这样一个结论:只有一个具有这个#id的元素可以存在于DOM树中

因此,如果您需要对DOM树中另一个出现的元素使用CSS选择器,则必须使用.class选择器

好吧,我对这种限制有严重的怀疑,我认为它并没有回应真正的需求,也没有避免更直观地使用#id和.class选择器

问题是:

存在类似于“#id1#id2”的代码,我可以理解#id2在#id1上下文中最好是唯一的,但是强制的含义是什么#id2在整个DOM上下文中应该是唯一的?

这条规则只是助长了一种堕落的、毫无意义的身份命名。这也迫使我们过度使用class属性

我觉得避免这个规则和构建这样的结构更合适(请理解代码是简化的,并且在propose中不使用具体的HTML结构):


你没有正确处理这个问题。class和ID属性不适用于CSS,也不适用于JavaScript。它们旨在识别和分类不同的元素

Unique元素获得一个ID,该ID在CSS和JavaScript中具有优点,并且具有本机浏览器行为(如果单击匹配的锚链接,则跳转到该ID)

意思相似的元素得到一个共享类名。这有助于在CSS和JavaScript中对它们进行分类(帮助!),以便更好地对类似元素进行分组


另外,仅供参考,还有不同的元素表示无序列表和列表项,这样您就不会在页面中填充不必要的div。

这与其说是一个问题,不如说是一个咆哮。要获得有效的HTML,需要使用唯一标识符。这就是它的定义,不是限制。这只是公理。类属性的“过度使用”是什么意思?你知道一个元素可以同时拥有多个类(在
class
attribute的值中分隔的空格)吗?@zzzzBov问题是:强制#id2在整个DOM上下文中应该是唯一的是什么意思?@MaratTanalin因为我不能有多个id=“士兵”在同一页中,我必须将此分类移到class属性,而对我来说,它是“#armys#1”元素的一个明确的唯一元素,而不是class属性中的“种类…”。@fguillen,您应该阅读,因为您似乎不了解基本规则。我没有谈论CSS,而是CSS选择器。锚定链接与“名称”而不是“id”匹配。我不认为“整个DOM id唯一性”约束有助于分类,尤其是使用“链选择器”。我已经说过,‘我正在简化我在propose中的示例’@fguillen,片段标识符链接(即
)被定义为使用@zzzzBov中的特定
[id]
指向元素。你是对的,我误解了规范中的“属性名称允许锚定为链接的目标”@福奎伦,那是1995年的档案…从那以后,发生了很大的变化。
<div id="armys" class="list">
  <div id="1" class="element">
    <div id="orders" class="text">My orders</div>
    <div id="soldiers" class="list">
      <div id="1" class="element">
        <div id="name" class="text">John</div>
      </div>
      <div id="2" class="element">
        <div id="name" class="text">Esther</div>
      </div>
    </div>
  <div>

  <div id="2" class="element">
    <div id="orders" class="text">My orders</div>
    <div id="soldiers" class="list">
      <div id="3" class="element">
        <div id="name" class="text">Smith</div>
      </div>
    </div>
  <div>
</div>
armys: [
  {
    id: 1,
    orders: "My orders",
    soldiers: [
      {
        id: 1,
        name: "John"
      },
      {
        id: 2,
        name: "Esther"
      }
    ]
  },
  {
    id: 2,
    orders: "My orders",
    soldiers: [
      {
        id: 3,
        name: "Smith"
      }
    ]
  }
]