说到javascript弹出框的制作,将其实现步骤分开,其实很容易。
下面,将拆分页面弹出框的制作步骤。
首先,准备编辑工具(废话),其实,您可以使用notepad..嘿嘿。
弹出框的组成结构:
  1.一个页面遮罩层。
  2.一个div容器,用来包含整个弹出框的布局。
  3.弹出框的菜单头(在弹出框的顶部,一般用来放置关闭按钮等)
  4.弹出页面的iframe,将其src设置为需要链接的url.

弹出层组成结构讲解完毕,开始实现弹出层对象。
首先,先实现常见的公共函数

代码

//获取页面指定ID的对象var $$=function(id)
{
return typeof id=="string"?document.getElementById(id):id;
}
//获取页面指定tagName的对象var $E=function(tagName)
{
return document.getElementsByTagName(tagName)[0];
}
//创建对象 通过原型的继承function New(aClass,aParams)
{
function new_()
{
aClass.initialize.apply(
this,aParams);
}
new_.prototype
=aClass;return new new_();
}

好了  公共函数实现完毕,进入最关键的对象的创建了。
还是一步步来吧,首先,实现创建遮罩层的函数

代码

var makeMask=function()
{
var mask=$$("overlay_div");if(mask==null)
{
mask
=document.createElement("div");//遮罩层div mask.setAttribute("id","overlay_div");//设置id为overlay_div mask.className="light_overlay";//设置高度和宽度 mask.style.height=window.screen.availHeight>document.body.scrollHeight?window.screen.availHeight:document.body.scrollHeight;
mask.style.width
=window.screen.availWidth>document.body.scrollWidth?window.screen.availWidth:document.body.scrollWidth;
$E(
"body").appendChild(mask);
}
return mask;
}

遮罩层创建完毕
就开始创建一个div容器 并将设置容器的内部html代码

代码

var makeContent=function(_width,_height,_url)
{
var container=$$("container_div");if(container==null)
{
container
=document.createElement("div");
container.setAttribute(
"id","container_div");
container.style.height
=_height;
container.style.width
=_width;var v_left=document.body.clientWidth/2-_width/2;var v_top=document.body.scrollTop+document.body.clientHeight/2-_height/2;//设置容器距离顶部和左边的宽度。 container.style.top=v_top;
container.style.left
=v_left;
container.className
="light_container";//在容器内部添加一个菜单头和一个指向给定url的iframe container.innerHTML="<div class='light_header'><a class='light_close'

οnclick='closeDialog()'>关闭</a></div><iframe frameborder='0' scrolling='no'

style='border:0;width:100%;height:98%;' src='"+_url+"'></iframe>"$E("body").appendChild(container);
}
return container;
}

给出关闭弹出层的函数,就是将建立的两个层隐藏就可以了。

function closeDialog(result)
{
$$(
"container_div").style.display="none";
$$(
"overlay_div").style.display="none";
}

最后一步 就是显示弹出层对象了。我们需要将前面两函数联合起来

代码

var displayLayer=function(width,height,url,display)
{
this._mask=makeMask();this._container=makeContent(width,height,url);this._mask.style.display=display==""?"none":display;this._container.style.display=display==""?"none":display;
}

好了 基本的框架已经搭建出来了 现在给出css样式代码

代码

.light_overlay{display:none;position:absolute;top:0;left:0;width:100%;height:100%;z-index:1000;background-color:#333;-moz-opacity: 0.8;opacity:.80;filter: alpha(opacity=80);}.light_container{position:absolute;display:none;z-index:1001;border: 1px solid #B8B8B8;background-color: white; }.light_header{background:#D3F9F0;text-align:right;}.light_close{height:28px;cursor:pointer;font-size:12px;line-height:28px;margin-right:4px;}

然后我们直接调用
displayLayer(400,300,'show.html',"block");函数就可以显示弹出层了。

其实,我们可以将弹出层看成一个对象,达到javascrpt对象的封装,利于复用.
函数已经有了,我们只需要将函数整合就可以了,代码如下:

代码

var LightBox={
initialize:
function(url,width,height)
{
this._url=url;this._width=width;this._height=height;this._mask=this.makeMask();this._container=this.makeContent();
},
makeMask:
function()
{
var mask=$$("overlay_div");if(mask==null)
{
mask
=document.createElement("div");
mask.setAttribute(
"id","overlay_div");
mask.className
="light_overlay";
mask.style.height
=window.screen.availHeight>document.body.scrollHeight?window.screen.availHeight:document.body.scrollHeight;
mask.style.width
=window.screen.availWidth>document.body.scrollWidth?window.screen.availWidth:document.body.scrollWidth;
$E(
"body").appendChild(mask);
}
return mask;
},
makeContent:
function()
{
var container=$$("container_div");if(container==null)
{
container
=document.createElement("div");
container.setAttribute(
"id","container_div");
container.style.height
=this._height;
container.style.width
=this._width;var v_left=document.body.clientWidth/2-this._width/2;var v_top=document.body.scrollTop+document.body.clientHeight/2-this._height/2;
container.style.top
=v_top;
container.style.left
=v_left;
container.className
="light_container";
container.innerHTML
="<div class='light_header'><a class='light_close'

οnclick='closeDialog()'>关闭</a></div><iframe frameborder='0' scrolling='no'

style='border:0;width:100%;height:98%;' src='"+this._url+"'></iframe>"$E("body").appendChild(container);
}
return container;
},
displayLayer:
function(display)
{
this._mask.style.display=display==""?"none":display;this._container.style.display=display==""?"none":display;
}
}

当我们需要使用弹出框的时候就可以直接New一个对象
如下:

//创建对象
    var lightbox_example=New(LightBox,[url,width,height]);

//显示弹出层
    lightbox_example.displayLayer("block");

您可以点击此处 下载代码

转载于:https://www.cnblogs.com/trampt/archive/2010/08/10/1796780.html

[原]一步一步自己制作弹出框相关推荐

  1. 使用popwindow制作弹出框与获得焦点弹出软键盘

    如果是声明一各类 public class VideoFilterDialog extends PopupWindow 那么在构造方法中添加: conentView = inflater.inflat ...

  2. VUE|利用父子组件制作弹出框

    博客主页:JavaProfessional 一个专注于Java的博主,致力于使用通俗易懂的语句讲解内容,期待您的关注! 文章目录 点击显示弹框 父组件 子组件 点击关闭弹框 子组件 父组件 效果 好文 ...

  3. android制作弹出框样式,Android Dialog 弹出框 自定义 样式

    可以去除系统的Dialog的黑边,而且Dialog的样式和布局完全一样 可以是不规则图形 这个功能不是太难 ,不多说直接上代码 先是根据系统的Theme创建一个自己的Theme 在R.styles.x ...

  4. Android仿IOS封装通用的弹出框Dialog和底部弹出列表选择框 仿美团顶部条件筛选框 附自定义ViewGroup

    弹出框 背景 提示与询问弹出框 实现 使用 列表选择框 实现 使用 顶部条件筛选框 实现 自定义ViewGroup 使用 总结 背景 鉴于Android提供的默认弹出框很一般,IOS的弹出框样式还不错 ...

  5. html alter自动弹出,javascript封装alert()弹出框

    由于各个浏览器之间的差异,弹出框不一样,这有影响页面的布局,所以自己就用原声js封装了一个alert弹出框,希望对有需求的有所帮助... ` alert function ok() { alert(' ...

  6. HTML+CSS实现带按钮的弹出框

    带按钮的弹出框 HTML部分 CSS样式 JS部分 效果图 补充知识:关于rgba属性 HTML部分 <button id="showPopup" onclick=" ...

  7. popup弹出html页面,Popup弹出框绑定添加数据事件(步奏详解)

    这次给大家带来Popup弹出框绑定添加数据事件(步奏详解),Popup弹出框绑定添加数据事件的注意事项有哪些,下面就是实战案例,一起来看一下. 逻辑 窗口P1中显示一组数据,并提供一个添加按钮 点击按 ...

  8. 用Dreamware制作弹出菜单

    弹出菜单在网页制作中是一种非常常用的菜单方式,这种菜单不但制作简单,而且效果也很好. 效果说明 本实例所要完成的效果是当鼠标移动到文字上时,就会弹出一个漂亮的菜单,如下图所示. 弹出菜单在网页制作中是 ...

  9. aardio - 使用customPlus库制作弹出列表

    customPlus库非常强大,但是很多人可能不会用. 下面演示如何使用customPlus库制作弹出列表: 效果一: 代码一: import win.ui; import fonts.fontAwe ...

最新文章

  1. 【MediaPipe】(4) AI视觉,远程手势调节电脑音量,附python完整代码
  2. 下拉列表控制文本框的个数思路
  3. 手机连接投影机的步骤_投影机和电视机怎么选?看这一篇就够了!
  4. 德国公司宣布研制出新冠病毒快速检测试剂 2.5小时出结果
  5. 组件 -——SUl Mobile
  6. Spring Boot教程(7) – 直观地理解Spring容器
  7. linux c++ 多进程初步01
  8. Win10右键没有压缩选项的解决教程
  9. linux shell学习-1
  10. 浅谈SaaS应用开发的难度
  11. spark读取gz文件与parquet文件
  12. 逻辑斯蒂回归和感知机模型、支持向量机模型对比
  13. 随机过程(二):更新过程的详细理解
  14. 中国移动(ECIA)云网工程师技术知识-立哥技术
  15. 多恩布什《宏观经济学》第十三版笔记和课后答案
  16. js月份的计算公式_JS获取指定月份的天数几种方法
  17. 半双工通信是指c语言,Linux下C语言实现半双工的UDP通信
  18. matlab小波分析信号消除噪声函数,小波分析的语音信号噪声消除方法
  19. 其他状态(非Buff/Debuff、异常状态的状态)
  20. 【敏捷5.2】用户故事的层次和用户故事地图

热门文章

  1. 手机知识:手机充电必备的几个小技巧,赶快看一下吧!
  2. 电脑软件:巧用微软小工具解决日常问题!
  3. 算法基础:常用的查找算法知识笔记
  4. 前端:Web技术的演化史
  5. 收集程序员的几幅对联
  6. ping不通docker_初识docker
  7. 都快 2022 年了,这些 Github 使用技巧你都会了吗?
  8. 如何成为公司独当一面的工程师
  9. go 中gcc 编译问题(gcc.exe fatal error no input files compilation terminated)
  10. Java:反射+泛型:获取类型参数的实例