インラインスタイルのCSS疑似クラス


131

インラインスタイルを使用して疑似クラスを持つことは可能ですか?


例:

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

上記のHTMLが機能しないことはわかっていますが、似たようなものはありますか?

PS私は外部スタイルシートを使用する必要があることを知っています。インラインスタイルを使用してこれを行うことができるかどうかだけ私は気になりました。


回答:


113

いいえ、できません。CSSを使用するドキュメントでは、インラインstyle属性に含めることができるのはプロパティ宣言のみです。スタイルシートの各ルールセットに表示される同じステートメントのセット。スタイル仕様属性

style属性の値は、CSS 宣言ブロック(区切り中括弧を除く)のコンテンツの構文と一致する必要があります。その正式な文法は、CSSコア文法の用語と規則で以下に示されています。

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

セレクター(疑似要素を含む)、at-rules、その他の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を使用する:hover、onfocusとonblurを使用する:focus、およびonclickを使用する:activeで機能します。
Web_Designer 2011年

1
これはJavaScriptとしてカウントされますか?インラインCSSを必要とし、JavaScriptを必要としないプロジェクトがあります。
アーキルフェルナンデス2013

7
はい、これはJavaScriptです。
Joel Murphy

1
これは良いオプションです。外部CSSシートを使用することは、OO(オブジェクト指向)の原則に反します。要素のスタイルは、要素と一緒に配置する必要があります。
Evan Hu

1
インラインスタイルのもう1つのポイントは、仮想DOMを使用してレンダリング時間を短縮することです。CSSは、変更とそのスタイルの適用のためにドキュメント全体をスキャンする必要があります。これはインラインスタイルによって排除されます。
Frederik Krautwald、2015年

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.