jQueryの準備
jQueryの読み込み
jQueryを使用するには、下記のようにjQueryライブラリを読み込む必要があります。
<!-- index.html --> <head> <script type="https://...jquery.min.js"></script> </head>
jQueryファイルの読み込み
jQueryは、.js形式のファイルで保存し、下記のようにbodyの直前に書くことで、WEBページの表示速度をより早めることができます。
<!-- index.html --> <head> : </head> <body> : <script type="script.js"></script> <!-- bodyの終了タグの直前で読み込む --> </body>
jQueryの型
jQueryはHTMLの中身を操作するため、HTMLの読み込みが完了してからjQueryによる操作を開始するようにします。その為にはreadyイベントを使用し、$(document).ready()の中にjQueryの処理を書いていきます。 この構文には省略形も用意されています。
// script.js // jQueryの基本的な型 $(document).ready(function(){ // この中にjQueryを記載する }); // readyイベントの省略 $(function(){ // この中にjQueryを記載する });
モーダル
モーダルとは、clickイベントなどに基づいて表示/非表示が行われる要素のことです。
モーダルの表示
/* stylesheet.css */ .login-modal-wrapper { : display: none; /* ①モーダルをCSSで非表示に */ }
// script.js $('#login-show').click(function(){ // ②ログインボタンにclickイベントを設定 $('#login-modal').fadeIn(); // ③clickイベントでモーダルを表示 });
新規登録のモーダルを表示
①新規登録のボタンに共通のclass名「signup-show」を指定
<!-- index.html --> <div class="top-wrapper"> : <a href="#" class="btn signup signup-show"></a> : </div> <div class="message-wrapper"> : <span class="btn message signup-show"></span> : </div>
②fadeInメソッドで新規登録のモーダルを表示する
// script.js $('.signup-show').click(function(){ $('#signup-modal').fadeIn(); });
モーダルを隠す
// script.js // ①閉じるボタンにclickイベントを設定 $('.close-modal').click(function(){ }); // ②fadeOutメソッドでモーダルを隠す $('.close-modal').click(function(){ $('#login-modal').fadeOut(); });
2つのモーダルを隠す
ログインと新規登録の2つのモーダルがあるので、これらを閉じるボタンは共通のものを使います。
①ログインと新規登録のモーダルに共通のclass名を指定
<!-- index.html --> <div id="signup-modal"> : <div class="close-modal"></div> : </div> <div id="login-modal"> : <div class="close-modal"></div> : </div>
②fadeOutメソッドでログインと新規登録のモーダルを隠す
// script.js $('.close-modal').click(function(){ $('#signup-modal').fadeOut(); $('#login-modal').fadeOut(); });
hover機能
hoverイベントを使って、レッスンのアイコンにマウスが乗った時にだけ、レッスンの紹介文が表示されるようにしていきます。
hoverイベントの準備
①class名「lesson-hover」を追加
<!-- index.html --> // 各言語に対して、lesson-hoverクラスを追加 <div class="lesson lesson-hover"> : </div>
②hoverイベントを設定
// script.js $('.lesson-hover').hover( function(){ // マウスを乗せた時の処理 }, function(){ // マウスが外れた時の処理 } );
hover機能の概要
hover時にtext-activeというclassを付けて、レッスンの説明文を表示させます。
/* stylesheet.css */ .text-contents { : display: none; /* デフォルトでは説明文を隠す */ } .text-active { display: block; /* text-activeクラスが付いている場合は説明文を表示 */ }
Classメソッド
addClassメソッド
addClassメソッドを用いると、指定した要素にクラスを追加することができます。下記では、text-contentsクラスのついた要素に、text-activeというクラスを追加しています。
<!-- index.html --> <p class="text-contents">...</p>
// script.js $('.text-contents').addClass('text-active'); // text-activeクラスの前にドットは不要
removeClassメソッド
反対に、removeClassメソッドを用いると、指定した要素から指定したクラスを取り除くことができます。
<!-- index.html --> <p class="text-contents text-active">...</p>
// script.js $('.text-contents').removeClass('text-active');
アコーディオン
最後は、FAQ(よくある質問)にアコーディオン機能を実装します。質問をクリックするとその答えがスライドして表示/非表示するようにします。
アコーディオン機能の概要
答えの部分はCSSで非表示にしておき、3つの質問部分には同一のclass名を付与し、それらのclickイベントを作ります。質問をクリックした時に、対応する答えを隠すのか表示するのかを判断するため、下記のようにopenというclassを用います。答えの表示中はopenをつけ、非表示中は外します。
<!-- index.html --> <div class="answer">...</div> <div class="answer open">...</div>
hasClassメソッド
hasClassメソッドは、引数に指定したクラスを、オブジェクトが持っているか判定する時に使用します。
<!-- index.html --> <div class="answer open">...</div>
// script.js $('.answer open').hasClass('open'); // 結果: true
if文を用いた開閉操作
質問をクリックした時に、$(‘.answer’)がすでにopenクラスを持っていれば、(質問の答えが現在表示されていると判断できるので)openクラスを外し、答えを隠します。openクラスがない場合はその逆です。
// script.js if ($('.answer').hasClass('open')){ // openクラスを外す処理 // 答えを隠す処理 } else { // openクラスを付ける処理 // 答えを表示する処理 }