实现原理:

首先,我们将弹出框中的内容放置在一个特殊的DIV层中,然后默认隐藏它(即初始不可

见,使用CSS即可实现)。当用户执行某个动作时——比如点击某个链接或者将鼠标光标移动到某个链接上——我们将之前设置好的隐藏层显示在所有页面元素的

最上层(将使用JS操作实现)。此外,我们还将在弹出DIV窗口中设置一个按钮来执行——当用户点击此按钮时关闭窗口的功能。

实现过程:

就如我上面提到的,我们首先需要创建一个特殊的DIV层,然后我们将弹出窗口的内容放在这个DIV层里面。在这里,我们将其ID命名为“popupcontent ”以区别于其他DIV层。

div id=popupcontent这是一个DIV弹窗效果!/div

弹出窗口的CSS修饰代码:

下来,让我们给上面已创建好的这个DIV弹出层进行CSS美化。其中最重要的几个参数分别是:overflow(内容溢出),

visibility(可见性)

和position(定位方式)。同时我也给这个窗口效果添加了很多其他代码,但这些只是用于美化,使这个窗口更绚丽。所以,我们最后定义的CSS代码形

如:

复制代码 代码如下:

#popupcontent{

position: absolute;

visibility: hidden;

overflow: hidden;

border:1px solid #CCC;

background-color:#F9F9F9;

border:1px solid #333;

padding:5px;

}

从上面CSS代码中的红色部分可以看出:这个DIV层初始默认状态是不可见的。

大家可以根据需要对以上代码进行美化,但请务必保留position,visibility,overflow三个属性。

JavaScript代码用于触发和显示弹出窗口:

这可能是本教程最重要最有趣的地方了。我们接下来会编写2个过程函数分别用于显示和隐藏上面那个DIV弹窗。当然,这两个函数之中会包含一些主体逻辑。

过程函数中需要顺序包含的逻辑:

计算JavaScript弹出窗口在屏幕上的显示位置(定位);

在弹出窗口中添加一个状态栏(或按钮),用于关闭打开状态下的窗口;

显示弹出窗口。

为了简单起见,本例中我们设置的显示位置是Top:200,Left:200。即以浏览器内容框的左上角为坐标,向下偏移200PX,向左偏移200PX。

弹出窗口的大小我们可以在显示函数的参数中进行设置,包括两个参数:窗口长度和窗口宽度。

如果你需要将本例中的代码进行二次开发,有个地方需要特别注意,那就是获取弹出窗口DIV层的DOM对象,我们可以通过下面这个getElementById函数来获取ID名为“Popcontent”的DOM对象。

复制代码 代码如下:

var popUp = document.getElementById(popupcontent);

在获取这个(弹出窗口)DOM对象之后,我们可以在JS代码中修改窗口的相对的位置和窗口大小。

复制代码 代码如下:

popUp.style.top = 200px;//窗口距离浏览器内容区最上方的偏移值

popUp.style.left = 200px;//窗口距离浏览器内容区最左边的偏移值

popUp.style.width = w + px;//窗口的宽度

popUp.style.height = h + px;//窗口的高度

下来,我们需要给窗口添加一个“关闭”按钮,用于在窗口开启状态下关闭这个窗口。要完美的实现这一功能,首先我们需要声明一个全局变量,用于存储弹出窗口

DIV中的内容。这是因为,如果你在一个页面中显示多个内容不同的弹出窗口,你不需要将按钮重复的复制到这些DIV层中,这样就简化了行为逻辑:

复制代码 代码如下:

if (baseText == null) baseText = popUp.innerHTML;

popUp.innerHTML = baseText +

div id=\statusbar\button οnclick=\hidePopup();\Close window button/div;

最后一个需要注意的地方是这个“关闭”按钮的定位问题。这个很容易实现,设置一下这个按钮对象的向上的空白边即可(空白边的数值设置成稍小于整个弹出窗口的DIV高度即可)。

至此,所有的行为逻辑讲解完毕,最后的弹窗显示函数的完整代码如下:

复制代码 代码如下:

var baseText = null;

function showPopup(w,h){

var popUp = document.getElementById(popupcontent);

popUp.style.top = 200px;

popUp.style.left = 200px;

popUp.style.width = w + px;

popUp.style.height = h + px;

if (baseText == null) baseText = popUp.innerHTML;

popUp.innerHTML = baseText + div id=\statusbar\button οnclick=\hidePopup();

\Close windowbutton/div;

var sbar = document.getElementById(statusbar);

sbar.style.marginTop = (parseInt(h)-40) + px;

popUp.style.visibility = visible;

}

隐藏弹出窗口:

隐藏弹出窗口的过程就相当简单了。只需要首先获取弹出窗口那个DIV的DOM对象,然后将其属性设置成“隐藏”即可。

复制代码 代码如下:

function hidePopup(){

var popUp = document.getElementById(popupcontent);

popUp.style.visibility = hidden;

}

拓展HTML代码最终实现弹窗效果:

我们需要做的就是在某个链接或者按钮的对应事件上添加JS函数“showPopup() ”即可。

比如,需要在鼠标移动到某连接上时弹出窗口:

a href=# οnmοuseοver=showPopup(300,200); Open popup/a

需要在鼠标点击某个连接时弹出窗口:

a href=# οnclick=showPopup(300,200); Open popup/a

取消

评论

html 设置距离左边,js怎样设置div层左边距 及与顶部边距相关推荐

  1. js 拖动多div层,, IE,FF下多可行。

    <html> <head> <meta http-equiv="Content-Type" content="text/html;chars ...

  2. js里设置html样式,JS 动态设置css样式

    1.0 内联样式 : 通过行内样式.style 属性 来编辑给定的HTMLElement的内联样式 let el = document.createElement('div') ; 01) . el. ...

  3. javascript实现div层移动的减速效果

    其实原理很简单,当一个div层从起始位置到最终终点位置(endX,endY)的过程中,假设每10ms移动一次.那么利用一个目标值(终点坐标)减去当前div层的位置除以一个定长来作为下次div层要移动的 ...

  4. echarts - 条形图grid设置距离绘图区域的距离

    在一些数据量过大的情况下,在一个固定的区域绘图往往需要对图表绘制区域的大小进行动态改变.这时候设置条形图距离绘图区域上下左右的距离可使用如下方式:表示条形图的柱子距离绘图区左边30%,距离右边40%, ...

  5. html设置根rem,经过js动态设置根元素的rem方案

    rem目前是响应式开发移动端一个很重要也是经常使用的一个元素,可是在网上看的各类文章都会超级懵逼.因此我在下面给出两个方案,也列举出使用方法,让你们一目了然.前提是设计稿以750为准.其中测试的设计稿 ...

  6. echarts图表的内边距_echarts - 条形图grid设置距离绘图区域的距离

    在一些数据量过大的情况下,在一个固定的区域绘图往往需要对图表绘制区域的大小进行动态改变.这时候设置条形图距离绘图区域上下左右的距离可使用如下方式:表示条形图的柱子距离绘图区左边30%,距离右边40%, ...

  7. html js 设置样式,原生js设置样式 笔记:JS设置CSS样式的几种方式

    document(id名).style.backgroundColor = "ren" css里的属性有-的就去掉将首字母大写. js如何添加CSS样式中的class添加属性 用J ...

  8. js如何设置radio选中

    要求:编辑页面默认设置radio选中 jsp页面: <div class="form-group"><label class="control-labe ...

  9. fancybox 在打开窗口前 先执行 js脚本,fancybox设置只能通过右上角关闭,fancybox遮罩层关闭...

    在默认情况下,fancybox点击之后弹出窗口,右上角带有一个XX,但是点击窗口的其他遮罩层或者是其他地方,都是可以关闭fancybox的,有些时候,我们不希望这样关闭,而是只能点击右上角关闭,那么设 ...

最新文章

  1. 教你用一行Python代码实现并行(附代码)
  2. java 如何判定消息已在队列_Java面试—消息队列
  3. 实现串匹配的并行算法_5-1-KMP模式匹配
  4. 一起来玩树莓派--解决官方docker源安装失败的问题
  5. 新手指南:X5Cloud云端应用安装步骤(有图有说明)
  6. python摄像头识别快递单号查询_python如何免费对接快递鸟api单号识别查询接口
  7. 《『若水新闻』客户端开发教程》——05.设计新闻列表UI
  8. linux环境下通过nginx实现tomcat集群
  9. ES6 = 函数参数
  10. 3.高性能MySQL --- 服务器性能剖析
  11. 0基础入门VTD-实操静态道路建模4
  12. excel转word_excel怎么转word?常用方法合集,看你使用哪一种
  13. java 获取excel的行数_关于Java:如何使用POI库获取Excel文件中的行数?
  14. python进行批量图片文字识别
  15. 在安卓系统上使用NFC技术的模拟M1卡的探索之路
  16. ImportError:undefined symbol: _ZN2at5sliceERKNS_6TensorElN3c108optionalIlEES5_l
  17. 计算机动漫与游戏制作初体验,《无尽远征》隐藏动画大师 启动“游漫双系统”之约...
  18. 写给当初的你,现在的我
  19. 【免费】捷微微信管家公众号运营培训开课啦!
  20. js bug: Origin 'null' is therefore not allowed access.

热门文章

  1. understand 教程
  2. php汽车购买意向调查,2012年中国汽车用户购买意向调查报告(已购汽车篇)
  3. 陪诊小程序软件|陪诊系统定制|医院陪诊小程序
  4. jsp页面在线显示pdf文件
  5. 诺华创血小板减少症新药纳入新版国家医保目录
  6. 怎么用计算机化学精密度,计算机在分析化学和有机化学的应用
  7. linux ping ttl,ping 命令----根据TTL判断对方是什么操作系统
  8. 微信应用号(小程序)开发指南与开发工具
  9. android ndk交叉编译pcl 1.9.1
  10. matlab向量中插入元素