CSSでモーダルウィンドウ(ポップアップ)表示する方法
目次
また大分期間が空いてしまいました。
最近は仕事が忙しくブログを書く時間が全然ありませんでした。
今回は仕事でポップアップウィンドウを作ることが多かったので忘備録としてCSSでモーダルウィンドウ(ポップアップ)表示する方法を書いていこうと思います。
CSSでモーダルウィンドウ(ポップアップ)表示する方法
まずはHTMLです。
HTML
<input type="checkbox" id="popup01" class="popupCheck"> <div class="wrapper" align="center"> <div class="button small"> <label for="popup01">ウィンドウを開く</label> </div> <div id="popup01Con" class="popupWrap"> <div class="popupBg"> <label for="popup01" class="popup_Close"></label> </div> <div class="popupCon"> <div class="popupInner"> <div class="popupButton_Close"><label for="popup01" class="popup_Close">×</label></div> <h1 class="Tittle popupTittle">テストページ</h1> <div class="popupText"> <p> <a href="リンクする場合のURL"><img src="画像URL.jpg"></a> </p> <p> ポップアップテストです。<br> テストテストテストテストテストテストテストテスト<br> テストテストテストテストテストテストテストテスト<br> テストテストテストテストテストテストテストテスト<br> テストテストテストテストテストテストテストテスト<br> テストテストテストテストテストテストテストテスト<br> テストテストテストテストテストテストテストテスト<br> テストテストテストテストテストテストテストテスト<br> テストテストテストテストテストテストテストテスト<br> テストテストテストテストテストテストテストテスト<br> テストテストテストテストテストテストテストテスト<br> テストテストテストテストテストテストテストテスト<br> テストテストテストテストテストテストテストテスト<br> </p> <div class="button small"><label for="popup01">× ウィンドウを閉じる</label></div> </div> </div> </div> </div>
スポンサードリンク
CSS
.contents .Tittle {
margin-bottom: 0.5em;
padding-bottom: 0.25em;
font-size: 2em;
font-weight: bold;
line-height: 1.3;
border-bottom: 1px solid #dedede;
}
.contents p {
margin-bottom: 1em;
line-height: 1.7;
}
.popupCheck {
display: none;
}
label {
cursor: pointer;
}
.button {
text-align: center;
}
.button label {
display: inline-block;
padding: 0.8em 4.0em;
margin: 2.0em;
color: #FFFFFF;
font-size: 20px;
background-color: #29304b;
text-decoration: none;
border-radius: 5px;
-webkit-transition: 0.3s cubic-bezier(1, 0, 0, 1);
transition: 0.3s cubic-bezier(1, 0, 0, 1);
-webkit-transition-property: background-color, -webkit-box-shadow;
transition-property: background-color, -webkit-box-shadow;
transition-property: background-color, box-shadow;
transition-property: background-color, box-shadow, -webkit-box-shadow;
-webkit-box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.3);
box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.3);
}
.button label:hover {
color: #FFFFFF;
background-color: #404b75;
-webkit-box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.3);
box-shadow: 0px 0px 12px 0px rgba(0, 0, 0, 0.3);
}
.popupWrap, .popupBg {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: 100%;
height: 100%;
margin: auto;
z-index: 10;
}
.popupWrap {
opacity: 0;
visibility: hidden;
-webkit-transition: 0.3s cubic-bezier(1, 0, 0, 1);
transition: 0.3s cubic-bezier(1, 0, 0, 1);
-webkit-transition-property: opacity;
transition-property: opacity;
will-change: opacity;
}
.popupBg {
cursor: pointer;
opacity: 0.7;
background-color: #000;
z-index: 2;
}
.popupBg label {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: block;
}
.popupCon {
position: absolute;
top: 5%;
left: 0;
right: 0;
width: 92%;
max-width: 640px;
height: 86%;
margin: auto;
z-index: 3;
}
.popupInner {
overflow: auto;
-webkit-overflow-scrolling: touch;
position: relative;
height: 100%;
padding: 0 1.5em 1.5em;
cursor: default;
background-color: #fff;
border-radius: 5px;
-webkit-box-shadow: 0px 0px 6px 0px rgba(0, 0, 0, 0.3);
box-shadow: 0px 0px 6px 0px rgba(0, 0, 0, 0.3);
}
.popupButton_Close {
position: absolute;
top: 0;
right: 0;
}
.popupButton_Close label {
display: inline-block;
padding: 0.5em;
color: #333;
text-decoration: none;
font-size: 2em;
}
.popupCheck:not(:checked) ~ .wrapper > *:not(.popupWrap) {
-webkit-filter: blur(0px);
filter: blur(0px);
}
.popupCheck:not(:checked) ~ .wrapper .popupWrap {
opacity: 0;
visibility: hidden;
}
.popupCheck:checked ~ .wrapper > *:not(.popupWrap) {
-webkit-filter: blur(3px);
filter: blur(3px);
}
#popup01:checked ~ .wrapper #popup01Con {
opacity: 1;
visibility: visible;
}
.popupTittle {
padding: 2em 0.5em 1.5em;
font-size: 2em;
line-height: 1.3;
text-align: center;
color:#000;
}
.popupText .popupCover {
margin: 0 -1.5em 1em;
}
.popupText p {
margin-bottom: 1em;
line-height: 1.7;
color:#000;
}
結果
テストページ
ポップアップテストです。
テストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテスト
テストテストテストテストテストテストテストテスト
このような感じです。
画像だけにしてバナーとしての広告表示につかったり、テキストだけとか色々変更して作ってみるといいと思います。
スポンサードリンク

コメントを書き込む