解决方法
以下是一个简单的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>
您可以从中进行各种改进,例如iframe可以修复IE z-indexing,或将其封装在可重用的对象中,但这是完成的基本方法.