js 提示框的实现---组件开发之(一)

自己做了一个简单的提示框,供自己使用,也可以供他人参考,看懂此文,是理解组件开发的入门

思路比较简单:

1.常规写法:

1.1. 创建一个构造函数

1.2. 给构造函数的原型对象添加show 和hide方法

1.3. 实力化调用构造函数

css 代码:

 1 .alert {
 2     padding: 15px;
 3     margin-bottom: 20px;
 4     border: 1px solid transparent;
 5     border-radius: 4px;
 6 }
 7 
 8 .alert-warning {
 9     color: #8a6d3b;
10     background-color: #fcf8e3;
11     border-color: #faebcc;
12 }
13 
14 .alert-success {
15     color: #3c763d;
16     background-color: #dff0d8;
17     border-color: #d6e9c6;
18 }
19 
20 .alert .close {
21     text-decoration: none;
22     float: right;
23     font-size: 21px;
24     font-weight: 700;
25     line-height: 1;
26     color: #000;
27     text-shadow: 0 1px 0 #fff;
28     filter: alpha(opacity=20);
29     opacity: .2;
30 }
31 
32 .alert-info {
33     color: #31708f;
34     background-color: #d9edf7;
35     border-color: #bce8f1;
36 }
37 
38 .alert-danger {
39     color: #a94442;
40     background-color: #f2dede;
41     border-color: #ebccd1;
42 }
View Code

html代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <link rel="stylesheet" href="./css/layout1.css">
 7     <script>
 8       //构造一个函数,参数为一个对象,实例化时,有值则进行传值,没有则赋值一个空对象
 9       function popAlert( opt ){
10           this.opt = opt || {};
11       };
12       // 显示函数的设置
13       popAlert.prototype.show = function(){
14          //   创建一个div元素
15           var Odiv = document.createElement('div');
16           var that = this;
17           var aclose ;
18           //   给div添加class属性,这里使用的是多个属性的添加,同时将opt的class传递过来
19           Odiv.classList.add('alert',this.opt['class']||'' );
20           //   设定div包含的内容
21           Odiv.innerHTML = this.opt['content'] || '';
22           Odiv.innerHTML += "<a href='javascript:;' class='close'> X </a>";
23           // 把div元素整体插入body内,appendChild是插在最后面
24           document.body.appendChild(Odiv);
25 
26           aclose = document.querySelectorAll('.alert > .close');
27           // 点击close按钮,则影藏此按钮的父级元素
28           aclose.forEach(function(val){
29               val.addEventListener( 'click',function(){
30                   that.hide( this.parentNode );
31               });
32           });
33       };
34       //   影藏函数设置
35       popAlert.prototype.hide = function( obj ){
36           obj.style.display = 'none';
37       };
38 
39        window.onload = function(){
40            //    新对象实例化及调用show函数
41            var oAlertSuccess = new popAlert({
42                'class':'alert-success',
43                'content':'这是成功提示信息,恭喜你!'
44            });
45            oAlertSuccess.show();
46 
47             var oAlertInfo = new popAlert({
48                'class':'alert-info',
49                'content':'这是信息提示信息,如果你已经知道了,请忽略!'
50            });
51            oAlertInfo.show();
52 
53             var oAlertWarning = new popAlert({
54                'class':'alert-warning',
55                'content':'这是警告提示信息,请知悉!'
56            });
57            oAlertWarning.show();
58 
59             var oAlertDanger = new popAlert({
60                'class':'alert-danger',
61                'content':'这是危险提示信息,重要!请知悉!'
62            });
63            oAlertDanger.show();
64        }
65     </script>
66 </head>
67 <body>
68 </body>
69 </html>

运行结果:

 

 

2. 换一种方式写:

把 js 调用和代码分开:

 css 代码:还是和上面是一样的

 1 .alert {
 2     padding: 15px;
 3     margin-bottom: 20px;
 4     border: 1px solid transparent;
 5     border-radius: 4px;
 6 }
 7 
 8 .alert-warning {
 9     color: #8a6d3b;
10     background-color: #fcf8e3;
11     border-color: #faebcc;
12 }
13 
14 .alert-success {
15     color: #3c763d;
16     background-color: #dff0d8;
17     border-color: #d6e9c6;
18 }
19 
20 .alert .close {
21     text-decoration: none;
22     float: right;
23     font-size: 21px;
24     font-weight: 700;
25     line-height: 1;
26     color: #000;
27     text-shadow: 0 1px 0 #fff;
28     filter: alpha(opacity=20);
29     opacity: .2;
30 }
31 
32 .alert-info {
33     color: #31708f;
34     background-color: #d9edf7;
35     border-color: #bce8f1;
36 }
37 
38 .alert-danger {
39     color: #a94442;
40     background-color: #f2dede;
41     border-color: #ebccd1;
42 }
View Code

html 代码:script标签内,只写调用的代码

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <link rel="stylesheet" href="./css/layout1.css">
 7     <script src="./js/layout.js"></script>
 8     <script>
 9        window.onload = function(){
10            //    新对象实例化及调用show函数
11            var oAlertSuccess = new huanying2015.popAlert({
12                'class':'alert-success',
13                'content':'这是成功提示信息,恭喜你!'
14            });
15            oAlertSuccess.show();
16 
17             var oAlertInfo = new huanying2015.popAlert({
18                'class':'alert-info',
19                'content':'这是信息提示信息,如果你已经知道了,请忽略!'
20            });
21            oAlertInfo.show();
22 
23             var oAlertWarning = new huanying2015.popAlert({
24                'class':'alert-warning',
25                'content':'这是警告提示信息,请知悉!'
26            });
27            oAlertWarning.show();
28 
29             var oAlertDanger = new huanying2015.popAlert({
30                'class':'alert-danger',
31                'content':'这是危险提示信息,重要!请知悉!'
32            });
33            oAlertDanger.show();
34        }
35     </script>
36 </head>
37 <body>
38 </body>
39 </html>

js 代码:与之前写在一起的差异是:一,用一个匿名的立即执行表达式函数把代码包含起来了,二是在表达式内部增加了几行代码,即增加了一个空对象huanying2015,然后把popAlert 挂在huanying2015 下面,再把huanying2015挂到window下面

 1 ;(function(window,undefined){
 2      //构造一个函数,参数为一个对象,实例化时,有值则进行传值,没有则赋值一个空对象
 3       function popAlert( opt ){
 4           this.opt = opt || {};
 5       };
 6       // 显示函数的设置
 7       popAlert.prototype.show = function(){
 8          //   创建一个div元素
 9           var Odiv = document.createElement('div');
10           var that = this;
11           var aclose ;
12           //   给div添加class属性,这里使用的是多个属性的添加,同时将opt的class传递过来
13           Odiv.classList.add('alert',this.opt['class']||'' );
14           //   设定div包含的内容
15           Odiv.innerHTML = this.opt['content'] || '';
16           Odiv.innerHTML += "<a href='javascript:;' class='close'> X </a>";
17           // 把div元素整体插入body内,appendChild是插在最后面
18           document.body.appendChild(Odiv);
19 
20           aclose = document.querySelectorAll('.alert > .close');
21           // 点击close按钮,则影藏此按钮的父级元素
22           aclose.forEach(function(val){
23               val.addEventListener( 'click',function(){
24                   that.hide( this.parentNode );
25               });
26           });
27       };
28       //   影藏函数设置
29       popAlert.prototype.hide = function( obj ){
30           obj.style.display = 'none';
31       };
32 
33       // 设置一个空对象:huanying2015
34       var huanying2015 = {};
35       //   把popAlert 挂在huanying2015下面
36       huanying2015 = {
37           'popAlert' : popAlert,
38       };
39       //   然后把huanying2015挂在window 对象下面,这样就可以在外面使用huanying2015调用popAlert 了
40       window.huanying2015 = huanying2015;
41       
42 })(window,undefined);

运行结果:还是一样的

 

 

转载于:https://www.cnblogs.com/huanying2015/p/8067030.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
组件名称:ymPrompt消息提示组件 2.0 演示地址:http://bbs.okajax.com/demo/31/ =============================================================================== 组件说明:在web开发中,对于浏览器默认的消息提示框(如alert,confirm等)外观无法控制,为了实现更好的界面效果,于是模拟系统的消息提示框实现了该组件。在外观上可以通过css进行完全的控制。 =============================================================================== 组件功能介绍: 1、调用方式简单,直接使用ymPrompt.alert()的方式调用,传入相应的参数即可。 2、兼容IE6.0+、FF1.5+、Opear9+(在Opear下显示有一个小缺陷),兼容HTML4/XHTML1.0页面渲染模式。 3、完全的CSS皮肤定制功能,所有外观包括显示图标/关闭按钮等都可以通过css设置。目前提供了五种皮肤,Vista、QQ、dmm-green、ExtBlue和BlackColl。有兴趣可以修改样式表文件定义新的皮肤。 4、提供四种消息类型。分别为消息提示、成功信息、错误信息、询问信息。 5、弹出消息框时屏蔽页面其它元素的操作,自动隐藏页面select及iframe下select(无限级select隐藏),并遮罩iframe等元素。 6、页面select控件状态还原时保持原状态,即如果原来select就是隐藏的,则消息框弹出并关闭后该select仍保持隐藏状态,而只显示原本显示的select。 7、消息组件弹出时屏蔽除Tab和回车外的几乎所有键盘操作(包括F5),“消息确认框”支持“tab键/左右方向键”切换确定/取消焦点。 8、可以页面加载的任意时间调用,如页面初始化时调用,页面加载完成后调用。 9、支持通过JSON和传统的参数传入方式。如ymprompt.alert('消息内容',300,200,'消息标题',handler)和ymprompt.alert({message:'消息内容',width:300,height:200,title:'消息标题',handler:handler}),这两种写法是等价的。 10、只需要一个回调函数,可捕获确定、取消及关键按钮的点击事件。函数改变了1.0版需要对确定和取消按钮分别写回调函数及不支持关闭事件的缺陷, 11、完全的封装,对外只暴露一个ymPrompt变量,有效防止与使用者程序变量的冲突。 12、程序(js)与样式(css)的完全分离,取消了1.0中自动加载css的功能,用户可根据需要加载对应css样式表单,降低了对样式配置的复杂度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值