CSSで:hoverとして機能するインラインスタイル


90

影響を受けるHTMLタグにCSSスタイルを直接埋め込むと、CSSの目的の多くが損なわれることは知っていますが、次のようにデバッグの目的で役立つ場合があります。

<p style="font-size: 24px">asdf</p>

次のようなルールを埋め込むための構文は何ですか。

a:hover {text-decoration: underline;}

Aタグのスタイル属性に?明らかにこれではありません...

<a href="foo" style="text-decoration: underline">bar</a>

...ホバー中だけではなく、常に適用されるためです。


理論的には、ホバーを動的なものにしようとしている場合は、javascriptを使用して、既存のシートのwindow.document.styleSheetsリストを使用してスタイルシートにホバールールを挿入できます。
GAgnew 2011年

回答:


95

恐れ入りますが、疑似クラスセレクターをインラインで設定することはできません。ページまたはスタイルシートで行う必要があります。

私がいることを言及する必要があり、技術的にあなたがすべきことを行うことができるCSSの仕様に応じて、ほとんどのブラウザがそれをサポートしていません。

編集:私はこれで簡単なテストをしました:

<a href="test.html" style="{color: blue; background: white} 
            :visited {color: green}
            :hover {background: yellow}
            :visited:hover {color: purple}">Test</a>

また、IE7、IE8ベータ2、Firefox、Chromeでは機能しません。他の誰かが他のブラウザでテストできますか?


3
これは非常に優先度の低いCSS3ワーキングドラフトであり、6年間更新されていません。仕様から: 'W3Cワーキングドラフトを参照資料として使用したり、「進行中の作業」以外として引用したりすることは不適切です。'
ジム

1
本当ですが、ブラウザはいくつかのCSS3ルールを実装していますが、このコンテキストではおそらく間違った言葉であるはずです
Glenn Slaven

ブラウザは通常、さらなる開発状態にあるCSS機能を実装します。たとえば、不透明度はCSSカラー(ラストコール)からのものであり、メディアクエリは推奨候補です。
ジム

style = ":hover {}"は、スタイルシートの "a {:hover {}}"と同等ではないでしょうか?それは明らかに構文エラーです。
kornel

32
この回答は非常に昔に投稿されたものであり、それ以降、関連するW3C仕様の現在のバージョンであるCSS Style AttributeRecが変更されています。(w3.org/TR/css-style-attr/#syntax)—スタイル属性にはCSS宣言ブロックのコンテンツのみを含めることができることを明確に示しています。そのため、style属性を持つ疑似要素を挿入することはできなくなりました。
Ilya Streltsyn 2014年

24

デバッグのみを行う場合は、javascriptを使用してcssを変更できます。

<a onmouseover="this.style.textDecoration='underline';" 
    onmouseout="this.style.textDecoration='none';">bar</a>

1
JSFで解決策を探しましたが、これは私がそれを修正するのに役立ちました。onmousemove = "this.style.color = '## {cc.attrs.color}';" onmouseout = "this.style.color = 'white';"
kdoteu 2014年

17

簡単な解決策:

   <a href="#" onmouseover="this.style.color='orange';" onmouseout="this.style.color='';">My Link</a>

または

<script>
 /** Change the style **/
 function overStyle(object){
    object.style.color = 'orange';
    // Change some other properties ...
 }

 /** Restores the style **/
 function outStyle(object){
    object.style.color = 'orange';
    // Restore the rest ...
 }
</script>

<a href="#" onmouseover="overStyle(this)" onmouseout="outStyle(this)">My Link</a>

16

デバッグ用の場合は、ホバリング用のcssクラスを追加するだけです(要素は複数のクラスを持つことができるため)。

a.hovertest:hover
{
text-decoration:underline;
}

<a href="http://example.com" class="foo bar hovertest">blah</a>

2
これはおそらく、目的の効果を得るのに最も近いものです
Glenn Slaven

1

私は、onmouseoverおよびonmouseoutの動作を使用して、CSSなしでホバーポップアップを作成したい人のための簡単なソリューションをまとめました。

http://jsfiddle.net/Lk9w1mkv/

<div style="position:relative;width:100px;background:#ddffdd;overflow:hidden;" onmouseover="this.style.overflow='';" onmouseout="this.style.overflow='hidden';">first hover<div style="width:100px;position:absolute;top:5px;left:110px;background:white;border:1px solid gray;">stuff inside</div></div>

0

その<p>タグがJavaScriptから作成されている場合は、別のオプションがあります。JSSを使用して、プログラムでスタイルシートをドキュメントヘッドに挿入します。サポートし'&:hover'ます。https://cssinjs.org/


-2

jQueryも疑似セレクターをサポートしているとは思いませんが、1つのページで、1つ、多数、またはすべての同様のコントロールとタグにイベントをすばやく追加する方法を提供します。

何よりも、必要に応じて、イベントバインドをチェーンし、すべてを1行のスクリプトで実行できます。すべてのHTMLを手動で編集してオンまたはオフにするよりもはるかに簡単です。繰り返しになりますが、CSSでも同じことができるので、(jQueryの学習以外に)何かを購入できるかどうかはわかりません。

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