您现在的位置是: 软件 > 设计在线 > 网页陶吧 > 技术平台 > JavaScript > 正文


-Win xp中的多种网络
-试验试验试验试验
-用Freehand实现位图矢量化
-网络电话面面观

精彩Script解读-跟随鼠标的文字特效
2001-09-05· ·听风··yesky

1 2 3  下一页

  现在的Web世界丰富多彩,花样繁多,今天我来给大家介绍一种有趣的文字效果:跟随鼠标的水波纹文字。就是说,当鼠标在页面上滑过时,会有一串文字如水波纹似的跟随。先看看实际的效果。

  实现思路

  1、当鼠标移动到一个新位置时,信息要跟随到这里。为了即时扑捉到坐标值,要将鼠标的移动事件onmousemove附值一个函数Mouse,在其中计算出显示信息的新位置。Event是页面中所发生的事件对象,在这个函数中,event.y表示发生鼠标移动事件时鼠标所在的Y坐标,event.x表示x坐标。为了将显示的信息距离鼠标一定的距离,将event.x增加20附值给xmouse,event.y则直接附值给ymouse。这样,xmouse与ymouse就即时对应了鼠标的当前位置。

  2、为了实现信息的单个字符逐渐波动效果,要为信息字符串中的每个字符(包括空格)建立一个层。初始状态时,每个层的位置都一样,位于左上角。代码如下:
for (i=0; i < n; i++)
document.write('<div id="iemsg" style="position:absolute;top:0px;left:0;height:'+a+';width:'+a+';text-align:center">'+props+msg[i]+'</font></div>');

其中,n表示字符串的长度,在代码段的最前面进行了附值。

  3、为了将这些每个字符所在层全部框于一个范围中,在其外又定义了2个层:
document.write('<div id="outer" style="position:absolute;top:0px;left:0px"><div style="position:relative">');

document.write('</div></div>');

  4、当鼠标移动到新位置时,我们可以从xmouse和ymouse得到显示信息的新起始坐标。Ymouse就是所有显示字符串信息的y坐标,xmouse为第一个字符的x坐标,其他字符的x坐标可以通过增加字符显示宽度值来获取。但是,如果直接将这些计算后的x、y坐标附值给每个字符的层top、left属性,就会造成字符串从旧位置一步到位至新地方的效果(代码中speed=1时),不会形成一浪接一浪的水波纹效果。为此,要设定每个字符移动过程中的速率与步长。在这里,我们将x方向与y方向的移动步长分别设定为新、旧位置x落差和y落差的一半,也就是代码中的speed=0.5。这样,每个字符在x方向与y方向上的移动步长依次成为当前落差的一半、一半的一半、一半的一半的一半……也就是说,步长依次减半,最终抵达新位置。这段代码设计的很精妙,值得玩味:

Y[0]=Y[0]+(ymouse-Y[0])*speed;
y[0]=Math.round(Y[0]);

X[0]=X[0]+(xmouse-X[0])*speed;
x[0]=Math.round(X[0]);

for (var i=1; i < n; i++){
Y[i]=Y[i]+(y[i-1]-Y[i])*speed;
y[i]=Math.round(Y[i]);

X[i]=X[i]+(x[i-1]-X[i])*speed;
x[i]=Math.round(X[i]);
}

  5、为了实现移动过程的连贯性,我们使用setTimeout函数设定x、y坐标计算函数的执行周期。并且,使用window.onload=ripple语句在首次调用页面时启动它。

1 2 3  下一页

■ 相关内容
 平面文字的设计原则及组合
 文字特效设计利器FontTwister1.1速成
 学用Lotus办公——电子邮件系统的创建
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!