[パーツ]モーダルウィンドウ 真ん中から上下に割れるモーダルウィンドウ

CSS HTML
 

真ん中から上下に割れるモーダルウィンドウ

クリックすると真ん中から上下に割れるモーダルウィンドウです。

browser:  ✔︎ ✔︎ ✔︎ 
ニャン易度 
<div class="cp_page">
  <!-- 表示しておくページのコンテンツ -->
  <a href="#cp_popup_block" class="cp_popup_op">OPEN</a>
</div>
<div id="cp_popup_block" class="cp_popup">
  <div class="cp_popupitem">
  <!-- POPUPで表示するコンテンツ -->
  <h1>h1テキスト</h1>
  <h2>h2テキスト</h2>
  <p>テキスト</p>
  <!-- /POPUPで表示するコンテンツ -->
  <a href="" class="cp_popup_cl"></a>
  </div>
</div>
/*POPUPするウィンドウ*/
.cp_popup {
  position: fixed;
  top: 0;
  right: 0;
  width: 100%;
  height: 100vh;
  display: none;/*最初は非表示に設定*/
}
#cp_popup_block:target {
  display: flex;/*OPENをクリックしたらflexとして表示*/
}
.cp_popup:before {/*上下に開くアニメーション*/
  position: fixed;
  content: '';
  left: 0;
  top: 50%;
  background: #ffffff;
  width: 100%;
  animation: open-animation 0.6s cubic-bezier(0.83, 0.04, 0, 1.16) 0.65s both;
}
.cp_popup:after {/*横にラインが出るアニメーション*/
  position: absolute;
  content: '';
  top: 50%;
  left: 0;
  width: 0;
  height: 2px;
  background-color: #ffffff;
  animation: line-animation 0.6s cubic-bezier(0.83, 0.04, 0, 1.16) both;
}
.cp_popupitem {/*フェードで現れるアイテム*/
  position: relative;
  padding: 5% 15%;
  animation: fade 0.5s ease-out 1.3s both;
}
.cp_popup_cl {/*クローズボタン背景*/
  position: fixed;
  top: 1em;
  right: 1em;
  width: 30px;
  height: 30px;
  background: #1b2538;
  clip-path: circle(50% at 50% 50%);
}
.cp_popup_cl::before {/*クローズボタンの「×」*/
  position: absolute;
  content: '';
  background: #ffffff;
  width: 10px;
  height: 10px;
  margin: 10px;
  clip-path: polygon(20% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50% 70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%);
}
/*ベースの設定*/
.cp_page {
  background-color: #1b2538;
  display: flex;
  min-height: 100vh;/*ページ全体を覆う*/
  /*ページのコンテンツを真ん中に設置*/
  align-items: center;
  justify-content: center;
}
.cp_page a {
  text-decoration: none;
}
.cp_popup_op {/*オープンボタン*/
  color: #ffffff;
  padding: 15px 30px;
  border: 1px solid #ffffff;
}

/*アニメーションの設定*/
@keyframes line-animation {
  /*横にラインが出るアニメーション*/
    0% { width: 0; opacity: 1;}
   99% { width: 100%; opacity: 1;}
  100% { width: 100%; opacity: 0;}
}
@keyframes open-animation {
  /*上下に割れるアニメーション*/
    0% { height: 0; top: 50%;}
  100% { height: 100vh; top: 0;}
}
@keyframes fade {
  /*POPUPするアイテムのフェードイン*/
    0% { opacity: 0;}
  100% { opacity: 1;}
}

copypet.jp

CSS3などで新たに追加された要素・装飾方法など、日々コードを書いていないと忘れてしまったり、ささっとプロトタイプを作る時などちょっとしたことに時間をかけている暇はない。そんな時に「あ〜、あれストックしときゃよかったなぁ」って困った自分用のストックブログです。カスタマイズなどがしやすいよう、昨今のweb制作に取り入れられる一般的なコードを中心に掲載しています。

More Info

こんな記事はいかがですか?