jQueryなど便利なライブラリもいいですが、軽量でカスタマイズ自由自在なオリジナリティあふれるネイティブJavaScriptを書くのもいいかも。
jQueryなど便利なライブラリもいいですが、軽量でカスタマイズ自由自在なオリジナリティあふれるネイティブJavaScriptを書くのもいいかも。

アコーディオン

注意
これらの記事は2016年当時の物で結構古いです。モダンブラウザでは不要な記述やJavaScriptでなくともCSSで実現できる機能もあります。 当時の記録として残してありますがあまり参考になるものではありません。
概要
アコーディオンメニューの実装です。
jQueryでの実装例がよく知られていますが、HTML5+CSS3では以下のコードだけで書けます。
使用方法
JavaScript、html、cssの3つで可能です。
JavaScriptはhtmlの最後に置きます。
備考
これだけで実装できますのでjQueryを使うまでもないですね。

/**
 * アコーディオン
 *
 * @author ao-system
 */
(function(window,document){
	var _toggleMenuButton = document.getElementById('toggleMenuButton');
	var _toggleMenu = document.getElementById('toggleMenu');
	var _clientH;
	init();
	function init() {
		_toggleMenu.style.height = 'auto';
		_clientH = _toggleMenu.clientHeight;
		_toggleMenu.style.height = '0px';
		_toggleMenuButton.addEventListener('click',function(){clickToggle();},false);
	}
	function clickToggle() {
		var lastH = _toggleMenu.style.height;
		_toggleMenu.style.height = (lastH == '' || lastH == '0px') ? _clientH + 'px' : '0px';
	}
})(window,document);
	

<button id="toggleMenuButton">ボタン</button>
<div id="toggleMenu">
	<ul>
		<li>top</li>
		<li>about</li>
		<li>contact</li>
	</ul>
</div>
	

#toggleMenu {
	overflow: hidden;
	transition: all 0.5s;
	background-color: #eee;
}
	
実装例
  • top
  • about
  • contact