相信大家近期在訪問暢想資源時都發現在看了文章主體部分後會自動於網頁上顯示一內容爲Facebook專頁/微博的窗口,這就是所謂的模態窗口(内地称为模态对话框)了。這個模態窗口可以幫助網站開發人員顯示網頁中的特定內容,讓用戶聚焦到這個地方。今天「暢想資源」就來教大家如何使用純CSS(當然還有JS以顯示/隱藏窗口)來爲網頁加入這個模態窗口~
預覽
教學
1、首先我們當然先寫彈窗的CSS部分:
註:如需修改模態窗口的長寬,在修改 .modalDialog > div
中 height
width
的同時記得也要根據自己的情況慢慢調試修改 margin-left
以及 margin-top
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 |
.modalDialog { position: fixed; top: 0; right: 0; bottom: 0; left: 0; background: rgba(0,0,0,0.6); z-index: 99999999; opacity: 0; display: none; -webkit-transition: opacity 400ms ease-in; -moz-transition: opacity 400ms ease-in; transition: opacity 400ms ease-in; pointer-events: none; } .modalDialog:target { opacity: 1; pointer-events: auto; } .modalDialog > div { position: absolute; width: 470px; height: 500px; border-radius: 10px; background: #fff; top: 50%; left: 50%; margin-left: -235px; margin-top: -250px; -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; margin-right: -50%; padding: 5px; background: #fff; -webkit-box-shadow: 0 0 18px 3px rgba(0, 0, 0, .07); -moz-box-shadow: 0 0 18px 3px rgba(0, 0, 0, .07); box-shadow: 0 0 18px 3px rgba(0, 0, 0, .07); } .modalDialog > div > p { margin: 5px; } .close { background: #606061; color: #FFFFFF; line-height: 25px; position: absolute; right: -12px; text-align: center; top: -10px; width: 24px; text-decoration: none; font-weight: bold; -webkit-border-radius: 12px; -moz-border-radius: 12px; border-radius: 12px; -moz-box-shadow: 1px 1px 3px #000; -webkit-box-shadow: 1px 1px 3px #000; box-shadow: 1px 1px 3px #000; cursor: pointer; } .close:hover { background: #0088dd; } |
2、然後就是開啓/隱藏的函數控制:爲實現淡入淡出的效果,我們需要先使用 display: block
來取消隱藏、等待500毫秒後再調整窗口的 opacity
爲 1
(否則將會出現突然彈出的情況);而關閉窗口則是先調整窗口的 opacity
爲 0
、等待500毫秒後在 display: none
來完全隱藏,完美實現淡入淡出效果
註:本例中我使用了jQuery來進行上述操作,實際上JS等亦可以達到同樣效果(詳情請自行Google)
1 2 3 4 5 6 7 8 9 10 11 12 |
function openPopup() { $('#openModal').css({'display': 'block'}); setTimeout(function() { $('#openModal').css({'opacity': '1', 'pointer-events': 'auto'}); }, 500); } function closePopup() { $('#openModal').css({'opacity': '0', 'pointer-events': 'none'}); setTimeout(function() { $('#openModal').css({'display': 'none'}); }, 500); }; |
3、最後就是把彈窗的內容加入到網頁裏面去,以及加入相關按鈕
提示:按鈕部分可以以別的方式觸發,例如本站就以用戶完成觀看文章內容部分爲觸發方式
1 2 3 4 5 6 7 8 9 10 |
<div id="openModal" class="modalDialog"> <div> <div onclick="closePopup()" title="Close" class="close">X</div> <p>歡迎訪問「<a href="https://www.arefly.com/" target="_blank">暢想資源</a>」!</p> <p style="color: blue;">你也可以試試拉伸瀏覽器窗口來查看效果哦~ :)</p> <!-- 更多內容... --> </div> </div> <a onclick="openPopup()">打開</a> |
4、現在你的「模態窗口」就可以正常使用啦!(點擊測試)