zoukankan      html  css  js  c++  java
  • 使用JavaScript实现弹出层效果

    声明

    阅读本文需要有一定的HTML、CSS和JavaScript基础


    设计

    实现弹出层效果的思路非常简单:将待显示的内容先隐藏,在触发某种条件后(如点击按钮),将原本隐藏的内容显示出来。


    实现

     

    <!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>

     

    显示效果如下:

    但是我们可以注意到,在弹出隐藏内容之后我们还是可以通过链接进入百度页面。为了防止这种情况的发生,我们可以提供遮罩层将原先的页面内容全部遮住。代码如下:

    <!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; 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>

    这是再次测试下效果,如下图:


    总结

    上述内容只是简单实现了弹出层效果,但是通过添加更多的代码也可以在此基础上实现更复杂的功能。

     

     

    本文来自博客园,作者:Legend_Lone,转载请注明原文链接:https://www.cnblogs.com/sun-ye/p/5544504.html

  • 相关阅读:
    安卓巴士诚招版主,希望各位巴友踊跃加入我们!
    android用户界面之菜单(Menu)教程实例汇总
    360将推出多款360用户特供手机
    安卓巴士最新精选文章,请您查阅
    android用户界面之SeekBar教程实例汇总
    Android OpenGL ES 开发教程小结
    android用户界面之按钮(Button)教程实例汇
    Seleniumwebdriver系列教程(5)————如何定位frame中的元素
    Seleniumwebdriver系列教程(10)————如何智能的等待页面加载完成
    Seleniumwebdriver系列教程(6)————如何捕获弹出窗口
  • 原文地址:https://www.cnblogs.com/sun-ye/p/5544504.html
Copyright © 2011-2022 走看看