1. 程式人生 > >使用JavaScript實現彈出層效果的簡單例項

使用JavaScript實現彈出層效果的簡單例項

轉自:https://www.jb51.net/article/85475.htm

實現彈出層效果的思路非常簡單:將待顯示的內容先隱藏,在觸發某種條件後(如點選按鈕),將原本隱藏的內容顯示出來。

實現

?
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 <!DOCTYPE html> <html> <head>    <title>Window物件</title>    <meta charset= "utf-8"
> </head> <body> <a href= "http://www.baidu.com" >百度一下</a> <button type= "button" id= "open" >開啟彈出層</button>
<div style= "display: none;background: lightblue;border:1px solid green;" id= "toast" >     <!--   設定display屬性為none以隱藏內容       -->    <p>這裡是彈出層內容</p>    <button type= "button" id= "close" >關閉彈出層</button> </div> <script type= "text/javascript" >    var toast = document.getElementById( "toast" );    document.getElementById( "open" ).onclick = function (e){      <!--  定義點選事件顯示隱藏內容     -->      toast.style.display = "block" ;      toast.style.position = "fixed" ;      var winWidth = window.innerWidth;      var winHeight = window.innerHeight;      var targetWidth = toast.offsetWidth;      var targetHeight = toast.offsetHeight;      toast.style.top = (winHeight - targetHeight) / 2 + "px" ;      toast.style.left = (winWidth - targetWidth) / 2 + "px" ;    }    document.getElementById( "close" ).onclick = function (e){        <!--   將顯示的內容再次隱藏     -->      toast.style.display = "none" ;    } </script> </body> </html>

顯示效果如下:

但是我們可以注意到,在彈出隱藏內容之後我們還是可以通過連結進入百度頁面。為了防止這種情況的發生,我們可以提供遮罩層將原先的頁面內容全部遮住。程式碼如下:

?
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 <!DOCTYPE html> <html> <head>    <title>Window物件</title>    <meta charset= "utf-8" > </head> <body> <a href= "http://www.baidu.com" >百度一下</a> <button type= "button" id= "open" >開啟彈出層</button> <div id= "cover" style= "display: none;position: fixed;width: 100%;height: 100%;top:0px;left:0px;background: gray;" >    <!-- 通過遮罩層遮住背景 -->    <div style= "background: lightblue;border:1px solid green;" id= "toast" >     <!-- 設定display屬性為none以隱藏內容       -->      <p>這裡是彈出層內容</p>      <button type= "button" id= "close" >關閉彈出層</button>   </div> </div> <script type= "text/javascript" >    var toast = document.getElementById( "toast" );    var cover = document.getElementById( "cover" );    document.getElementById( "open" ).onclick = function (e){      <!--  定義點選事件顯示隱藏內容     -->      cover.style.display = "block" ;      toast.style.position = "fixed" ;      var winWidth = window.innerWidth;      var winHeight = window.innerHeight;      var targetWidth = toast.offsetWidth;      var targetHeight = toast.offsetHeight;      toast.style.top = (winHeight - targetHeight) / 2 + "px" ;      toast.style.left = (winWidth - targetWidth) / 2 + "px" ;    }    document.getElementById( "close" ).onclick = function (e){        <!--   將顯示的內容再次隱藏     -->      cover.style.display = "none" ;    } </script> </body> </html>

這是再次測試下效果,如下圖:

總結

上述內容只是簡單實現了彈出層效果,但是通過新增更多的程式碼也可以在此基礎上實現更復雜的功能。