9月更新・前月(8月)の人気記事トップ10 09/02/2024
- ( 01 – ) 【Labs】position:absoluteとwidth:100%を指定すると横幅の設定がうまくいかない場合の対処方法について
- ( 07 ↑) 【Mac】macOSをHigh SierraからMontereyにアップグレード
- ( 03 – ) 【Mac】横画面で撮影した動画をYouTubeショート用にMacのiMovieで縦画面に編集する方法
- ( 10 ↑) 【iPhone / iPad】iPhoneのツイッターアプリでユーザー名をコピーする方法
- (圏外↑) 【Labs】CSSだけでドロップダウンメニュー
- ( 02 ↓) 【jQuery】入門2. jQueryをHTMLに組み込む
- ( 09 ↑) 【Mac】Safariでソースコードを見る方法
- ( 04 ↓) 【jQuery】入門7. jQueryで新しいWindowを開く
- ( 06 ↓) 【2024年5月】iPad画面解像度まとめ
- (圏外↑) 【GIMP】レイヤーをロック
【Labs】スマホサイト向け横にスクロールするナビゲーション
こんにちは(・∀・)
今回はスマホサイト向け、横にスクロールするナビゲーションのサンプルをご紹介します。
Contents
スマホ向けスクロールナビゲーション
スマホサイトのナビゲーションといえばハンバーガーボタンをクリックして、トップやサイドからポップアップしてくるメニューを思い浮かべる方も多いと思います。
今回ご紹介するスマホサイト向けナビゲーションは、横並びのボタンをそのまま横にスクロールするというとても単純なナビゲーションとなっております。
この横にスクロールするナビゲーション、使ってるサイトも最近は増えてきていますね。
1. 慣性スクロールでヌルっとスクロール
慣性スクロールはナビゲーションを横にスクロール際、ヌルーっとスクロールするさせる方法です。webkit系のブラウザのみ対応となります。
HTML
<div class="gnav">
<ul>
<li><a href="#">menu1</a></li>
<li><a href="#">menu2</a></li>
<li><a href="#">menu3</a></li>
<li><a href="#">menu4</a></li>
<li><a href="#">menu5</a></li>
<li><a href="#">menu6</a></li>
<li><a href="#">menu7</a></li>
<li><a href="#">menu8</a></li>
</ul>
<!--gnav--></div>
CSS
.gnav {
width: 100%;
height: 40px;
background: #9fb7d4;
overflow-x: auto;
overflow-y: hidden;
-webkit-overflow-scrolling: touch;
}
.gnav ul {
width: 800px;
height: 40px;
margin: 0 auto 2px auto;
list-style: none;
display: flex;
}
.gnav ul li {
text-align: center;
border-left: 1px solid #eee;
}
.gnav ul li:last-child {
border-right: 1px solid #eee;
}
.gnav ul li a,
.gnav ul li a:link,
.gnav ul li a:visited {
display: inline-block;
width: 96px;
height: 40px;
background: #9fb7d4;
color: #fff;
text-decoration: none;
}
.gnav ul li a:hover,
.gnav ul li a:active {
background: #afc6e2;
}
Result
サンプルデモはこちら
スマホでのご確認はこちらをどうぞ
この方法だとスクロールしているときだけスクロールバーは表示されますが、普段は非表示となります。
2. 横スクロールバーデフォルト表示ナビゲーション
ナビゲーションを横にスクロールさせるナビゲーション、初めてそのサイトに訪れる方にはそのメニューが横に長く、見えていない部分があるということがわかりづらいという欠点があり、ユーザビリティ的にはよくありません。
なのでそれを解消するために横スクロールバーを見えるようにして、スクロールしていないときでも続きのボタンがあることがわかるようにしてあげます。
HTML
<div class="gnav">
<ul>
<li><a href="#">menu1</a></li>
<li><a href="#">menu2</a></li>
<li><a href="#">menu3</a></li>
<li><a href="#">menu4</a></li>
<li><a href="#">menu5</a></li>
<li><a href="#">menu6</a></li>
<li><a href="#">menu7</a></li>
<li><a href="#">menu8</a></li>
</ul>
<!--gnav--></div>
CSS
.gnav {
width: 100%;
height: 40px;
background: #9fb7d4;
overflow-x: auto;
overflow-y: hidden;
}
.gnav ul {
width: 800px;
height: 40px;
margin: 0 auto 2px auto;
list-style: none;
display: flex;
}
.gnav ul li {
text-align: center;
border-left: 1px solid #eee;
}
.gnav ul li:last-child {
border-right: 1px solid #eee;
}
.gnav ul li a,
.gnav ul li a:link,
.gnav ul li a:visited {
display: inline-block;
width: 96px;
height: 40px;
background: #9fb7d4;
color: #fff;
text-decoration: none;
}
.gnav ul li a:hover,
.gnav ul li a:active {
background: #afc6e2;
}
.gnav::-webkit-scrollbar {
height: 2px;
}
.gnav::-webkit-scrollbar-track {
margin: 0 2px;
background: #ccc;
border-radius: 5px;
}
.gnav::-webkit-scrollbar-thumb {
background: #d49fc2;
border-radius: 5px;
}
Result
サンプルデモはこちら
スマホでのご確認はこちらをどうぞ
このように、横スクロールバーをスクロールしていないときでも表示するようにすれば、そのナビゲーションには続きがあるということがわかり、使う側にとっては使いやすくなるのではないでしょうか。
ただし、こちらもwebkit系のブラウザのみの対応となり、また、1でご紹介しました-webkit-overflow-scrolling: touch;と併用するとスクロールバーのカスタマイズは無視されるようです。