WordPressテーマを自作してみる_4

PCのスクショ
PC表示

さて、WPテーマ自作記も4回目です。

ナビゲーションをなんとかしたい

前回、一応レスポンシブデザインの基本的枠組みまではつくりましたが、メインメニューは十分に対応できてないので、今回はそのあたりを。

テーマユニットテストデータのメニューは階層構造になっているので、これに対応せねばなりませぬ。_sのデフォルトではメインメニューは水平並びで、下層はドロップダウンで表示という仕様。スマホサイズではメニューボタン表示になるものの、それを開けばPC表示と同じメニューが展開されるので、ドロップダウンメニューが下のメインメニューに重なったり、深い階層のメニューが表示領域外に出ちゃったりするので修正が必要ですね。

できれば、スマホ表示ではボタンで下層メニューの表示非表示を切り替えたいところですが、_sにデフォルトで入ってる「navigation.js」にはそういう機能まではないので、今回は下層のメニューも同時に表示させるということにします。折り畳みメニューはまたの機会に。

スマホ用専用メニューをつくる

現状では、PC表示もスマホ表示も同じメニューデザインを使っているので、まずそれを分けて、スマホ表示ではメニューを縦並びにして下層メニューも表示させます。

まず、現状のドロップダウンメニューの指定部分をPC表示に限定するために、「_menus.scss」の「.main-navigation」の2番目の「ul」を下記のようにメディアクエリで囲ってしまいます。これはSASSならではの便利なやり方ですよねー。

ul {
	display: none;
	list-style: none;
	margin: 0;
	padding-left: 0;
	@media screen and (min-width: $low-breakpoint) {
		ul {
			background-color: $color__navigation-bar;
			box-shadow: 0 3px 3px rgba(0, 0, 0, 0.2);
			// …略…
		}
	}
	// …略…
}


その上で、「Primary menu」と表示されるボタン「.menu-toggle」と、そのボタンが押されたときに表示される「.main-navigation.toggled ul」を下記のようにメディアクエリでくくってSASSを書いていきます。

/* Small menu. */
@media screen and (max-width: $low-breakpoint) { 
	.menu-toggle,
	.main-navigation.toggled ul {
		display: block;
		li {
			float:none;
			border-bottom: $hairline;
			&:last-child {
				border-bottom: none;
			}
			ul {
				margin-left: 2rem;
				li {
					&:first-child {
						border-top: $hairline;	
					}
				}
			}
		}
	}

	.menu-toggle { 
		margin: 0.5rem;
		padding: 0.5rem 0;
		background: #fff;
		border:none;
		font-size: 1rem;
		font-weight: bold;
	}
}

途中の$hairlineという変数はボーダーの太さ、種類、色等々の指定です。階層構造をわかりやすくするためにメニュー項目間に入れています。トグルボタンの見た目も違和感のないように修正しています。ボタンに表示されている「Primary menu」という文字は、「header.php」の45行目あたりを下記のように(「メニュー」とあるところ)修正してます。

<nav id="site-navigation" class="main-navigation">
	<div class="main-navi-inner">
		<button class="menu-toggle" aria-controls="primary-menu" aria-expanded="false">
<?php esc_html_e( 'メニュー', 'original_theme' ); ?></button>

というわけで、以上で見た目はともかく、_sのファイルを活かしつつ、一応レスポンシブで、ワークするテーマの基本的枠組みはできたかなー的な感じです。折り畳みメニューについては、もうちょっといろいろ調べないとあかんようですので、とりあえず本日はこれにて。

iPhoneのスクショ
スマホ表示メニュー閉じてる画面
iPhoneのスクショ
スマホ表示メニュー開いた画面
%d人のブロガーが「いいね」をつけました。