2013-05-21 2 views
10

私はマークアップしている場合:擬似要素がホバーをトリガーしないようにしますか?

.Aクラスはそれ

に関連したホバークラスを持っていると.Bクラスは、それに関連付けられた擬似要素を持っている...ので、同じよう

<div class="a b"></div> 

div 
{ 
    width: 100px; 
    height: 100px; 
} 
.a { background: red; display: inline-block; } 
.a:hover { background: green; } 

.b:after 
{ 
    content: ''; 
    display: inline-block; 
    width: 100px; 
    height: 100px; 
    margin-left: 100px; 
    background: pink; 
} 

擬似要素が.aクラスホバーをトリガーしないようにすることは可能ですか?

FIDDLE

+0

あなたはあなたが望む方法と持っている方法のスナップショットを提供できますか? – Nitesh

+0

擬似要素は実要素の子であるため、Afaikは可能ではありません。 – powerbuoy

+0

** **セレクタのヘルプはできませんでしたか? – Danield

答えて

23

次のCSSは、最近のブラウザ(not IE10-)のためのトリックを行います。

.b:after { 
    pointer-events: none; 
} 

pointer-events: noneは要素がホバー/クリックイベントを受信しないことができます。

this fiddleを参照してください。非SVG要素の


注意

pointer-events支持相対初期状態です。非SVG要素のCSSでのポインタのイベントの使用が 実験で

developer.mozilla.orgはあなたに次の警告を与えます。この機能はCSS3 UI草稿 仕様に含まれていましたが、未解決の問題が多数あるため、 CSS4に延期されました。 display: inline-block

Chromeのボックスモデルの解釈はthe above fiddleでちらつきの原因となります。
代わりにdisplay: blockに切り替えると、適切な解釈が得られます。
Firefoxにこの問題はありません。フリッカー効果を見るためにChromeで

.b:after { 
    pointer-events: none; 
    display: block; 
} 

ビューthis fiddle
は、一貫性のあるボックスモデルの解釈を確保するために、次を使用します。

+0

'+ 1'ニーストリック。 –

+0

うーん、それは良い考えですが、私はちらつきを見ています...任意のアイデアですか? – Danield

+0

Hrm、私はちらつきを見ることができません。どのブラウザ/ OSを使用していますか? – tessi

関連する問題