📄 popup.lib.js
字号:
/*
By Hangring
#2007.12.27#
---
use list:
> global.lib.js
> node.lib.js
> event.lib.js
> browser.lib.js
---
浮动层/面板
*/
$Defined('PopUp');
var PopUp = {};
PopUp.Index = 1;
// 创建面板
/*
var panel = PopUp.Panel(node, node_width, node_height, is_center_or_not);
// className 设置panel的样式,包含position属性设置
CSS.AddClass(panel, className);
// 设置panel浮动,并是否以警告框的方式呈现
PopUp.AddPopUp(panel, !true);
*/
PopUp.Panel =
function (item /* string or node:String|HTMLElement */, w /* width:Number */, h /* height:Number */, p /* center or not:Boolean */) {
// 是否已在文档中
var leaf = oNode.IsNode(item) && item.parentNode;
var panel = leaf ? item : oNode.CreateNode('div');
panel.tabIndex = "-1";
panel.style.position = 'absolute';
// 防止瞬时出现滚动条引起位置错位
panel.style.left = '-10000px';
panel.style.top = '-10000px';
panel.style.zIndex = 2;
//panel.style.zIndex = PopUp.Index++;
if (leaf) panel.$Parent = panel.parentNode;
// 可调用使面板居中
panel.Center = function (center) {
if (center || p) {
if (leaf) {
panel.style.display = 'block';
w = panel.offsetWidth;
h = panel.offsetHeight;
}
w = w || panel.offsetWidth;
h = h || panel.offsetHeight;
panel.$P = p;
panel.style.left = ((Global.GetClientWidth() || Global.GetDocWidth()) - w) / 2 + 'px';
panel.style.top = Global.GetScrollTop() + ((Global.GetClientHeight() || Global.GetDocHeight()) - h) / 2 + 'px';
function move () {
if (w != panel.offsetWidth) w = panel.offsetWidth;
if (h != panel.offsetHeight) h = panel.offsetHeight;
panel.style.left = ((Global.GetClientWidth() || Global.GetDocWidth()) - w) / 2 + 'px';
panel.style.top = Global.GetScrollTop() + ((Global.GetClientHeight() || Global.GetDocHeight()) - h) / 2 + 'px';
if (panel.$D) {
//panel.$D.style.width = Global.GetDocWidth() - (Browser.IsIE56 ? 20 : 0) + 'px';
//panel.$D.style.height = Global.GetDocHeight() - (Browser.IsIE56 ? 5 : 0) + 'px';
panel.$D.Show();
}
if (panel.$M) {
panel.$M.style.left = panel.style.left;
panel.$M.style.top = panel.style.top;
}
}
panel.$Move = move;
Events.AttachEvent(window, 'resize', move);
}
};
panel.Center();
// 针对字符串与节点类型执行添加
if (typeof item != 'string') {
if (!leaf) oNode.AddNode(item, panel);
}
else {
panel.innerHTML = item;
}
return panel;
};
// 添加浮动面板
PopUp.AddPopUp =
function (node /* panel:HTMLElement */, modal /* isAlert or isPanel:Boolean */, target /* container:HTMLElement */) {
//if (! oNode.AddNode(node, target)) return false;
oNode.AddNode(node, target);
if (modal) var D = node.$D = CSS.AddBack(node, true);
return node.$D;
};
// 为非警告框模式使用
// 针对ie6及以下版本,屏蔽select对象
PopUp.AddMask = function (node /* panel:HTMLElement */) {
if (!Browser.IsIE56) return;
var M = node.$M = oNode.CreateNode('iframe');
oNode.InsertBefore(M, node);
M.frameBorder = 0;
M.scrolling = 'no';
with (M.style) {
position = 'absolute';
left = node.style.left;
top = node.style.top;
width = node.offsetWidth + 'px';
height = node.offsetHeight + 'px';
opacity = 0;
filter = 'alpha(opacity=0)';
}
};
// 移除浮动面板
// 由PopUp创建的浮动层,应该用此方法从文档中移除,否则可能会出现意外错误
PopUp.RemovePopUp = function (node /* panel:HTMLElement */, target) {
target = target || document.body;
if (node.parentNode != target) return false;
oNode.RemoveNode(node, target);
if (node.$D) oNode.RemoveNode(node.$D, node.$D.parentNode);
if (node.$M) oNode.RemoveNode(node.$M, node.parentNode);
if (node.$BG) oNode.RemoveNode(node.$BG);
if (node.$P) Events.RemoveEvent(window, 'resize', node.$Move);
};
// 如果node已经在文档中,通过PopUp.Panel(node)设置时,
// 在其后可通过此方法将该node取消浮动,而不从文档树中删除,
// node.$Parent为此方法必须设置的参数
// 使用PopUp.RemovePopUp()可删除浮动层
PopUp.RestorePopUp = function (node /* panel:HTMLElement */) {
node.style.left = '-10000px';
node.style.top = '-10000px';
PopUp.RemovePopUp(node, node.parentNode);
node.$Parent && oNode.AddNode(node, node.$Parent);
};
/* 设置浮动层位置 */
PopUp.SetXY = function (node /* panel:HTMLElement */, x, y) {
node.style.left = typeof x == 'string' ? x : x + 'px';
node.style.top = typeof y == 'string' ? y : y + 'px';
if (node.$M) {
node.$M.style.left = node.style.left;
node.$M.style.top = node.style.top;
}
};
/* 重置位置 */
PopUp.ResetXY = function (node /* panel:HTMLElement */) {
if (node.$M) {
node.$M.style.left = node.style.left;
node.$M.style.top = node.style.top;
}
}
/* 设置浮动层尺寸 */
PopUp.SetSize = function (node /* panel:HTMLElement */, w /* :Number|String */, h /* :Number|String */) {
this.SetSizeW(node, w);
this.SetSizeH(node, h);
};
PopUp.SetSizeW = function (node /* panel:HTMLElement */, w /* :Number|String */) {
w = typeof w == 'string' ? w : w + 'px';
node.style.width = w;
this.ResetSize(node);
};
PopUp.SetSizeH = function (node /* panel:HTMLElement */, h /* :Number|String */) {
h = typeof h == 'string' ? h : h + 'px';
node.style.height = h;
this.ResetSize(node);
};
/* 重置大小 */
PopUp.ResetSize = function (node /* panel:HTMLElement */) {
if (node.$M) {
node.$M.style.width = node.offsetWidth + 'px';
node.$M.style.height = node.offsetHeight + 'px';
}
};
// 设置显示隐藏浮动层
PopUp.SetVisible = function (node /* panel:HTMLElement */, visible /* :Boolean */) {
visible = visible ? 'visible' : 'hidden';
node.style.visibility = visible;
if (node.$D) node.$D.style.visibility = visible;
if (node.$M) node.$M.style.visibility = visible;
if (node.$BG) node.$BG.style.visibility = visible;
};
// 设置显示隐藏浮动层
PopUp.SetDisplay = function (node /* panel:HTMLElement */, display /* :Boolean */) {
display = display ? 'block' : 'none';
node.style.display = display;
if (node.$D) node.$D.style.display = display;
if (node.$M) node.$M.style.display = display;
if (node.$BG) node.$BG.style.display = display;
};
// 设置蒙版是否可见
PopUp.HideModal = function (node /* panel:HTMLElement */) {
if (node.$D) CSS.SetAlpha(node.$D, 0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -