ホバーされたテキストが黒でラベル付けされるハイライト効果を作成しようとしています。HTML の構造では、このコンテンツは右側にフローティングします。
div
問題は、タグの領域全体ではなく、WORD のみを強調表示したいことです。何か案は?
ホバーされたテキストが黒でラベル付けされるハイライト効果を作成しようとしています。HTML の構造では、このコンテンツは右側にフローティングします。
div
問題は、タグの領域全体ではなく、WORD のみを強調表示したいことです。何か案は?
簡単な解決策は、テキストコンテンツを追加の要素でラップし、それに背景色属性を追加することです。たとえば、<span>
要素。
<div id="item 4" class="command"><span>item 4</span></div>
その場合、jQueryコードは次のようになります-
$('.command').hover(function() {
$(this).find('span').addClass("select");
},function() {
$(this).find('span').removeClass("select");
});
または、ホバーイベントを内部に追加することもできます<span>
-
$('.command > span').hover(function() {
$(this).addClass("select");
},function() {
$(this).removeClass("select");
});
「単語」とは、 (個々の単語ではなく)テキストの背景に色を付けることを意味すると仮定すると、ホバーした.command
要素の内容span
をselect
クラス名でラップすることにより、次の目的を達成する必要があります。
$('.command').hover(function() {
$(this).html(
function(i,h){
return '<span class="select">' + h + '</span>';
});
}, function() {
$(this).closest('.command').find('span').contents().unwrap();
});
Lixがコメントで正しく指摘しているように、このソリューションでは、ホバーされた要素のすべてのコンテンツがspan
(ブロックレベルの要素が含まれている可能性がある場合は、おそらくdiv
より良い)でラップされることを覚えておくことが重要です。選択)そして、mouseleave
これで要素から含まれているすべてのスパンを削除します。これらのコメントは正確です。mouseenter
具体的に、より具体的にするために、上記を次のように修正しmouseleave
ます。
$('.command').hover(function() {
$(this).html(
function(i,h){
return '<div class="select">' + h + '</div>';
});
}, function() {
$(this).closest('.command').find('div.select').contents().unwrap();
});
この後者の提案により、テキストのみを強調表示するためにCSSを修正しました(div
動作が)とは異なるためspan
、次のようになります。
.select {
background: #000;
color: #FFF;
white-space: pre;
padding: 0;
display: inline;
}
.select クラスを次のように変更します。
.select{ color:red; white-space:pre}
背景色が削除されました (元の .select から)。color プロパティは、ハイライト カラーとして必要な任意の色にすることができます。
CSS の詳細については、https ://developer.mozilla.org/en-US/docs/CSS/CSS_Reference をご覧ください。
JSは必要ありません。これを変更/追加するだけですCSS
:
.command{
margin-left:50%;
display:inline;
}
.command:hover{
background:#000;
color:#FFF;
}