具有内联样式的CSS伪类


131

是否有可能使用内联样式的伪类?


例:

<a href="http://www.google.com" style="hover:text-decoration:none;">Google</a>

我知道上述HTML不能正常运行,但是有类似的东西吗?

附言:我知道我应该使用外部样式表,但确实如此。我只是好奇是否可以使用内联样式来完成。


Answers:


113

不,这是不可能的。在使用CSS的文档中,内联style属性只能包含属性声明。样式表中每个规则集中出现的同一组语句。根据样式属性规范

style属性的值必须与CSS 声明块(不包括定括号)的内容的语法相符,其形式语法在以下CSS核心语法的术语和约定中给出:

declaration-list
  : S* declaration? [ ';' S* declaration? ]*
  ;

选择器(包括伪元素),规则,任何其他CSS构造都不允许。

可以将内联样式视为应用于某些匿名超特定ID选择器的样式:这些样式仅应用于具有该style属性的那个元素。(如果该元素具有该ID,它们也优先于样式表中的ID选择器。)从技术上讲,它不是那样工作的;这只是为了帮助您了解为什么该属性不支持伪类或伪元素样式(它更多地与伪类和伪元素如何提供文档树的抽象表示有关)文档语言)。

请注意,内联样式与规则集中的选择器参与同一级联,并且在级联中具有最高优先级(!important尽管有)。因此,它们甚至优先于伪类状态。以内联样式允许伪类或任何其他选择器可能会引入新的级联级别,从而带来一系列新的复杂性。

还要注意,样式属性规范的非常旧的版本最初确实建议允许这样做,但是由于上面给出的原因,或者因为实现它不是一个可行的选择,因此将其废弃了。


45

不是CSS,而是内联:

<a href="#" 
   onmouseover = "this.style.textDecoration = 'none'"
   onmouseout  = "this.style.textDecoration = 'underline'">Hello</a>

参见示例→


2
是的,我想那是另一种选择。它不是CSS,但适用于:mouseover和mouseout悬停,:focus使用onfocus和onblur以及:active使用onclick。
Web_Designer 2011年

1
这算作javascript吗?我有一个需要内联CSS且没有Javascript的项目。
Aakil Fernandes

7
是的,这是JavaScript。
乔尔·墨菲

1
这是一个不错的选择。使用外部CSS工作表违反OO(面向对象)原则。元素的样式应与元素放在一起。
伊万·胡

1
内联样式的另一点是通过使用虚拟DOM来减少渲染时间。CSS将需要扫描整个文档以进行更改并应用其样式。内联样式消除了这种情况。
Frederik Krautwald

26

无需内联,您可以使用内部CSS

<a href="http://www.google.com" style="hover:text-decoration:none;">Google</a>

你可以有:

<a href="http://www.google.com" id="gLink">Google</a>
<style>
  #gLink:hover {
     text-decoration: none;
  }
</style>

1
在头部外部使用内部CSS是否可以接受?
Thaina

4
@Thaina现在,在HTML5中:html5doctor.com/the-scoped-attribute
Ason

2
@Thaina Funny,遇到另一个问题,我决定做这样的事情,发现该scoped属性已从规格中删除。... developer.mozilla.org/en/docs/Web/HTML/Element/style
Ason

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.