モーダルウィンドウってそもそも何?
モーダルウィンドウは元の画面に重ねるように表示させる別の画面のことです。文章で読んでもわかりにくいので、下記のサンプルを確認してください。
表示している画面に、別のウインドウを重ねて表示させるのが、モーダルウィンドウの特徴です。ユーザーはモーダルウィンドウに対して一定の操作をしなければ、他のことができません。このため、モーダルウィンドウの内容はかなりの高確率で、ユーザーの目に入ります。
つまり、非常に目立ちます。使い方としては、ユーザーに絶対に見てほしいことや、重要な情報を盛り込むのが定番。「OK」や「閉じる」ボタンを押さないと先に進めないので、何らかのアクションをしてほしい時にも役立つでしょう。
TItleH3:どんな時につかわれるの?
- 重要なお知らせ
- 広告やキャンペーンの告知
- 誤操作の通知とヒントの紹介
- エラー通知
具体的には、ショッピングサイトでクーポンを発行したときや、お問い合わせフォームで誤入力したときに使用される場面が多いと思います。
他には、執拗にウイルス感染の通知を出す詐欺サイトでも使われます。
モーダルウィンドウの注意点
モーダルウィンドウは高確率でユーザーに情報を認知してもらえますが、その内容がユーザーにとって望ましくない場合、印象は悪化します。また、頻繁に表示するのも好ましくはないでしょう。使いどころを失敗すると、ユーザーは「邪魔、面倒」と感じて、ブラウザバックしてしまいます。
モーダルウィンドウの作り方
モーダルウインドウは、HTMLとCSSでデザインを作り、JavaScriptで表示・非表示を切り替えるのが定番と言えます。HTMLとCSSで作ったデザインは最初は非表示で、何らかのきっかけでJavaScriptでクラスを付与し、表示させるわけです。
きっかけは色々ありますが、例えばウインドウを開いた時や、ある程度スクロールしたとき、望ましくない操作をした時などが挙げられます。これらの発火条件を指定しておいて、条件を満たしたら、表示させるためのクラスをJavaScriptにより付与するわけです。
モーダルウインドウのソースコード
<div id="modal-layer">
<div id="modal-in">
<span class="modTIT">
Sample Header*ここにタイトルを入れる*/
</span>
<p>Sample TEXT/*ここにメッセージを書く*/
</p>
<p class="mod_close" onclick="modalOFF()">Close[×]</p>
</div>
</div>
</div>
#modal{
transition:all 0.3s;
width:100%;
height:100%;
background-color: rgba(47, 65, 100, 0.719);
position: fixed;
top: 0;
left: 0;
z-index: 1000;
}
#modal-layer{
width:50%;
background-color: rgb(255, 255, 255);
box-shadow: 10px 10px 10px #263141 ;
margin: 20% auto;
z-index: 1000;
border-radius: 20px;
padding:18px 24px;
}
.modTIT{
font-weight: bold;
font-size:15px;
margin:0 0 12px 0 ;
padding:0 0 3px 0 ;
width:100%;
display: block;
border-bottom: 1px solid #cccccc;
}
p.mod_close{
color:#a7a5a5;
cursor: pointer;
width:50px;
margin:12px 3px 0px auto;
}
p.mod_close:hover{
color:#5c5c5c;
}
.no-modal{
opacity: 0;
pointer-events: none !important;
}
function modalON(){
modal.classList.remove("no-modal")
document.body.style.overflow = 'hidden';
}
function modalOFF(){
document.body.style.overflow = "visible";
modal.classList.add('no-modal');
}
TEST TEXT-ここにメッセージを入れます-
Close[×]
まとめ
モーダルウィンドウの作り方を紹介しました。お役に立ちましたら幸いです。