
やあやあ。好きな男の胸の中でも違う男の夢を見ることでおなじみのdaiです。
私の中でお眠りなさい。私は断じてホモではない。
それはさておいて、Stingerカスタマイズ記事です。
Stingerで作ったブログをスマホで見ると、右上にメニューが出てきます。
クリックするとメニューがにゅっと出てくるので非常に便利です。
非常に便利なんですが、1つだけ気になることがありました。
ページを読み込む際、一瞬メニューが表示されてしまう
ということ。
気にならない人は気にならないんだと思いますが、俺はどうもあの一瞬表示されてしまうアコーディオンメニューがすごい気になっていました。
そこに作成者のENJIさんがこちらの記事にて対処法を書かれており、
「やった!さすが我らのENJIさんや!さすがやでぇ!」
と思ったのもつかの間、現状はなかなか回復しませんでした。
特に読み込みが遅い環境とか、たまたま画像が多いページなんかを開いた時、
まだまだメニューが一瞬表示される現象が続いていたんです。
photo credit: Profound Whatever via photopin cc
よし、オリジナルメニューを作ろう
よし、ここは自分でにゅっと出てくるメニューを作ろうと思い、いろいろと調べて作ることにしました。
今回作るやつはjQueryというよくわからないけどきっと便利な何かを使用します。
普通にワードプレスを使っている方ならデフォルトでjQueryを読み込むようになっていると思うので、
そのままコードを継ぎ足す形で作れます。
完成図
先に完成したものをご紹介します。
こんな感じでタイトルの下にメニューを置いて、クリックすると・・・

このようにメニューがにゅっと出てくる!

もちろんもう一度クリックしたらにゅっとひっこみます。
こんなアコーディオンメニューを作っていきましょう。
※記事内の説明は、Stinger3の最新版「stinger3ver201310231」のソースを元に行います。
書き換える際は、必ずバックアップを取った上で行いましょう。お兄さんとの約束だよっ。
手順①
「外観」→「テーマ編集」からheader.phpを開き、58行目にある<?php wp_head(); ?>のすぐ下にこのコードを貼ります。
<script type="text/javascript">
$(function(){
$('.smmenu2').hide();
$('.smmenu1').click(function(){
$('ul.smmenu2').slideUp();
if($('+ul.smmenu2',this).css('display') == 'none'){
$('+ul.smmenu2',this).slideDown();
}
});
});
</script>
手順②
先ほどのコードを追加した後、同じくheader.phpの79行目~98行目にある
<!--アコーディオン-->
<div class="pcnone">
<div id="s-navi">
<section class="list6">
<dl class="acordion">
<dt class="trigger">
<p><span class="op">About</span></p>
</dt>
<dd class="acordion_tree">
<ul>
<li> <a href="<?php echo home_url();?>" title="トップページ">TOP</a> </li>
<?php wp_nav_menu(array('theme_location' => 'navbar'));?>
</ul>
<div class="clear"></div>
</dd>
</dl>
</section>
</div>
</div>
<!--/アコーディオン-->
この部分を消して、
<div style="margin-top:25px;"></div>
これを書きます。
これで、元々あった右上メニューを削除しました。
するとタイトルが上詰めになってしまうので、margin-top:25px;でタイトルを下に下げています。
手順③
手順②が終わったあと、同じくheader.phpの133行目と134行目の間に改行して、
「?>」のすぐ下にこのコードを貼り付けます。
<!--アコーディオン-->
<ul id="sm_menu">
<div class="smmenu1">◆MENU (click!)</div>
<ul class="smmenu2">
<?php wp_nav_menu(array('theme_location' => 'navbar'));?>
</ul>
</ul>
<div class="clear"></div>
<!--/アコーディオン-->
これでオリジナルのメニューが完成しました。
「◆MENU (click!)」の部分は自由に変更してください。
最後はcssで見た目を整えます。
手順④
smart.cssを開き、一番下にこのコードを追加します。
/* アコーディオンメニュー */
ul#sm_menu, ul.smmenu2{
list-style:none;
margin:0;
padding:0;
}
#sm_menu{
width:100%;
margin:20px 0;
border-bottom:none;
}
.smmenu1{
background:#464646;
color:#fff;
font-size:11pt;
font-weight:bold;
padding:13px 10px 0;
width:100%;
height:35px;
border-top:1px solid #e5e4e6;
border-bottom:1px solid #e5e4e6;
}
.smmenu2 {
display:none;
}
.smmenu2 li{
background:#dcd3b2;
padding:8px 8px 0;
border:1px solid #e5e4e6;
color:#9e9478;
float:left;
font-size:11pt;
font-weight:bold;
height:35px;
margin:1px;
}
これは一例であり自分の好みで設定したので、
皆さんのお好みに合わせていろいろ変更してみてください。
ちなみに、このコードだと、出てくるメニューができるだけ横に敷き詰められる感じになります。
もし縦1列にずらっと並べたい場合は、
上のcssの下の方にある「float:left;」を削除してください。
まとめ
特に難しくもなく、簡単なコードでさくっと導入できるアコーディオンメニュー。
俺は知識が豊富じゃないのでこれぐらいのものしか作れないのと、
処理が重くならないようにということで、すっきりした作りのものを目指しました。
もし導入の上でご不明な点などありましたらお気軽に、めちゃくちゃお気軽にご連絡ください。
では!

