JavaScript ~ 動態文字效果

 

(1) 將以下資料複製到 html 檔案的 <head> 標記下:
<Script Language="Javascript">
<!-- Hiding
bname=navigator.appName;
bversion=parseInt(navigator.appVersion)
if ((bname=="Netscape" && bversion>=4) || (bname=="Microsoft Internet Explorer" && bversion>=4)){
if (bname=="Netscape"){
brows=true
dt=1
}
else{
brows=false
dt=40
}
var z=0;
var msg=0;
var rgb=0;
var status=true;
var updwn=false;
var message= new Array();
var value=0;
var timer1;
var timer2;
var timer3;
var convert = new Array()
var hexbase= new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");

// 以下加入顯示的文字,可以隨意添加,只是不要改變其他內容.


var bgcolor="#FFFFFF"; //背景色
var color="#669933"; //字元顏色

message[0]='Welcome to my homepage!!!'
message[1]='這是動態文字特效示範'
message[2]='完全支援 IE 4 and Netscape 4'
message[3]='你會看見文字像電影字幕一般,時隱時現'
message[4]='是不是很有趣呢?'
message[5]='還不快快動手做一個!'

// 以上是顯示的文字,可以隨意添加,只是不要改變其他內容.

for (x=0; x<16; x++){
for (y=0; y<16; y++){
convert[value]= hexbase[x] + hexbase[y];
value++;
}
}

redx=color.substring(1,3);
greenx=color.substring(3,5);
bluex=color.substring(5,7);
hred=eval(parseInt(redx,16));
hgreen=eval(parseInt(greenx,16));
hblue=eval(parseInt(bluex,16));
eredx=bgcolor.substring(1,3);
egreenx=bgcolor.substring(3,5);
ebluex=bgcolor.substring(5,7);
ered=eval(parseInt(eredx,16));
egreen=eval(parseInt(egreenx,16));
eblue=eval(parseInt(ebluex,16));
red=ered;
green=egreen;
blue=eblue;

function start(){
if ((bname=="Netscape" && bversion>=4) || (bname=="Microsoft Internet Explorer" && bversion>=4)){
if (brows)
res=document.layers['textanim'].top
else
res=textanim.style.top
updwn=true;
timer1=window.setInterval('up()',dt)
}
}

function stop(){
if ((bname=="Netscape" && bversion>=4) || (bname=="Microsoft Internet Explorer" && bversion>=4)){
window.clearInterval(timer1);
window.clearInterval(timer2);
window.clearTimeout(timer3);
}
}

function breakf(){
if (status){
window.clearInterval(timer1);
window.clearInterval(timer2);
window.clearTimeout(timer3);
status=false
return;
}
else{
if (updwn)
timer1=window.setInterval('up()',dt)
else
timer2=window.setInterval('down()',dt)
status=true;
}
}


function up(){
if (red<hred){
if ((red+15)<hred){
red+=15;
redx = convert[red]
}
else{
red=hred
redx = convert[red]
}
}

if (red>hred){
if ((red-15)>hred){
red-=15;
redx = convert[red]
}
else{
red=hred
redx = convert[red]
}
}

if (green<hgreen){
if ((green+15)<hgreen){
green+=15;
greenx = convert[green]
}
else{
green=hgreen
greenx = convert[green]
}
}

if (green>hgreen){
if ((green-15)>hgreen){
green-=15;
greenx = convert[green]
}
else{
green=hgreen
greenx = convert[green]
}
}

if (blue<hblue){
if ((blue+15)<hblue){
blue+=15;
bluex = convert[blue]
}
else{
blue=hblue
bluex = convert[blue]
}
}

if (blue>hblue){
if ((blue-15)>hblue){
blue-=15;
bluex = convert[blue]
}
else{
blue=hblue
bluex = convert[blue]
}
}

rgb = "#"+redx+greenx+bluex;
if (brows){
document.layers['textanim'].document.linkColor=rgb;
document.layers['textanim'].document.vlinkColor=rgb;
document.layers['textanim'].document.writeln('<Pre><P Class="main" Align="Center"><font color="'+rgb+'">'+message[msg]+'</font></P></Pre>')
document.layers['textanim'].document.close();
}
else{
textanim.document.linkColor=rgb;
textanim.document.vlinkColor=rgb;
textanim.innerHTML='<Pre><P Class="main" Align="Center"><font color="'+rgb+'">'+message[msg]+'</font></P></Pre>'
}
if (z<19){
if (brows)
document.layers['textanim'].top-=2
else
textanim.style.posTop-=2
z++
}
else
{
updwn=false;
window.clearInterval(timer1);
timer2=window.setInterval('down()',dt)
}
}


function down(){
if (red<ered){
if ((red+15)<ered){
red+=15;
redx = convert[red]
}
else{
red=ered
redx = convert[red]
}
}

if (red>ered){
if ((red-15)>ered){
red-=15;
redx = convert[red]
}
else{
red=ered
redx = convert[red]
}
}

if (green<egreen){
if ((green+15)<egreen){
green+=15;
greenx = convert[green]
}
else{
green=egreen
greenx = convert[green]
}
}

if (green>egreen){
if ((green-15)>egreen){
green-=15;
greenx = convert[green]
}
else{
green=egreen
greenx = convert[green]
}
}

if (blue<eblue){
if ((blue+15)<eblue){
blue+=15;
bluex = convert[blue]
}
else{
blue=eblue
bluex = convert[blue]
}
}

if (blue>eblue){
if ((blue-15)>eblue){
blue-=15;
bluex = convert[blue]
}
else{
blue=eblue
bluex = convert[blue]
}
}

rgb = "#"+redx+greenx+bluex;
if (brows){
document.layers['textanim'].document.linkColor=rgb;
document.layers['textanim'].document.vlinkColor=rgb;
document.layers['textanim'].document.writeln('<Pre><P Class="main" Align="Center"><font color="'+rgb+'">'+message[msg]+'</font></P></Pre>')
document.layers['textanim'].document.close();
}
else{
textanim.document.linkColor=rgb;
textanim.document.vlinkColor=rgb;
textanim.innerHTML='<Pre><P Class="main" Align="Center"><font color="'+rgb+'">'+message[msg]+'</font></P></Pre>'
}
if (z<38){
if (brows)
document.layers['textanim'].top-=2
else
textanim.style.posTop-=2
z++
}
else
{
if (brows){
document.layers['textanim'].document.writeln('')
document.layers['textanim'].document.close();
}
else
textanim.innerHTML='';
window.clearInterval(timer2);
if(msg<message.length-1){
msg++;
z=0;
if (brows)
document.layers['textanim'].top=res;
else
textanim.style.top=res;
timer3=window.setTimeout('start()',100);
}
else
{
msg=0;
z=0;
if (brows)
document.layers['textanim'].top=res;
else
textanim.style.top=res;
timer3=window.setTimeout('start()',2000);
}
}
}
}


// done hiding -->
</Script>
<style type="text/css">
<!-- 
A:LINK {
text-decoration : none;
}
A:VISITED {
text-decoration : none;
}

P.main {
font-family : Comic Sans Ms;
font-size : 16pt;
font-weight : bold;
}
-->
</style>

(2) 在 body onload 加上以下字句:
<BODY BGCOLOR="#FFFFFF" LINK="#FF0000" VLINK="#FF0000" ALINK="#FFFF00" TEXT="#000000" onLoad="start()" onUnload="stop()">
(3) 最後將以下資料複製到 html 檔案的 <body> 標記下:
<div id="textanim" style="position: absolute; left: 18px; top: 221px" onClick="breakf()"> 
</div>