Headhesive.jsは、メニュー部分やロゴ部分などをブラウザ上部に固定するjs記述です。
通称「スティッキーヘッダー」というやつです。
どのコンテンツでも、指定したidの箇所までスクロールをすることで、その指定したid以降のコンテンツ表示時にブラウザ上部に固定することが出来る機能を持っています。
最近、流行りで色々なサイトで見ることが出来ますよね。
お馴染みの挙動をするというところです。
ただ、個人的に、スティッキーヘッダーってあまり好きになれなかったりしていました(苦笑)
コンテンツの表示領域が狭くなるのが気になってたんです。
ただ、あまり好きになれないからと言って”知らないのは問題だな”ということで、実装してみました!
レスポンシブの場合の対応などもあり、デフォルトのテンプレートではなく、グローバルメニューに工夫をしてみたバージョン(phptemp_spmenu_160706.zip)に実装しました。
では、進めていきたいと思います。
本家サイトです。
GitHubからプラグイン一式をダウンロードして頂けます。
phptemp_spmenu_hh_160914.zip
サンプルです。
サンプルには全ページにHeadhesive.jsを設定しています。
当サイト内の「SEOの基礎知識」の中のコンテンツです。
今回は、「スマホで横長メニュー部分だけをスクロールするCSS装飾」を実装したテンプレートに組み込んでいます。
ヘッダ内で読み込ませたファイルです。
背景色の指定など、見た目にかかわる部分について修正をしました。
気になる箇所がありましたら、環境に併せて適宜修正してくださいね。
<link href="/css/headhesive.css" type="text/css" rel="stylesheet" />
次に全ページで読み込ませなければいけないjs記述と読み込ませるべきjsファイルです。
今回は共通の読み込みファイル「sticky.php」をつくり、その中に一括で書き込んでいます。
記述内容は、テンプレート向けに修正をしています。
idやclassの指定は適宜、環境に併せて修正をしてくださいね。
<script type="text/javascript" src="/js/headhesive.js"></script> <script type="text/javascript"> // Set options var options = { offset: '#maincontents', offsetSide: 'globalbg', classes: { clone: 'banner--clone', stick: 'banner--stick', unstick: 'banner--unstick' } }; // Initialise with options var banner = new Headhesive('.banner', options); // Headhesive destroy // banner.destroy(); </script>
今回は、グローバルメニュー部分を固定表示させるようにしているため、グローバルメニューの外枠に当たる箇所にclassを追記します。
<div id="globalbg" class="banner"> <div id="global"> <ul> <li id="now"><a href="/">TOP</a></li> <li><a href="/cate_01/">コンテンツ1</a></li> <li><a href="/cate_02/">コンテンツ2</a></li> <li><a href="/cate_03/">コンテンツ3</a></li> <li><a href="/cate_04/">コンテンツ4</a></li> </ul> </div> </div>
スティッキーヘッダーは、スクリプトによって仕様が大きく異なることがあります。
今回の件で言えば、classで指定している箇所をそのまま固定表示するだけですが、場合によっては、指定した箇所を非表示にして、隠していたコンテンツを表示するというロジックなどもあります。
ですので、それぞれのサイト運用環境にあった仕様を選ばないと固定観念に縛られることもありますので、そのあたりは気を付けたいところです。
WEBサイトテンプレート(PHP)の修正にあたって、以下の点に配慮しています。
いかがでしたでしょうか?
特に難しいモノではないと思いますが、見た目を修正するところが手間かもしれませんね。
一応、オプションなどもあるので、その気になれば色々と挙動を変えることが出来るかもしれません。
先述の通りですが、スティッキーヘッダーは仕様の幅が広いので、たくさんのスクリプトに触れておきたいところかもしれません。
ということで、ここでも他のスティッキーヘッダーのスクリプトを取り上げたいと思います。
執筆 : 清水 隼斗
「スティッキーヘッダーを実現するJSソース「Headhesive.js」の使い方」のシェアをお願い致します!