先日シロマティさんの『Brooklyn』にテーマを変えました。
デザインいい!でも「ドロップダウンメニューにしたいなぁー」とずーっと思ってたんですがなかなかいいのがない。自分でも作れないし…。って思ってたら 発見!!
はてな界のカスタムマスターゆきひーさん!ゴイゴイスー!
しかしこのまま使うとデザイン的に合わない…。
でも大丈夫。
私、CSSを組むことはことはできませんが、これのおかげでいじることはできます!(ドヤ!)
『Brooklyn』用にカスタマイズ
ゆきひーさんの作ったものは文字サイズだったり、色が『Brooklyn』にはちょっと合いません。
ですので、テーマデザインに忠実にカスタムしました。
CSS
これが手を加えたコードです。これをまるっとコピーして【デザイン→デザインCSS】にペーストして下さい。
/*******グローバルナビ********/
.slideButton {
display: none;
}
#slideMenu {
position: relative;
width: 100%;
height: 40px;
background-color: #000000;/*メニューの背景色*/
}
#slideMenu > .slideMenuInner {
list-style-type: none;
width: 960px;/*メニューの横幅を*/
height: 100%;
margin: 0 auto;
padding-left: 0;
}
#slideMenu > .slideMenuInner li {
position: relative;
float: left;
height: 100%;
text-align: center;
}
#slideMenu > .slideMenuInner > li a {
display: block;
position: relative;
z-index: 2;
height: 100%;
padding-right: 40px;/*文字の左の余白*/
padding-left: 40px;/*文字の右の余白*/
background-color: #000000;/*文字の背景色*/
color: #fff;/*文字色*/
font-size: 100%;
text-decoration: none;
line-height: 40px;
}
#slideMenu > .slideMenuInner > li:hover a {
background-color: #555;/*文字の背景色(マウスホバー時)*/
}
/*2階層目*/
#slideMenu > .slideMenuInner > li > ul.second-level {
visibility: hidden;
list-style-type: none;
position: absolute;
z-index: -1;
top: 0;
margin: 0;
padding-left: 0;
}
#slideMenu > .slideMenuInner > li:hover > ul.second-level {
visibility: visible;
z-index: 1;
top: 40px;
transition: all .3s;
}
#slideMenu > .slideMenuInner > li:hover > ul.second-level > li {
width: 200px;
height: 40px;
text-align: center;
}
#slideMenu > .slideMenuInner > li:hover > ul.second-level > li > a {
display: block;
background-color: #000000;/*子メニューの文字の背景色*/
color: #fff;/*子メニューの文字色*/
font-size: 100%;
text-decoration: none;
line-height: 40px;
}
#slideMenu > .slideMenuInner > li:hover > ul.second-level > li > a:hover {
background-color: #555;/*子メニューの背景色(マウスホバー時)*/
}
/*2階層目ここまで*/
/******スライドメニュー*******/
@media screen and (max-width:960px) {/*1*/
#menuButton {
z-index: 10;
width: 100%;
background-color: #000000;/*メニューバーの色*/
}
#menuButtonInner {
position: relative;
width: 100%;
margin: 0 auto;
text-align: right;
}
.slideButton {
display: inline-block;
margin: 5px;
padding: 8px 15px;
background-color: #000000;/*「MENU」の背景色*/
color: #fff;/*「MENU」の文字色*/
font-size: 100%;
text-decoration: none;
cursor: pointer;
}
#slideMenu {
overflow-x: hidden;
overflow-y: auto;
position: absolute;
z-index: 20;
top: 0;
right: -260px;
width: 260px;
height: 100%;
margin: 0;
padding: 0;
box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2);
}
#slideMenu > .slideMenuInner {
position: static;
width: 100%;
height: 100%;
}
#slideMenu > .slideMenuInner > li {
display: block;
position: relative;
float: none;
width: 100%;
height: 40px;
margin: 0 auto;
border-top: 1px solid #eee;
text-align: center;
}
#slideMenu > .slideMenuInner > li a {
display: block;
position: relative;
z-index: 1;
width: 100%;
height: 100%;
padding: 0;
background-color: #fff;/*スライドメニューの背景色*/
color: #333;/*スライドメニューの文字色*/
font-size: 70%;
font-weight: bold;
line-height: 40px;
}
#slideMenu > .slideMenuInner > li:hover a {
background-color: #fff;/*スライドメニューの背景色(マウスホバー時)*/
color: #333;/*スライドメニューの文字色(マウスホバー時)*/
}
#slideMenu > .slideMenuInner > li > a:active {
opacity: .8;
}
#slideMenu > .slideMenuInner > li:hover > ul.second-level {
display: none;
}
.closeArea {
height: 100%;
background-color: #000000;/*クローズエリア(スライドメニューの下の部分)の色*/
cursor: pointer;
}
#layer {
display: none;
position: fixed;
z-index: 10;
top: 0;
width: 100%;
height: 150%;
background-color: #222;/*レイヤーの色*/
opacity: .4;/*レイヤーの透明度*/
cursor: pointer;
}
}
HTML&jQuery
次に以下のコード【デザイン→ヘッダ→タイトル下】にペーストします。
<!--グローバルメニュー-->
<div id="menuButton">
<div id="menuButtonInner">
<span class="slideButton"><i class="blogicon-list lg"></i> MENU<br></span>
</div>
</div>
<div id="slideMenu">
<ul class="slideMenuInner">
<li><a href=''>カテゴリ1</a>
<ul class="second-level">
<li><a href=''>カテゴリ1-1</a></li>
<li><a href=''>カテゴリ1-2</a></li>
<li><a href=''>カテゴリ1-3</a></li>
</ul>
</li>
<li><a href=''>カテゴリ2</a>
<ul class="second-level">
<li><a href=''>カテゴリ2-1</a></li>
<li><a href=''>カテゴリ2-2</a></li>
<li><a href=''>カテゴリ2-3</a></li>
</ul>
</li>
<li><a href=''>カテゴリ3</a>
<ul class="second-level">
<li><a href=''>カテゴリ3-1</a></li>
<li><a href=''>カテゴリ3-2</a></li>
<li><a href=''>カテゴリ3-3</a></li>
</ul>
</li>
<li><a href=''>カテゴリ4</a>
<ul class="second-level">
<li><a href=''>カテゴリ4-1</a></li>
<li><a href=''>カテゴリ4-2</a></li>
<li><a href=''>カテゴリ4-3</a></li>
</ul>
</li>
<li><a href=''>カテゴリ5</a>
<ul class="second-level">
<li><a href=''>カテゴリ5-1</a></li>
<li><a href=''>カテゴリ5-2</a></li>
<li><a href=''>カテゴリ5-3</a></li>
</ul>
</li>
<li><a href=''>カテゴリ6</a>
<ul class="second-level">
<li><a href=''>カテゴリ6-1</a></li>
<li><a href=''>カテゴリ6-2</a></li>
<li><a href=''>カテゴリ6-3</a></li>
</ul>
</li>
<div class="closeArea"></div>
</ul>
</div>
<div style="clear:both;"> </div>
<div id="layer"> </div>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$(function(){
var menu = $('#slideMenu'),
closeArea = $('.closeArea'),
slideButton = $('.slideButton'),
content = $('body'),
layer = $('#layer'),
menuWidth = menu.outerWidth();
slideButton.click(function(){
slideOpen();
});
layer.click(function(){
slideClose();
});
closeArea.click(function(){
slideClose();
});
function slideOpen(){
menu.animate({'right' : 0 }, 300);
layer.show();
content.addClass('open');
}
function slideClose(){
menu.animate({'right' : -menuWidth }, 300);
layer.hide();
content.removeClass('open');
};
$(window).resize(function(){
var win = $(window).width();
var p = 960;//1
if(win > p){
menu.animate({'right' : 0 }, 300);
}else{
menu.animate({'right' : -menuWidth }, 300);
layer.hide();
}
});
});
</script>
親カテゴリと子カテゴリのアドレスやカテゴリ名を編集
以下の部分を編集します。
<li><a href=''>カテゴリ1</a>
<ul class="second-level">
<li><a href=''>カテゴリ1-1</a></li>
<li><a href=''>カテゴリ1-2</a></li>
<li><a href=''>カテゴリ1-3</a></li>
</ul>
</li>以下のコードの「''」の間にリンク先のアドレスを入れます。
<a href=''>
次に親カテゴリ名と小カテゴリ名を編集します。
あとはいらない部分を削除して終わりです!
その他幅などの変更は、CSSで組んだドロップダウンメニューとスライドメニューを両立させたレスポンシブなメニューの作り方【コピペでOK】 - Yukihy Lifeに詳しく書いてあります。
ゆきひーさん(id:ftmaccho)、シロマティさん(id:shiromatakumi)、ありがとうございました!
最初のほうでいいましたが、僕もこれで勉強中です。素人に優しいめっちゃわかりやすい本です!