モーダルウィンドウをCSSだけで設置する方法「CSS Modal」軽量かつJS不要!
CSSだけでモーダルウィンドウを設置できる時代になっていました。
余計なライブラリ等を読み込む必要が無いので、かなり軽量です。
ライトボックス風で見た目もエフェクトもシンプルなので使い勝手が良さそうです。
サンプルデモ・ダウンロードはこちら
ウインドウを開くボタンには、
id値をハッシュリンクにして指定しています。
IE7以下では動作しないようですが、
FF、Chrome、safari、IEの最新ブラウザで動作しました。
CSSでできることが増えてきて、
次第にJSとの垣根がなくなってきましたねぇ。
CSS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
.modal-window { -webkit-transform: translate(0, 100%); -moz-transform: translate(0, 100%); -o-transform: translate(0, 100%); -ms-transform: translate(0, 100%); transform: translate(0, 100%); -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 999; opacity: 0; line-height: 1.3; display: none\9; } .modal-window:target { -webkit-transform: translate(0, 0); -moz-transform: translate(0, 0); -o-transform: translate(0, 0); -ms-transform: translate(0, 0); transform: translate(0, 0); opacity: 1; } .is-active.modal-window { display: block\9; } .modal-window:target { display: block\9; } .modal-window .modal-inner { position: absolute; top: 50px; left: 50%; z-index: 20; margin-left: -325px; width: 650px; overflow-x: hidden; border-radius: 2px; background: #fff; -webkit-box-shadow: 0 0 30px rgba(0, 0, 0, 0.6); box-shadow: 0 0 30px rgba(0, 0, 0, 0.6); } .modal-window .modal-inner p { padding: 0 20px; } .modal-window .modal-close { display: block; text-indent: -100px; overflow: hidden; } .modal-window .modal-close:before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 10; background: url("data:image/png;base64,iVBORw0KG goAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAEElEQVR4 2gEFAPr/AAAAAMwA0QDNTiUx4gAAAABJRU5ErkJggg=="); } .modal-window .modal-close:after { content: '\00d7'; position: absolute; top: 25px; left: 50%; z-index: 20; margin-left: 285px; background: #fff; border-radius: 2px; padding: 2px 8px; font-size: 1.2em; text-decoration: none; text-indent: 0; } .modal-window { -webkit-transition: opacity 0.4s; -o-transition: opacity 0.4s; transition: opacity 0.4s; } |
HTML
1 2 3 4 5 6 7 8 9 10 11 12 |
<body> <h1>CSSだけでモーダルウィンドウを実装できる「CSS Modal」</h1> <p><a href="#modal-p01">デモはこちら</a></p> <section class="modal-window" id="modal-p01"> <div class="modal-inner"> <p>コンテンツ<br> コンテンツ<br> コンテンツ</p> </div> <a href="#!" class="modal-close">×</a> </section> </body> |