制作一个有模态的弹出层

参考慕课网课程《分享:阿当大话西游之WEB组件》

定制不同的皮肤可通过对元素添加或减少class类来实现。

首先,模态是指如下图部分的灰色背景部分:(灰色部分不可点击)

然后,要记住,模态要加在当前页面的上面,以及当前操作框(通常是一个弹出层)的下面

所谓上面,下面是指:

如果模态(通常是一个div)的定位是fixed(固定定位)的,那么它将不占据文档空间,

所以,将其height和width设置为100%,另外,设置left:0;top:0。即为铺满整个屏幕。

然后,在html中,处于此div之前的元素将不可触及。

那么如何让弹出层可以被focus呢?

答案就是让让此弹出层处于模态之后,然后同样设置position:fixed(固定定位),调整其

top,left等,让其位置和模态发生”重叠“,由于它是处于模态之后的,所以位置重叠的情况下,

浏览器会将其放到上面来,但是其z-index值并没有发生改变。

(通常也不通过设置z-index的值来特意让模态处于弹出层的下方,因为这样会让原本页面的元素

处于模态之上,从而可以被操作,这样就达不到模态想要的结果)。

失败的代码:

function mask(){

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

                masknode.className="mask";
                masknode.id="window_mask";
                document.body.appendChild(masknode);
            }

这里的关键是:appendChild操作会将节点插到body的最后面,这样在它之前的所有元素都将被覆盖

从而连弹出层都得不到焦点,不能操控。

成功的代码:

function mask(){  

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

                masknode.className="mask";
                masknode.id="window_mask";
                /*在Box之前插入mask*/
                document.body.insertBefore(masknode,document.getElementById("Box"));
                //document.body.appendChild(masknode);
            }

这里Box就是弹出层,在Box之前插入mask,因为Box是处于模态之后的,

所以它就可以在模态之上,因而可以被点击。

另:jQuery的masknode.appendTo(body),会将masknode插入到紧邻body之后。

来自为知笔记(Wiz)

附件列表

制作一个有模态的弹出层,布布扣,bubuko.com

时间: 2024-07-31 16:59:22

制作一个有模态的弹出层的相关文章

Js实例——模态框弹出层

1.描述 百度登录就是一个模态框弹出层.思路分析:先将灰色大背景和登陆盒子设为不可见,利用JS将其动态加载可见. 2.代码 <!DOCTYPE html> <html> <head> <title>模态框弹出层.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-

一个基于jQuery的弹出层插件XYTips

效果预览:http://www.juheweb.com/js/tc/80.html 标签: jQuery [1].[代码] [JavaScript]代码 跳至 [1] ? 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 48 49 50 51 52 53 54 55 56 57 58

layer.js,,,分享一个好用的弹出层

基本属性: <!DOCTYPE html> <html> <head> <head> <meta content="text/html;charset=utf-8" http-equiv="Content-Type" /> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-s

jquery弹出层 +CSS箭头制作

这里做一个带箭头的弹出层. 1.如果浏览器不支持CSS3,我们可以用border模拟.但是这个时候箭头不能带边框,即纯色,不太好看,这个时候我们可以利用两个b标签实现: 首先需要制作一个向上的箭头,箭头的颜色为弹出层边框颜色,其它方向可以模仿做出来. .arrow-outer{ width:0px;height:0px;display:block; border-bottom:10px solid #AFAFAF; border-left:10px solid transparent; bord

分享一个JQuery弹出层插件

JQuery插件TipsWindown 1.1 一个基于jQuery的弹出层.支持拖拽,支持内容为文字,图片,URL等!至于兼容性.在IE6下,弹出对像无法绝对固定.其他应该没啥大问题: 最新更新:(2010-08-12):修正IE6下不能遮住下拉菜单的BUG,增加拖动时半透明效果.句容市鄂茂钢铁 应用演示 弹出文本信息提示:   我是下拉菜单 tipsWindown("提示","text:提示信息内容","250","150"

layer弹出层框架alert与msg详解

layer--->web弹层组件 代码: 1 layer.alert('见到你真的很高兴', {icon: 6}); 这是一个最简单的弹出层,可根据icon配置左边的图标 通常情况下,除了弹窗之外我们一般都会有对按钮做回调处理的一些操作 如图: 1 layer.alert('墨绿风格,点击确认看深蓝', { 2 skin: 'layui-layer-molv' //样式类名 自定义样式 3 ,closeBtn: 1 // 是否显示关闭按钮 4 ,anim: 1 //动画类型 5 ,btn: ['

模拟layui弹出层

以前觉得自己手写一个类似layui的弹出层是挺遥远的事,因为完全没有头绪,即便在layui官网知道layui使用的都是C3动画 之前试过控制width:0;height:0来做动画,结果惨不忍睹,直到几天前灵机一动联想到了tranform的scale属性,才稍微触及到了皮毛 为了不添加格外的HTML结构,所以弹出层也是动态生成 layui弹出框和遮罩层是同级结构,而我把弹出框放遮罩层里了,所以关闭时要用animationend来监听,弹出框做完动画后才删除遮罩层 确认框confirm之前也想跟原

jquery制作弹出层带遮罩效果,点击阴影部分层消失

jquery制作弹出层带遮罩效果,点击阴影部分层消失. 整体还是比较简单的. HTML代码很简单 1 <a href="#" class="big-link" data-reveal-id="myModal" data-animation="fade">jquery点我弹出</a> 2 <div id="myModal" class="reveal-modal&quo

jQuery点击弹出层,弹出模态框,点击模态框消失

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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 <!DOCTYPE html>