javascript如何实现弹出层效果?(代码分析)


本文摘自PHP中文网,作者青灯夜游,侵删。

很多时候我们想去某某网站干点什么的时候,就会让我们先注册登录后才可以访问内容,而现在很多网站注册登录的时候都会有一种遮罩层的效果,就是背景是带有透明度的黑色遮罩,盖满整个网站,然后登录框弹出固定在屏幕的居中位置。那么,今天就练练这个实用而简单的效果吧。PS:这个是我学习后练习的demo!

首先,需要有一个按钮来模拟登录:

1

<button id="btnLogin"class="login-btn">登录</button>

3W$VBSJ3]ZC`V0D7$NM5_TS

然后呢,我们想通过点击这个按钮实现这样一个效果:

360截图20150413221925929

从上面这张图片,我们可以看到,灰色背景就是遮罩层,而浅蓝色的区域就是登陆框位置所在了。OK,下面先看一下HTML结构和css样式:

1

2

3

4

5

6

7

<div id="mask"></div>  //遮罩层

<div id="login">       //登陆框包裹层

      <div id="loginCon"//表单内容

          <div id="close">点击关闭</div>  //关闭按钮

          我是登录框哟!

      </div>

 </div>

这里只是将HTML结构拿出来讲一下,但是下面我们是通过JS来创建它们的,所以这里只是为了方便我们理解,并不需要放在html文件里。

CSS样式:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

#close{

    background:url(img/close.png) no-repeat;

    width:30px;

    height:30px;

    cursor:pointer;

    position:absolute;

    right:5px;

    top:5px;

    text-indent:-999em;

    }

#mask{

    background-color:#ccc;

    opacity:0.7;

    filter: alpha(opacity=70);

    position:absolute;

    left:0;

    top:0;

    z-index:1000;

    }

#login{

    position:fixed;

    z-index:1001;

    }

.loginCon{

    position:relative;

    width:670px;

    height:380px;

    background:lightblue;

    border:3px solid #333;

    text-align: center;

    }

css样式中需要注意一下z-index属性,因为我们需要让遮罩层盖住除了登录框之外所有的页面内容,所以,需要确保登录框的层次最高,遮罩层次之,所以一般将这两个的z-index属性值设置为比较高的数值,但遮罩层要比登陆框少一层。然后还有一点就是遮罩层必须设置透明度,不然就太难看了,用户体验极其不好!

JS实现代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

function dialog(){

    //获取页面的高度和宽度

    var sWidth=document.body.scrollWidth || document.documentElement.scrollWidth;

    var sHeight=document.body.scrollHeight || document.documentElement.scrollHeight;

     

    //获取页面的可视区域高度和宽度

    var wHeight=document.documentElement.clientHeight || document.body.clientHeight;

     

                //创建遮罩层

    var oMask=document.createElement("div");

    oMask.id="mask";

    oMask.style.height=sHeight+"px";

    oMask.style.width=sWidth+"px";

    document.body.appendChild(oMask);            //添加到body末尾

       

               //创建登录框

    var oLogin=document.createElement("div");

    oLogin.id="login";

    oLogin.innerHTML="<div class='loginCon'><div id='close'>点击关闭</div>我是登录框哟!</div>";

    document.body.appendChild(oLogin);

     

    //获取登陆框的宽和高

    var dHeight=oLogin.offsetHeight;

    var dWidth=oLogin.offsetWidth;

 

    //设置登陆框的left和top

    oLogin.style.left=sWidth/2-dWidth/2+"px";

    oLogin.style.top=wHeight/2-dHeight/2+"px";

 

    //获取关闭按钮

    var oClose=document.getElementById("close");

     

    //点击关闭按钮和点击登陆框以外的区域都可以关闭登陆框

    oClose.onclick=oMask.onclick=function(){

        document.body.removeChild(oLogin);

        document.body.removeChild(oMask);

    };

}

                     

window.onload=function(){

    var oBtn=document.getElementById("btnLogin");

    //点击登录按钮

    oBtn.onclick=function(){

        dialog();

    }

                 

}

这种方法是通过JS在事件绑定里动态创建和移除这些标签,然后设置他们的 id 和 style 属性。当然,我们也可以将HTML结构先放在html文件里,默认情况下隐藏它们,然后在事件绑定里控制它们的显示与隐藏即可!

更多弹出层特效代码,请访问:js代码特效 栏目

以上就是javascript如何实现弹出层效果?(代码分析)的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

详解javascript中的回调函数

react是javascript

浏览器缓存策略的详细介绍(图文)

javascript如何显示隐藏div

javascript是什么格式的文件

一文了解javascript中合并和克隆对象的方法

canvas的手绘风格图形库rough.js

7种利用js实现页面跳转的方法(分享)

javascript如何改变控件的显示位置

javascript是一种什么样的语言

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...