一个类中的后代选择器

时间:2011-05-25 21:30:12

标签: html css css-selectors

我可以很好地理解这个Selectutorial基于后代选择器的基于元素/标签的内容,它们的工作方式和原因以及用途。

但后来我遇到了某些网站,这些网站定义了一个锚<a>的类名,它由几个以空格分隔的名称组成,例如。

<a class="samename nav_item samename" href="/messages/?refid=7"> Text </a>

然后我发现这些也被称为“descendant selectors” - 或称为descendant combinators

这是我不理解的地方:

  1. 是第二种类型的“后裔” 选择器“与第一类相同?
  2. 是第二种类型的“后代 选择器“有一个different name, 这可以帮助我区分它 从第一种类型来看 它?
  3. 第二种类型的目的是什么? “后代选择者”?
  4. 为什么要重复samename 后代选择器?
  5. 我非常感谢任何有关第二种类型的地方的提示或指示。

    编辑:以下回复有助于将订单纳入事项,特别是在正确的术语方面。到目前为止,我将尝试总结一下我的理解 - 首先尝试以相应的方式回答上述问题,然后列出一些见解,希望它可以帮助像我这样的未来的css-laymen:

    1. 第二种不是“后代” 选择器“根本没有,所以它不能 可能与第一个相同 类型。
    2. 目前第二种类型的名称 是multiple class names assigned to the same tag
    3. 每个元素归因于多个类的一个用法是,然后可以链接类选择器,这样只有匹配列出了所有类的元素,而不是那些具有一个或多个类的元素。
    4. 这很可能是一个编程错误/错误/错误(尽管我在一个非常着名的网站上发现它)。
    5. 见解(如果发现错误,请更正):

      1. 尽管写了什么 w3schools,一个类(名称)是 选择器!选择器只能是HTML元素。
      2. 但是,CSS rule可能会引用 到一个HTML元素(或一组 HTML元素)按类名,使用 .classname表示法。这个 有些人称之为符号 “the class selector”和这个 是我的困惑所源自的地方。它仅仅意味着它可以用于选择任何具有属性类的HTML元素。
      3. CSS规则也可以指HTML 元素(或一组HTML 元素)按元素id,使用 #elementid符号。这是个 完全不同的主题但从那时起 某些人提到了这种表示法 作为“the id selector”它是相当的 可能这可能是一个来源 混乱也是如此,所以这是短暂的 这里提到。
      4. 在HTML中,“class”是一个属性。在 CSS,它是一个“selector aggregator”, 用于选择任何HTML元素 有这个类属性。
      5. 到目前为止,最好的CSS 教程Selectutorial

2 个答案:

答案 0 :(得分:5)

只有一个CSS后代选择器,即空格字符:

E F /* Selects any F that descends from (or is contained by) an E */

空格分隔的类名只是在单个HTML class属性中由空格分隔的多个类。 class属性不是选择器,实际上甚至不是CSS的一部分。

然而,在某个相关的注释中,每个元素列出多个类的一个用法是,您可以链接类选择器,这样只有所有所列类的元素才匹配,而不是那些有一个或多个类。例如:

.samename.nav_item /* Selects only elements that have both classes */

至于为什么在你给定的HTML中重复samename,我不知道。它与只有一个samename类相同。

答案 1 :(得分:4)

在你的例子中,a标签实际上有几个不同的类(由于某种原因,其中一个列出了两次)。

在CSS代码中,我们使用空格来分隔后代选择器,但在HTML中它只是让我们将几个类放在同一组括号中。