4 に答える
メニュー項目のスタイルを切り替えて展開するためのjavascriptonclick(または同様のもの)があると仮定します。メニュー項目にIDがある場合、トリガーされたJSで、オープン/クローズステータスのテストを使用し、必要に応じてCSS項目をオーバーライドまたはリセットします
document.getElementById("menuItem").style.backgroundImage = "url(black_t_arrow.gif)";
折りたたみ用と展開用の 2 つの CSS クラスが必要です。
HTML:
<a id="expander" class="close" href="#">Click to collapse/expand</a>
CSS:
.close { background-image: url("/images/collapsed.gif"); }
.open { background-image: url("/images/expanded.gif"); }
JavaScript:
/* Useful for multiple CSS classes. */
$('a#expander').click(function(e){
e.preventDefault();
var exp = $(this);
if (exp.hasClass('open')) {
exp.removeClass('open').addClass('close');
} else {
exp.removeClass('close').addClass('open');
}
});
また:
CSS:
a#expander { background-image: url("/images/collapsed.gif"); } /* set default image */
.open { background-images: url("/images/expanded.gif"); }
JavaScript:
/* Swap in/out the class open to override the default background. */
$('a#expander').toggleClass('open');
ここで説明されているように、これは CSS スプライトの仕事のようです。ソリューション用の私の jsFiddle はhereです。
基本的な考え方は、両方の矢印を含む単一の画像を作成することです。この画像を背景として使用しているため、<a>
タグ コンテンツを埋める画像の部分のみが表示されます。ある画像と別の画像を切り替えるには、cssbackground-position
プロパティを変更するだけです。
DOM 対応関数の内部:
$(".expended_div a").on("click", function() {
if(this.css("background-position") == "0px -8px")
this.css("background-position", "0px -31px");
else
this.css("background-position", "0px -8px");
});
これを機能させるには、「black_t_arrow.gif」を次のように変更します。
これの素晴らしいところは、2 番目の画像の読み込み時間がないことです。既に表示されていますが、背景画像がコンテンツ領域よりも大きいため、非表示になっています。
CSSについてはわかりませんが、jquery uiフレームワークを使用している場合は、次のリンクが役立ちます
http://jqueryui.com/accordion/
次のプロパティを使用する必要があります
$( "#accordion" ).accordion({ collapsible: true });
次のコードを試してください:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>jQuery UI Accordion - Default functionality</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.7/jquery-ui.min.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />
<script>
$(function() {
$( "#accordion" ).accordion({ collapsible: true });
});
</script>
</head>
<body>
<div id="accordion">
<h3>Section 1</h3>
<div>
<p>Welcome</p>
</div>
<h3>Section 2</h3>
<div>
<p>Hi</p>
</div>
<h3>Section 3</h3>
<div>
<p>Hello</p>
</div>
<h3>Section 4</h3>
<div>
<p>How are you?</p>
<p>Have a nice day.</p>
</div>
</div>
</body>
</html>
http://api.jqueryui.com/accordion/にある「Accordian」のドキュメントも確認してください。