個人的には、JavaScriptコードを使用して2つのクラスを切り替えるだけです。
CSSにdivで必要なすべての概要を示すバックグラウンドルールを設定してから、2つのクラス(たとえば、展開と折りたたみ)をルールとして追加し、それぞれに正しい背景画像(スプライトを使用する場合は背景の位置)を追加します。
異なる画像のCSS
.div {
/* button size etc properties */
}
.expanded {background: url(img/x.gif) no-repeat left top;}
.collapsed {background: url(img/y.gif) no-repeat left top;}
または画像スプライト付きのCSS
.div {
background: url(img/sprite.gif) no-repeat left top;
/* Other styles */
}
.expanded {background-position: left bottom;}
その後...
画像付きJavaScriptコード
$(function){
$('#button').click(function(){
if($(this).hasClass('expanded'))
{
$(this).addClass('collapsed').removeClass('expanded');
}
else
{
$(this).addClass('expanded').removeClass('collapsed');
}
});
}
スプライトを使用したJavaScript
注:エレガントなtoggleClassはInternet Explorer 6では機能しませんが、以下のaddClass
/ removeClass
メソッドはこの状況でも正常に機能します
最もエレガントなソリューション(残念ながらInternet Explorer 6に対応していません)
$(function){
$('#button').click(function(){
$(this).toggleClass('expanded');
});
}
$(function){
$('#button').click(function(){
if($(this).hasClass('expanded'))
{
$(this).removeClass('expanded');
}
else
{
$(this).addClass('expanded');
}
});
}
私の知る限り、この方法はブラウザー全体で機能し、スクリプト内のURLの変更よりもCSSやクラスを使用する方がはるかに快適です。