先日Reactでサイトを作っていたのですが、ハンバーガーメニューを実装したいと思い、ライブラリを探したところ、react-burger-menuというライブラリを見つけました。
今回はreact-burger-menuを使ってハンバーガーメニューを実装する方法やカスタマイズについてかいつまんで説明します。
Githubサイト
react-burger-menuのインストール
コマンドでこちらを入力します。(Node.jsがインストールされている前提です)
npm install react-burger-menu --save
古いバージョンのReactを使っている場合は以下のコマンドを使用します。
npm install react-burger-menu@^2.9.2 --save
使い方
公式サイトには色々書いてありますが、よく使いそうなものをピックアップして紹介します。
JSXファイル
import { slide as Menu } from 'react-burger-menu'
class Burger extends React.Component {
showSettings (event) {
event.preventDefault();
}
render () {
return (
<Menu>
<a id="home" className="menu-item" href="/">Home</a>
<a id="about" className="menu-item" href="/about">About</a>
<a id="contact" className="menu-item" href="/contact">Contact</a>
</Menu>
);
}
}
export default Burger;
ここでは、ファイル名はburger.jsとします。
実装
burger.jsをインポートしてヘッダーの一番上あたりに以下のように記述します。
<Burger/>
幅の調整
<Menu width={ '280px' } />
<Menu width={ '20%' } />
widthプロパティに数値を渡すとハンバーガーメニューの幅の調整ができます。
位置の調整
<Menu right />
rightを渡すと右側にハンバーガーメニューを表示できます。初期値はleftになっています。
CSSの適用
GithubのCSSをちょっとだけ書き換えて日本語の説明を軽く足したものです。
適宜調整してください。
/* バーガーメニューのボタン */
.bm-burger-button {
position: fixed;
width: 28px;
height: 28px;
right: 20px;/* 右にしたい場合はright,左にしたい場合はleft */
top: 20px;
}
/* バーガーメニューのボタンの線 */
.bm-burger-bars {
background: #373a47;
}
/* バーガーメニューのボタンの線(ホバー時)*/
.bm-burger-bars-hover {
background: #a90000;
}
/* 閉じるボタン(Xの周辺) */
.bm-cross-button {
height: 24px;
width: 24px;
}
/* 閉じるボタンのX */
.bm-cross {
background: #bdc3c7;
}
/*バーガーメニューのwrapper*/
.bm-menu-wrap {
position: fixed;
height: 100%;
}
/* バーガーメニューのwrapper */
.bm-menu {
background: #373a47;
font-size: 1.15em;
}
/* bubble or elasticの際に必要 */
.bm-morph-shape {
fill: #373a47;
}
/* アイテムリストのwrapper */
.bm-item-list {
color: #b8b7ad;
}
/* アイテム */
.bm-item {
display: inline-block;
height: 50px;
}
.bm-item-list a{ /* メニューの個々のアイテムの設定 */
display:inline-block;
border-bottom:1px solid #747272;
line-height: 50px;
padding-left: 15px;
text-decoration: none;
color: #fff;
}
.bm-item-list a:hover{ /* 個々のアイテムのホバー */
background-color: #8a9195;
color: aliceblue;
}
/* Styling of overlay */
.bm-overlay {
background: rgba(0, 0, 0, 0.3);
}
デモ
微調整としてburger.jsで以下のように値を渡しています。
<Menu width={ '150px' } right >
まとめ
今回はReactでバーガーメニューを作るのに便利なライブラリと簡単な使い方を紹介しました。細かいカスタマイズも色々できるので、公式などを見て試してみてください。