Javascript 围绕光标旋转文本轨迹

Javascript 围绕光标旋转文本轨迹,javascript,cursor,mouse,Javascript,Cursor,Mouse,我一直在寻找一个脚本,它可以创建一个以圆周运动的光标文本轨迹。我觉得就在五年前,这样的事情还在庸俗的博客网站上随处可见 我能找到的唯一代码是Tim Tilton写的, 发现了变异 及 并在其他一些网站上重复 这段代码似乎有点繁重,因为它将消息的每个字符分离并赋予它自己的div,然后使用公式在光标周围放置和移动这些div 有没有其他方法来创建这样的功能 这里有一点繁重的代码: if (!window.addEventListener && !window.attachEvent |

我一直在寻找一个脚本,它可以创建一个以圆周运动的光标文本轨迹。我觉得就在五年前,这样的事情还在庸俗的博客网站上随处可见

我能找到的唯一代码是Tim Tilton写的, 发现了变异 及 并在其他一些网站上重复

这段代码似乎有点繁重,因为它将消息的每个字符分离并赋予它自己的div,然后使用公式在光标周围放置和移动这些div

有没有其他方法来创建这样的功能

这里有一点繁重的代码:

if (!window.addEventListener && !window.attachEvent || !document.createElement) return;

msg = msg.split('');
var n = msg.length - 1, a = Math.round(size * diameter * 0.208333), currStep = 20,
ymouse = a * circleY + 20, xmouse = a * circleX + 20, y = [], x = [], Y = [], X = [],
o = document.createElement('div'), oi = document.createElement('div'),
b = document.compatMode && document.compatMode != "BackCompat"? document.documentElement : document.body,

mouse = function(e){
 e = e || window.event;
 ymouse = !isNaN(e.pageY)? e.pageY : e.clientY; // y-position
 xmouse = !isNaN(e.pageX)? e.pageX : e.clientX; // x-position
},

makecircle = function(){ // rotation/positioning
 if(init.nopy){
  o.style.top = (b || document.body).scrollTop + 'px';
  o.style.left = (b || document.body).scrollLeft + 'px';
 };
 currStep -= rotation;
 for (var d, i = n; i > -1; --i){ // makes the circle
  d = document.getElementById('iemsg' + i).style;
  d.top = Math.round(y[i] + a * Math.sin((currStep + i) / letter_spacing) * circleY - 15) + 'px';
  d.left = Math.round(x[i] + a * Math.cos((currStep + i) / letter_spacing) * circleX) + 'px';
 };
},

drag = function(){ // makes the resistance
 y[0] = Y[0] += (ymouse - Y[0]) * speed;
 x[0] = X[0] += (xmouse - 20 - X[0]) * speed;
 for (var i = n; i > 0; --i){
  y[i] = Y[i] += (y[i-1] - Y[i]) * speed;
  x[i] = X[i] += (x[i-1] - X[i]) * speed;
 };
 makecircle();
},

init = function(){ // appends message divs, & sets initial values for positioning arrays
 if(!isNaN(window.pageYOffset)){
  ymouse += window.pageYOffset;
  xmouse += window.pageXOffset;
 } else init.nopy = true;
 for (var d, i = n; i > -1; --i){
  d = document.createElement('div'); d.id = 'iemsg' + i;
  d.style.height = d.style.width = a + 'px';
  d.appendChild(document.createTextNode(msg[i]));
  oi.appendChild(d); y[i] = x[i] = Y[i] = X[i] = 0;
 };
 o.appendChild(oi); document.body.appendChild(o);
 setInterval(drag, 25);
},

ascroll = function(){
 ymouse += window.pageYOffset;
 xmouse += window.pageXOffset;
 window.removeEventListener('scroll', ascroll, false);
};

o.id = 'outerCircleText'; o.style.fontSize = size + 'px';

if (window.addEventListener){
 window.addEventListener('load', init, false);
 document.addEventListener('mouseover', mouse, false);
 document.addEventListener('mousemove', mouse, false);
  if (/Apple/.test(navigator.vendor))
   window.addEventListener('scroll', ascroll, false);
}
else if (window.attachEvent){
 window.attachEvent('onload', init);
 document.attachEvent('onmousemove', mouse);
};

我很确定为每个角色创建一个元素就是它们的工作方式。你知道其他的例子/选项吗?我想将代码与我拥有的代码进行比较,但Tim的这段代码似乎是我在任何地方都能找到的唯一源代码。