ログイン

問題5 モーダルを作成しよう

HTML_CSSの問題

HTML_CSS

モーダルとはモーダルウィンドウのことで、元画面の上に別のウィンドウを表示し、ユーザーに情報を伝える画面のことです。特定の操作を行わないと他の操作ができないため、ユーザーに警告のメッセージやエラーを通知することに適しています。

モーダルを作成しよう

問題

モーダルを作成してみましょう。

ここで実装するモーダルでは、
ボタンを押下したら表示、非表示などの機能は実装しません。

画面の真ん中にコンテンツを置き、それ以外はグレーエリアで覆いましょう。

またimgにつきましては、https://ninjacode.work/assets/img/kv.pngをお使いください。

見本を参考に作成してください。

期待する画面

コードのアイコン

解答ソースコード

              <section class="modal">
  <div class="modal__overlay"></div>
  <div class="modal__content">
    <div class="modal__content__title">
      <h2>モーダルのタイトル</h2>
    </div>
    <div class="modal__content__img"></div>
    <div class="modal__content__discription">
      <p>モーダルで訴求したいテキストをここに入れます。モーダルで訴求したいテキストをここに入れます。モーダルで訴求したいテキストをここに入れます。モーダルで訴求したいテキストをここに入れます。モーダルで訴求したいテキストをここに入れます。
      </p>
    </div>
  </div>
</section>
¥HTML¥
            
              /* resetCSS */
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
    display: block;
}
ol, ul {
    list-style: none;
}
blockquote, q {
    quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
    content: ';
    content: none;
}
table {
    border-collapse: collapse;
    border-spacing: 0;
}
/* -----ここから下に記述してください----- */
.modal {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
.modal__content {
  position: absolute;
  overflow: hidden;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
  width: 70%;
  height: 400px;
  padding: 10px 30px;
  background-color: #fff;
}
.modal__content__title {
    padding: 16px;
    text-align: center;
    font-size: 20px;
    font-weight: bold;
}
.modal__content__img {
    background-color: #000;
    text-align: center;
    width: 100%;
    height: 50%;
    background-image: url(https://ninjacode.work/assets/img/kv.png);
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
}
.modal__content__discription {
    padding: 24px;
    font-size: 18px;
}
.modal__overlay {
    width: 100%;
    height: 100%;
    background-color: rgba(30,30,30,0.9);
}
¥CSS¥
            
答えのアイコン

解説

ブラウザで上手く表示する為にCSSの解答ソースにリセットCSS読み込んでおります。

モーダル実装時に大事なのは、最上の親に対してposition: fixed;を付与する事です。
こうすることで背景を固定させることができます。
次に、背景のグレーエリアはオーバーレイと呼びます。
このオーバーレイは縦横画面いっぱいに広げて黒に透過0.9などしてあげればOKです。

最後にコンテンツ部分に関しては、position: absolute;で真ん中に持ってきて普段のようにタイトル、画像、説明文をつければ出来上がりです。
ログインして解答を見る
実際の現場でモーダルを実装する際は、プラグインを用いられることが多いですが、場合によってプラグインに頼らず実装しなければいけないケースもあるので覚えておくといいでしょう。
twitterのアイコン
活動記録をTweetする
完了にする!
1.HTMLの宣言をしてみよう
続きの動画を見たい方は公式LINEから「HTML」と送信すると動画が見れます。
LINEの友達追加でお役立ち動画をGET!!