記事の内容やaishipシリーズに関するお問い合わせはこちらから

0120-173-163 お電話

[電話受付時間]平日9:30〜19:00

TOP

CATEGORY

SERVICE

【レスポンシブ】HTMLとCSSで固定ヘッダーメニューを作成する

【レスポンシブ】HTMLとCSSで固定ヘッダーメニューを作成する

多くのサイトでは画面遷移がしやすい等のメリットから固定ヘッダーメニューを実装するケースが増えてきました。

そこで、今回は実際に固定ヘッダーメニューのメリットデメリットを解説し、その作成方法を紹介していきます。

レスポンシブな固定ヘッダーメニューのメリット

レスポンシブな固定ヘッダーメニューには以下の二つのメリットがあると言えます。

ユーザーの回遊率を上げる

ユーザーの回遊率、つまり一度の訪問での閲覧数をあげることができます。ユーザーは画面内にリンクがなければそのサイトを離脱しようとするかもしれませんが、固定ヘッダーメニューのようなリンクを設置しておけば、他のページも閲覧してくれるかもしれません。

ランディングページのような縦に長いページでもすぐ画面遷移をおこなえる

ランディングページのような縦長になりがちなページですと、最上部と最下部にしかリンクを設置していないサイトではユーザーが画面遷移しづらいです。

しかし、固定ヘッダーメニューが設置されていればすぐ画面遷移を行うことができ、ユーザービリティが改善されます。

またスマホ画面だとさらに縦長なページになるので、より固定ヘッダーメニューが有効になってきます。

レスポンシブな固定ヘッダーメニューのデメリット

しかし、そんな固定ヘッダーメニューにもデメリットが二つあります。

画面領域が狭くなる

固定されたヘッダーメニューは常に上部の領域を使用してしまうため、本来のページの表示領域が少なくなってしまいます。

ユーザーが意図せずヘッダーメニューをタップしてしまう可能性がある

特にスマホ画面の場合、ユーザーは誤ってページ上部をタップしてしまい、意図せず画面遷移をしてしまうかもしれません。これでは、ユーザーにストレスを与えてしまい、ページを離脱する原因となってしまいます。

この問題に関しては、開閉できるヘッダーメニューやメニューの表示非表示ができるハンバーガーメニューを実装をすることで解決できます。

レスポンシブな固定ヘッダーメニューを作成する

基本的な固定ヘッダーメニュー

上記のメリットデメリットをふまえて、ここからはHTMLとCSSを使用してレスポンシブな固定ヘッダーメニューを作成します。まずはよく見かける基本的なヘッダーメニューからです。例1のページを開いてみてください。
例1 基本的な固定ヘッダーメニュー

以下例1のコードです
HTML

<div id="wrapper">
	<nav id="global-navi">
		<ul class="menu">
			<li><a href="">コンテンツA</a></li>
			<li><a href="">コンテンツB</a></li>
			<li><a href="">コンテンツC</a></li>
			<li><a href="">コンテンツD</a></li>
			<li><a href="">コンテンツE</a></li>
		</ul>
	</nav>
</div>
<div class="content">
この文章はダミーです。以下省略
</div>

CSS

#global-navi {
	background:#333;
    position: fixed;
    top: 0;
    right: 0px;
    width: 100%;
}
#wrapper nav ul li{
display:inline-block;
font-size: 16px;
padding:  30px 20px 25px 28px;
}
#wrapper nav ul li a{
color: #ddd
}
.content{
    line-height: 1.6;
    margin: 0 auto;
    padding-top: 100px;
    width: 800px;
}
.content p{
    margin-bottom: 40px;
}

重要なのは#global-naviの「position: fixed;」です。このプロパティを適用することによって要素(今回はヘッダーメニュー)を固定することができます。

このヘッダーメニューだとスマホ画面では少し窮屈に感じてしまうので、次にスマホ画面でもスペースを確保できるレスポンシブなヘッダーメニューを実装していきます。

レスポンシブな固定ヘッダーメニュー

以下のページにレスポンシブな固定ヘッダーメニューを作成します。スマホ画面はPC画面に比べ画面が小さいので、ハンバーガーメニューとしてメニューを表示非表示させる仕組みを実装しました。例2を開いてみてください。
例2 レスポンシブな固定ヘッダーメニュー
以下例2のコードです。
HTML

<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>
<div id="wrapper">
	<p class="btn-gnavi">
		<span></span>
		<span></span>
		<span></span>
	</p>
	<nav id="global-navi">
		<ul class="menu">
			<li><a href="">コンテンツA</a></li>
			<li><a href="">コンテンツB</a></li>
			<li><a href="">コンテンツC</a></li>
			<li><a href="">コンテンツD</a></li>
			<li><a href="">コンテンツE</a></li>
		</ul>
	</nav>
	
</div>
<div class="content">
この文章はダミーです。以下省略
</div>

CSS

#global-navi {
	background:#333;
    position: fixed;
    top: 0;
    right: 0px;
    width: 100%;
    
}
#wrapper nav ul li{
display:inline-block;
font-size: 16px;
padding:  30px 20px 25px 28px;
}
#wrapper nav ul li a{
color: #ddd
}
/*スマホ画面でハンバーガーメニューの形にする*/
@media screen and (max-width: 600px) {
#wrapper nav {
    position: fixed;
    top: 0;
    right: -300px;
    width: 300px;
    height: 100%;
    padding-top: 50px;
    background:#333;
    font-size: 16px;
    box-sizing: border-box;
    z-index: 2
}
#wrapper nav ul li {
    display:block;
    padding: 20px 28px
}

#wrapper nav ul li a {
    text-decoration: none;
    color: #ddd
}

#wrapper .btn-gnavi {
    position: fixed;
    top: 20px;
    right: 20px;
    width: 30px;
    height: 24px;
    z-index: 3;
    box-sizing: border-box;
    cursor: pointer;
    -webkit-transition: all 400ms;
    transition: all 400ms
}

#wrapper .btn-gnavi span {
    position: absolute;
    width: 30px;
    height: 4px;
    background: #666;
    border-radius: 10px;
    -webkit-transition: all 400ms;
    transition: all 400ms
}

#wrapper .btn-gnavi span:nth-child(1) {
    top: 0
}

#wrapper .btn-gnavi span:nth-child(2) {
    top: 10px
}

#wrapper .btn-gnavi span:nth-child(3) {
    top: 20px
}

#wrapper .btn-gnavi.open {
    -webkit-transform: rotate(180deg);
    transform: rotate(180deg)
}

#wrapper .btn-gnavi.open span {
    background: #666
}

#wrapper .btn-gnavi.open span {
    width: 24px;
}
#wrapper .contents section p {
    position: absolute;
    top: 50%;
    width: 30%;
    line-height: 1.4;
    font-size: 20px;
    color: #fff;
    text-shadow: 0 0 6px #666
}

#wrapper .contents section:nth-child(odd) p {
    left: 10%
}

#wrapper .contents section:nth-child(even) p {
    right: 10%
}
}
.content{
    line-height: 1.6;
    margin: 0 auto;
    padding-top: 100px;
}
.content p{
    margin-bottom: 40px;
}

jQuery

$(function(){
	$(".btn-gnavi").on("click", function(){
		// ハンバーガーメニューの位置を設定
		var rightVal = 0;
		if($(this).hasClass("open")) {
			// 位置を移動させメニューを開いた状態にする
			rightVal = -300;
			// メニューを開いたら次回クリック時は閉じた状態になるよう設定
			$(this).removeClass("open");
		} else {
			// メニューを開いたら次回クリック時は閉じた状態になるよう設定
			$(this).addClass("open");
		}

		$("#global-navi").stop().animate({
			right: rightVal
		}, 200);
	});
});

スマホ画面ではハンバーガーメニューを実装することで、固定されていたとしても充分なスペースを確保することができました。また表示非表示の切り替えができるので、ユーザーが不要なタップをするというリスクを軽減することができます。

スマホ画面にて実装したハンバーガーメニューに関しては、以下のページで詳しく解説されてます。
【jQuery&CSS】レスポンシブなハンバーガーメニューを作成する

まとめ

今回の記事では、レスポンシブな固定ヘッダーメニューのメリットデメリットと、その作成方法について解説してきました。

一長一短だと思われるので、自身のサイトに合わせて適宜実装してほしいと思います。

                   
クラウドECのサイト構築はaishipR-カスタマイズ可能なASP実績No.1

累計2000社以上の導入の総合通販型カートシステムで、カスタマイズ性が高く、デザインの自由度はもちろん、各種システムとの連携や機能追加等も独自のカスタマイズができるため、こだわりのある本格的な通販を月額9,800円から実現できます。 またモバイルファースト設計や月2回の無償バージョンアップなどの特徴があり、使いやすさと最新性を追求した通販サイトを構築できます。 さらに信頼性の高いサーバーを採用しており大規模アクセスにも対応できるため、これからさらに通販での売上を伸ばされたい事業者様におすすめです。
         

WEBデザインカテゴリの最新記事