html模态弹出窗口

Hul*_*ulk 14 html modal-dialog popup

所有,

如何为以下代码制作一个简单的模态弹出窗口.在点击背景时,模态弹出窗口不应该消失.

<html>
<input type="textarea"></input>
</html>
Run Code Online (Sandbox Code Playgroud)

谢谢.........

bob*_*nce 16

这是一个简单的JavaScript示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Basic modal demo</title>
        <style type="text/css">
            body { margin: 0; }
            #shade, #modal { display: none; }
            #shade { position: fixed; z-index: 100; top: 0; left: 0; width: 100%; height: 100%; }
            #modal { position: fixed; z-index: 101; top: 33%; left: 25%; width: 50%; }
            #shade { background: silver; opacity: 0.5; filter: alpha(opacity=50); }
        </style>
    </head>
    <body>
        <div id="shade"></div>
        <div id="modal">
            <textarea rows="5" cols="25"></textarea>
            <button id="close">Close</button>
        </div>

        <p>
            <button id="start">Start</button>
        </p>
        <script type="text/javascript">
            var modal= document.getElementById('modal');
            var shade= document.getElementById('shade');
            document.getElementById('start').onclick= function() {
                modal.style.display=shade.style.display= 'block';
            };
            document.getElementById('close').onclick= function() {
                modal.style.display=shade.style.display= 'none';
            };

            // This code is a workaround for IE6's lack of support for the
            // position: fixed style.
            //
            if (!('maxHeight' in document.body.style)) {
                function modalsize() {
                    var top= document.documentElement.scrollTop;
                    var winsize= document.documentElement.offsetHeight;
                    var docsize= document.documentElement.scrollHeight;
                    shade.style.height= Math.max(winsize, docsize)+'px';
                    modal.style.top= top+Math.floor(winsize/3)+'px';
                };
                modal.style.position=shade.style.position= 'absolute';
                window.onscroll=window.onresize= modalsize;
                modalsize();
            }
        </script>

    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

您可以从那里进行各种改进,例如iframe修复IE z-indexing或将其封装在可重用对象中,但这是它完成的基本方式.


Dan*_*han 5

您还可以使用本机 HTML5.1 dailog。目前仅 Chrome 37+、Safari 6+ 和 Opera 24+ 支持对话框元素。

var dailog = document.getElementById("dialog"); 

function openModal() { 
   // dailog.show(); 
      dailog.showModal();
} 

function closeModal() { 
    dailog.close(); 
} 
Run Code Online (Sandbox Code Playgroud)
#dialog{width:300px;}
.right{float:right}
Run Code Online (Sandbox Code Playgroud)
<button onclick="openModal()">Show dialog</button>


<dialog id="dialog">This is a dialog window<br/><br/><br/>
<button onclick="closeModal()" class="right">Close</button>
</dialog>
Run Code Online (Sandbox Code Playgroud)