跟随鼠标移动的流苏
http://www.chinacxy.com/JsDetail.aspx?id=9
by Lien Z
HTML
<div id="screen"></div>
CSS
html{
overflow:hidden;
}
body{
position:absolute;
height:100%;
width:100%;
margin:0;
padding:0;
}
#screen{
background:#000;
position:absolute;
width:100%;
height:100%;
}
#screen span{
background:#fff;
font-size:0;
overflow:hidden;
width:2px;
height:2px;
}
JavaScript
var Follow = function() {
var $ = function(i) {
return document.getElementById(i)
},
addEvent = function(o, e, f) {
o.addEventListener ? o.addEventListener(e, f, false) : o.attachEvent('on' + e, function() {
f.call(o)
})
},
OBJ = [],
sp, rs, N = 0,
m;
var init = function(id, config) {
this.config = config || {};
this.obj = $(id);
sp = this.config.speed || 4;
rs = this.config.animR || 1;
m = {
x: $(id).offsetWidth * .5,
y: $(id).offsetHeight * .5
};
this.setXY();
this.start();
}
init.prototype = {
setXY: function() {
var _this = this;
addEvent(this.obj, 'mousemove', function(e) {
e = e || window.event;
m.x = e.clientX;
m.y = e.clientY;
})
},
start: function() {
var k = 180 / Math.PI,
OO, o, _this = this,
fn = this.config.fn;
OBJ[N++] = OO = new CObj(null, 0, 0);
for (var i = 0; i < 360; i += 20) {
var O = OO;
for (var j = 10; j < 35; j += 1) {
var x = fn(i, j).x,
y = fn(i, j).y;
OBJ[N++] = o = new CObj(O, x, y);
O = o;
}
}
setInterval(function() {
for (var i = 0; i < N; i++) OBJ[i].run();
}, 16);
}
}
var CObj = function(p, cx, cy) {
var obj = document.createElement("span");
this.css = obj.style;
this.css.position = "absolute";
this.css.left = "-1000px";
this.css.zIndex = 1000 - N;
document.getElementById("screen").appendChild(obj);
this.ddx = 0;
this.ddy = 0;
this.PX = 0;
this.PY = 0;
this.x = 0;
this.y = 0;
...