HTML, CSS, jQueryでフォームに説明を入れるヘルプボタンを追加する
はじめに
いい感じのポップアップヘルパーがなかったので、自作してみました。クオリティは低いですがよろしくお願いします。(いい感じのポップアップヘルパー?がありましたら教えて下さい)
本タイトルでは分かりにくいが、この画像を見れば分かるでしょ!
フォームによくあるヘルプボタンだ!本記事では、これを実装するコードを書きます。
下準備
はじめのコード
<head> <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> </head> <style> .field { text-align: center; margin-bottom: 0.1em; } .field label { display:block; font-size: 1.4em; color: #bababa; text-shadow: #ffffff 0 1px 0; } .field-box { background: #ffffff; color: #423e3a; border: solid 4px #e5e5e5; padding:8px; margin-bottom:20px; width: 60%; } <style> <div class="field field-name"> <label for="message_password">パスワード</label><br> <input class="field-box" id="message_password" placeholder="パスワードを入力" type="text" /> </div> <div class="field field-body"> <label for="message_password_re">パスワードの確認</label><br> <input class="field-box" id="message_password_re" type="text" /> </div>
上のコードを書くと、以下の様になる。これをいじって完成させていく。
ヘルプボタンの追加(HTML)
<div class="field field-name"> <label for="message_password">パスワード</label><br> <input class="field-box" id="message_password" placeholder="パスワードを入力" type="text" /> <input class="hatena_button" type="button" name="" value="?"> </div>
input にボタンを追加しているのがわかるだろう
この部分だ。このボタンに class: hatena_button を追加しておく。
次は、CSS を弄るぞ。
ヘルプボタンの追加(CSS)
.hatena_button { background-color: #aaaaaa; color: #fff; border-radius: 100%; margin-left: 20px; }
これで、丸いボタンができる。
吹き出しを作成(HTML)
ヘルプボタンを押したあとのフキダシを作成する。
<input class="field-box" id="message_password" placeholder="パスワードを 入力" type="text" /> <input type="button" value="?" class="hatena_button"> <span class="help_message"></span>
これを追加。ボタンが押されたときにメッセージを表示させたいから、まずは非表示にする。(display: none)
ヘルプメッセージはあとで追加するからまだ書かないでね!
吹き出しを作成(CSS)
今のままだとダサいから、CSSを追加するよ。
.help_message { margin-left: 10px; width: 10%; display: none; position: absolute; word-wrap: break-word; margin-top: -2.5em; border: 1px solid #aaaaaa; padding: 4px; font-size: 0.5em; } .help_message:after { border:10px solid transparent; border-right-color:#aaaaaa; border-left-width:0; width:0; left:-10px; content:""; display:block; top:20px; position:absolute; margin-top: 1em; }
吹き出しを呼び出す
いよいよラスト、ボタンが押されたらメッセージを表示させるよ!
$('.hatena_button').on('click', function(){ if($('.help_message').text() === ""){ $('.help_message').text("管理者(あなた)だけの パスワードです。 コメントや>写真の管理、 背景画像の変更などに 使用します。").fadeIn(500).css('display', 'inline'); } else { $('.help_message').text("").css('display', 'none'); } })
さて、このコードを紐解くと
- $('.hatena_button').on('click', function(){})
- if($('.help_message').text() === ''){ }
ヘルプメッセージがHTMLに描写されてなかったら...
- $('.help_message').text('hgoehgoehgoe')
メッセージを追加。フェードインが欲しかったのでfadeInを追加しました。
ヘルプメッセージがHTMLに描写されていたら...
- $('.help_message').text("").css('display', 'none');
メッセージを消す
こんなかんじです。少し分かりにくいコードだけど、少しずつ紐解いていくと分かるようになります! これを元に色々作ってみてはどうでしょうか?