基于mootools插件实现遮罩层新手引导


  本文标签:遮罩层

插件代码
复制代码 代码如下:

/*
---
name: UserGuider
authors:
- Garland Yang
requires: [Core/Class, Core/Element.Style, Core/Element.Event, Core/Element.Dimensions]
version:
- 1.0
...
*/
var UserGuider = new Class({
Implements: [Options, Events],
options: {
UserGuideList: new Array(),
step: 0
},
initialize: function (options) {
this.setOptions(options);
this.step = this.options.step;
},
createGuide: function () {
var self = this;
$$(.userGuide).dispose();
var UserGuideList = this.options.UserGuideList;
var config = UserGuideList[this.step];
if (config == null) {
return;
}
var ele = $$(. + config.className)[0];
if (ele == null) {
return;
}
$$(. + config.className + a).set(target, _blank);
var top = ele.getCoordinates().top;
var right = ele.getCoordinates().right;
var bottom = ele.getCoordinates().bottom;
var left = ele.getCoordinates().left;
var width = ele.getCoordinates().width;
var height = ele.getCoordinates().height;
var x = window.getScrollSize().x;
var y = window.getScrollSize().y;
this.createShadowDiv(shadowTop, left, 0, width, top);
this.createShadowDiv(shadowRight, right, 0, x - right, y);
this.createShadowDiv(shadowButtom, left, bottom, width, y - bottom);
this.createShadowDiv(shadowLeft, 0, 0, left, y);
if (config.src != null) {
this.createUserGuideImg(left + config.imgLeft, top + config.imgTop, config.src);
}
if (config.navUrl != null) {
this.createUserGuideNavImg(right - 50, bottom, config.navUrl);
}
if (this.step > 0) {
this.createUserButton(userguide_undo, UserGuide/undo.png, this.step - 1);
}
if (this.step < UserGuideList.length - 1) {
this.createUserButton(userguide_next, UserGuide/next.png, this.step + 1);
}
this.createUserButton(userguide_finish, UserGuide/finish.png, 10000);
this.changeUserGuideButton();
if (config.src2 != null) {
this.createUserGuideImg(left + config.imgLeft2, top + config.imgTop2, config.src2);
}
return this;
},
createShadowDiv: function (id, left, top, width, height) {
var self = this;
var div = new Element(div);
div.set(id, id);
div.addClass(userGuide);
div.setStyles({
left: left + px,
top: top + px,
width: width + px,
height: height + px,
position: absolute,
background-color: #000,
z-index: 100,
opacity: 0.5,
filter: alpha(opacity=50)
});
$$(body).adopt(div);
return this;
},
createUserGuideNavImg: function (left, top, nav) {
var self = this;
var img = new Element(img);
img.addClass(userGuideNav);
img.addClass(userGuide);
img.setStyles({
cursor: pointer,
z-index: 10000,
left: left + px,
top: top + px,
position: absolute
});
img.set(src, userguide/nav.png);
img.addEvent(click, function () {
window.open(nav);
});
$$(body).adopt(img);
return this;
},
createUserGuideImg: function (left, top, src) {
var self = this;
var img = new Element(img);
img.addClass(userGuideImg);
img.addClass(userGuide);
img.setStyles({
z-index: 1000,
left: left + px,
top: top + px,
position: absolute
});
img.set(src, src);
$$(body).adopt(img);
return this;
},
createUserButton: function (className, src, thisStep) {
var self = this;
var img = new Element(img);
img.addClass(className);
img.addClass(userGuide);
img.setStyles({
cursor: pointer,
z-index: 1000000,
position: absolute
});
img.set(src, src);
img.addEvent(click, function () {
self.step = thisStep;
self.createGuide();
});
$$(body).adopt(img);
return this;
},
changeUserGuideButton: function () {
var self = this;
var size = window.getSize();
var scroll = window.getScroll();
var scrollSize = window.getScrollSize();
$$(.userguide_finish).setStyles({
left: (size.x - 220) + px,
top: (size.y + scroll.y - 80) + px
});
$$(.userguide_next).setStyles({
left: (size.x - 420) + px,
top: (size.y + scroll.y - 80) + px
});
$$(.userguide_undo).setStyles({
left: (size.x - 620) + px,
top: (size.y + scroll.y - 80) + px
});
return this;
}
});

调用方式
复制代码 代码如下:

var UserGuider;
var UserGuideList = new Array({
className: step0,
src: UserGuide/step0.png,
imgTop: 50,
imgLeft: 50
}, {
className: step1,
src: UserGuide/step1.png,
imgTop: -150,
imgLeft: 0,
src2: UserGuide/pic/1.gif,
imgTop2: 210,
imgLeft2: 450
}, {
className: step2,
src: UserGuide/step2.png,
imgTop: 0,
imgLeft: -600,
navUrl: /MyMessageCenter.aspx,
src2: UserGuide/pic/2.gif,
imgTop2: 110,
imgLeft2: 80
}, {
className: step3,
src: UserGuide/step3.png,
imgTop: -150,
imgLeft: 130,
navUrl: /MyTaskSearch.aspx,
src2: UserGuide/pic/3.png,
imgTop2: -120,
imgLeft2: 250
});
window.addEvent(domready,function(){
UserGuider = new UserGuider({
UserGuideList: UserGuideList
})
UserGuider.createGuide();
});