ヘッダー領域にhrefがあります。ユーザーがこのヘッダーをクリックすると、ページの背景が黒から白に変更され、ナビゲーションボタンの色が白から黒に変更されます。私のすべてのボタンには、スリーステートスタイルシートPNGから背景が適用されており、background-position CSSを使用して、background-positionを変更することでホバー効果でボタンを表示しています。
次のようなクリック関数を使用して、jqueryでこれを行うことができます。
$('#HomeButton').click(function () {
if (!siteWhite) {
$('body').css('backgroundColor', 'white');
$('a.pageTitleButton').css({ 'backgroundPosition': '543px 0' });
$('a.pageTitleButton:hover').css({ 'backgroundPosition': '-545px 0' });
}
else {
$('body').css('backgroundColor', 'black');
$('a.pageTitleButton').css({ 'backgroundPosition': '0px 0' });
$('a.pageTitleButton:hover').css({ 'backgroundPosition': '-145px 0' });
}
// Reset site style white bool
siteWhite = !siteWhite;
});
ただし、私のボタンは、黒のテキスト、白のテキスト、赤のテキストの3つの状態を持つスプライトシートです。jqueryで変更される前に通常のスタイルでホバーすると、テキストは白になり、ホバーは赤になります。私がやりたいのは、ヘッダーをクリックして、jqueryでsiteWhiteブール値を変更したときです。これにより、ページの背景が白に変わります。ボタンのデフォルトの状態を、スプライトシートのテキストの黒の位置にします。ホバーします。赤い位置にあります。上記のコードを使用すると、background-positionが変更され、背景が白に変更された後、ホバーが機能しなくなります。
これに取り組むためのより良い方法はありますか?私がやろうとしていることの解決策やヒントをいただければ幸いです。ユーザーがsiteBlackからsiteWhiteにフォームを変更した後、これらの要素を変更するために、まったく新しいスタイルシートをロードする必要はありません。
これが私のCSS/HTMLです。
<a href="#Home" id="HomeButton" class="pageTitleButton"></a>
a.pageTitleButton {
display: block;
width: 546px;
height: 56px;
text-decoration: none;
background: url('../Images/Rollovers/king_harobed.png');
margin: 0px 1.5px 0px 0px;
float: left;
}
a.pageTitleButton:hover {
background-position: -545px 0;
}