JavaScript / DOM - “CSS Selector”和属性之间有区别吗?

时间:2011-08-18 13:19:50

标签: javascript css dom

排除声明性事件处理程序:

<a href='#' onclick=<handler> ... />

属性和CSS选择器之间是否存在任何实质性差异?如果我提供自己的属性:

<a href='#' my-data-node-type='1'/>

“my-data-node-type”是属性,CSS选择器还是两者兼而有之?我想我在这里真正要问的是,术语“属性”和“css选择器”是同义词吗?或者是“css选择器”只有CSS认可的属性才有资格进行样式化?

4 个答案:

答案 0 :(得分:2)

CSS选择器不是属性。它们是用于决定在文档中应用样式的元素的模式。

来自w3c:http://www.w3.org/TR/CSS2/selector.html

  

“在CSS中,模式匹配规则确定哪些样式规则适用于文档树中的元素。这些模式称为选择器,范围可以从简单的元素名称到丰富的上下文模式。如果模式中的所有条件都适用于某个元素,选择器匹配元素。“

在您的情况下,属性名称“my-data-node-type”可以用作CSS选择器的一部分来引用您的链接,但CSS选择器不是属性。属性不是CSS的一部分,它们是您在HTML中的元素标记中找到的数据的名称/值对,以及其他类似的标记语言,例如。

<element my-attribute-name="my-attribute-value" />

这不是标准,但HTML维基百科页面有一个很好的简单语言描述属性:http://en.wikipedia.org/wiki/Html

例如,给定HTML:

<div id="foo">
  <a data-node-type="foo" href="bar">Click me!</a>
</div>

“data-node-type”和“href”是<a>标记的属性,

# while:
div#foo a[data-node-type=foo] 

# or:
div a[href]

# or simply:
a

...是CSS选择器,它将定位<a>,前两个使用其属性。

答案 1 :(得分:1)

css选择器只是css标识要应用样式的元素组的一种方式。属性是元素的属性。

在您的示例中,my-data-node-type ='1'是一个属性。但是,属性可以用作css选择器的一部分。 a [my-data-node-type =“1”]将选择my-data-node-type = 1的所有'a'标签。

答案 2 :(得分:1)

CSS文档中使用了CSS选择器。它是一个字符串,用于按元素名称,id,css或其他任何方式选择要设置样式的元素。

.myDiv, #myDivid是选择器。

“my-data-node-type”可用于选择元素#myDiv a[my-data-node-type='1']

属性是您用来为元素本身设置样式的方法。

#myDiv a[my-data-node-type='1']
{
    color: #000; /*this is an attribute*/
}

希望这有帮助。

答案 3 :(得分:1)

实际上,选择器使用属性(和标记名称)以及类和伪类。

选择器的类型不同,从通用到更具体。

请参阅:http://www.w3.org/TR/CSS2/selector.html

因此,您可以使用属性构建模式(选择器)以将规则应用于它。 (或者,如果使用像JQuery这样的解析库,可以在DOM中找到元素。)

您可以使用哪些选择器取决于CSS引擎实现,有些浏览器不会识别某些伪类。