封装常用的js(base.js)——【05】自定义弹出框.封装水平垂直居中center(),和resize() .

简介:

原文链接:http://www.cnblogs.com/henw/archive/2011/12/19/2293585.html

需求:自定义一个弹出登陆框的界面,主要特点有隐藏hide(),显示show(),浏览器窗口改变大小触发事件resize(),计算屏幕居中位置等功能。

wKioL1hiDlLgb1XeAABPPVVIxsQ734.png-wh_50

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
//设置物体居中
Base.prototype.center= function (width,height){
     var  top=(document.documentElement.clientHeight-height)/2;
     var  left=(document.documentElement.clientWidth-width)/2;
     for ( var  i=0;i< this .elements.length;i++){
         this .elements[i].style.top=top+ 'px' ;
         this .elements[i].style.left=left+ 'px' ;
     }
     return  this ;
}
 
//当浏览器改变窗口大小的时候,触发事件
Base.prototype.resize= function (){
     window.onresize=fn;
     return  this ;
}
 
 
/*
前台调用
 
var login=$().getId('login');
//登录框
login.center(350,250).resize(function(){
     login.center(350,250); 
});
//弹出登录框
$().getClass('login').click(function(){
     login.css('display','block');
});
//登录框关闭按钮
$().getClass('close').click(function(){
     login.css('display','none');
});
 
*/

基础库:

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
//前台调用
var  $ =  function  (_this) {
     return  new  Base(_this);
}
 
//基础库
function  Base(_this) {
     //创建一个数组,来保存获取的节点和节点数组
     this .elements = [];
     if  (_this != undefined) {     //_this是一个对象,undefined也是一个对象,区别与typeof返回的带单引号的'undefined'
         this .elements[0] = _this;
     }
}
 
//获取ID节点
Base.prototype.getId =  function  (id) {
     this .elements.push(document.getElementById(id));
     return  this ;
};
 
//获取元素节点数组
Base.prototype.getTagName =  function  (tag) {
     var  tags = document.getElementsByTagName(tag);
     for  ( var  i = 0; i < tags.length; i ++) {
         this .elements.push(tags[i]);
     }
     return  this ;
};
 
//获取CLASS节点数组
Base.prototype.getClass =  function  (className, idName) {
     var  node =  null ;
     if  (arguments.length == 2) {
         node = document.getElementById(idName);
     else  {
         node = document;
     }
     var  all = node.getElementsByTagName( '*' );
     for  ( var  i = 0; i < all.length; i ++) {
         if  (all[i].className == className) {
             this .elements.push(all[i]);
         }
     }
     return  this ;
}
 
//获取某一个节点
Base.prototype.getElement =  function  (num) {   
     var  element =  this .elements[num];
     this .elements = [];
     this .elements[0] = element;
     return  this ;
};
 
//设置CSS
Base.prototype.css =  function  (attr, value) {
     for  ( var  i = 0; i <  this .elements.length; i ++) {
         if  (arguments.length == 1) {
             if  ( typeof  window.getComputedStyle !=  'undefined' ) { //W3C
                 return  window.getComputedStyle( this .elements[i],  null )[attr];
             else  if  ( typeof  this .elements[i].currentStyle !=  'undeinfed' ) { //IE
                 return  this .elements[i].currentStyle[attr];
             }
         }
         this .elements[i].style[attr] = value;
     }
     return  this ;
}
 
//添加Class
Base.prototype.addClass =  function  (className) {
     for  ( var  i = 0; i <  this .elements.length; i ++) {
         if  (! this .elements[i].className.match( new  RegExp( '(\s|^)'  +className + '(\s|$)' ))) {
             this .elements[i].className +=  ' '  + className;
         }
     }
     return  this ;
}
 
//移除Class
Base.prototype.removeClass =  function  (className) {
     for  ( var  i = 0; i <  this .elements.length; i ++) {
         if  ( this .elements[i].className.match( new  RegExp( '(\s|^)'  +className + '(\s|$)' ))) {
             this .elements[i].className =  this .elements[i].className.replace( new  RegExp( '(\s|^)'  +className + '(\s|$)' ),  ' ' );
         }
     }
     return  this ;
}
 
//添加link或style的CSS规则
Base.prototype.addRule =  function  (num, selectorText, cssText, position) {
     var  sheet = document.styleSheets[num];
     if  ( typeof  sheet.insertRule !=  'undefined' ) { //W3C
         sheet.insertRule(selectorText +  '{'  + cssText +  '}' , position);
     else  if  ( typeof  sheet.addRule !=  'undefined' ) { //IE
         sheet.addRule(selectorText, cssText, position);
     }
     return  this ;
}
 
//移除link或style的CSS规则
Base.prototype.removeRule =  function  (num, index) {
     var  sheet = document.styleSheets[num];
     if  ( typeof  sheet.deleteRule !=  'undefined' ) { //W3C
         sheet.deleteRule(index);
     else  if  ( typeof  sheet.removeRule !=  'undefined' ) { //IE
         sheet.removeRule(index);
     }
     return  this ;
}
 
//设置innerHTML
Base.prototype.html =  function  (str) {
     for  ( var  i = 0; i <  this .elements.length; i ++) {
         if  (arguments.length == 0) {
             return  this .elements[i].innerHTML;
         }
         this .elements[i].innerHTML = str;
     }
     return  this ;
}
 
//设置鼠标移入移出方法
Base.prototype.hover =  function  (over, out) {
     for  ( var  i = 0; i <  this .elements.length; i ++) {
         this .elements[i].onmouseover = over;
         this .elements[i].onmouseout = out;
     }
     return  this ;
};
 
//设置显示
Base.prototype.show =  function  () {
     for  ( var  i = 0; i <  this .elements.length; i ++) {
         this .elements[i].style.display =  'block' ;
     }
     return  this ;
}
 
//设置隐藏
Base.prototype.hide =  function  () {
     for  ( var  i = 0; i <  this .elements.length; i ++) {
         this .elements[i].style.display =  'none' ;
     }
     return  this ;
}
 
//设置物体居中
Base.prototype.center =  function  (width, height) {
     var  top = (document.documentElement.clientHeight - height) / 2;
     var  left = (document.documentElement.clientWidth - width) / 2;
     for  ( var  i = 0; i <  this .elements.length; i ++) {
         this .elements[i].style.top = top +  'px' ;
         this .elements[i].style.left = left +  'px' ;
     }
     return  this ;
}
 
//触发点击事件
Base.prototype.click =  function  (fn) {
     for  ( var  i = 0; i <  this .elements.length; i ++) {
         this .elements[i].onclick = fn;
     }
     return  this ;
}
 
//触发浏览器窗口事件
Base.prototype.resize =  function  (fn) {
     window.onresize = fn;
     return  this ;
}

本文转自  小旭依然  51CTO博客,原文链接:http://blog.51cto.com/xuyran/1886527
相关文章
|
5月前
|
开发框架 前端开发 JavaScript
在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
在Vue&Element前端项目中,使用FastReport + pdf.js生成并展示自定义报表
|
3月前
|
前端开发 数据安全/隐私保护
crypto-js中AES的加解密封装
文章介绍了如何在前端使用crypto-js库进行AES加密和解密,提供了加解密的函数封装示例,并演示了如何加密和解密字符串或对象。
306 1
crypto-js中AES的加解密封装
|
4月前
|
存储 前端开发 JavaScript
javascript 异常问题之为自定义异常提供丰富的上下文信息如何实现
javascript 异常问题之为自定义异常提供丰富的上下文信息如何实现
|
2月前
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
74 4
|
3月前
|
设计模式 JavaScript
JS发布订阅模式封装(纯手工)
发布订阅模式是JS常用的设计模式,在面试中也会经常遇到,以下是我的手写实现方式,经测试效果不错,小伙伴们们可以直接拷贝使用。
|
4月前
|
前端开发 程序员
HTML+CSS+JavaScript制作动态七夕表白网页(含音乐+自定义文字)
一年一度的520情人节/七夕情人节/女朋友生日/程序员表白,是不是要给女朋友或者正在追求的妹子一点小惊喜呢,今天这篇博客就分享下前端代码如何实现HTML+CSS+JavaScript制作七夕表白网页(含音乐+自定义文字)。赶紧学会了,来制作属于我们程序员的浪漫吧!
106 0
HTML+CSS+JavaScript制作动态七夕表白网页(含音乐+自定义文字)
|
5月前
|
JavaScript NoSQL Serverless
函数计算产品使用问题之如何创建一个自定义运行时并指定Node.js版本
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
4月前
|
前端开发 微服务 API
微服务浪潮下的JSF革新:如何在分散式架构中构建统一而强大的Web界面
【8月更文挑战第31天】随着微服务架构的兴起,企业将应用拆分成小型、独立的服务以提高系统可维护性和可扩展性。本文探讨如何在微服务架构下构建和部署JavaServer Faces (JSF) 应用,通过RESTful服务实现前后端分离,提升灵活性和适应性。
61 0
|
4月前
|
JavaScript 前端开发 数据安全/隐私保护
Vue.js 表单处理技巧大揭秘!v-model 与自定义验证综合运用,打造高效表单处理体验!
【8月更文挑战第31天】Vue.js 是一款备受欢迎的前端框架,其表单处理功能强大且灵活。v-model 指令可实现双向数据绑定,简化表单元素值与 Vue 实例数据的同步过程;结合自定义验证规则,则能确保用户输入数据符合特定要求。无论是简单的单字段校验还是复杂的多字段验证,Vue.js 均提供了简洁有效的解决方案,有效提升了表单处理效率及用户体验。通过综合运用 v-model 和自定义验证,开发者能够实时反馈错误信息并控制表单状态,从而增强应用的交互性与可靠性。
63 0
|
4月前
|
JavaScript PHP 开发者
PHP中的异常处理与自定义错误处理器构建高效Web应用:Node.js与Express框架实战指南
【8月更文挑战第27天】在PHP编程世界中,异常处理和错误管理是代码健壮性的关键。本文将深入探讨PHP的异常处理机制,并指导你如何创建自定义错误处理器,以便优雅地管理运行时错误。我们将一起学习如何使用try-catch块捕获异常,以及如何通过set_error_handler函数定制错误响应。准备好让你的代码变得更加可靠,同时提供更友好的错误信息给最终用户。