多彩链接靓起来

数码时尚

  网页中鼠标指到链接文字时,一般会变换颜色或者加下滑线,久而久之不免给人单调之感。下面介绍的多彩链接则是一种与众不同的链接风格:鼠标滑过时,文字会不断从一种色彩自然过渡到另一种色彩。下面通过javascript代码来实现此效果。

  在网页文件的<body></body>之间插入以下代码:

  <script>

  //定义变色控制变量

  var rate = 20; //色彩变化的速度,值越大变化越快

  var obj; //鼠标滑过事件所对应的对象元素

  var act = 0; // act=1表示已在变色

  var elmH = 0; // 色彩

  var elmS = 128; // 饱和度

  var elmV = 255; // R、G、B最高值

  var clrOrg;//文字原色

  var TimerID; // 计时器标志

  //检测浏览器类型,控制启用及停止此链接风格

  //如果浏览器是为Microsoft Internet Explorer 4.0以上,Brower为真

  if (navigator.appName.indexOf("Microsoft",0) != -1 &&

  parseInt(navigator.appVersion) >= 4) {

  Browser = true;} else {Browser = false; }

  if (Browser)

  {document.onmouseover = doRainbowAnchor;//鼠标滑过时变色

  document.onmouseout = stopRainbowAnchor;}//鼠标移走停止变色并恢复原色

  function doRainbowAnchor()//启用此风格

  {if (Browser && act != 1) {

  obj = event.srcElement;//鼠标滑过事件所对应的对象元素

  while (obj.tagName != 'A' && obj.tagName != 'BODY') {//tagname指元素的标签名,像A、BODY等

  obj = obj.parentElement; //当标签不是A或BODY时,取父元素标签

  if (obj.tagName == 'A' || obj.tagName == 'BODY') break;}

  if (obj.tagName == 'A' && obj.href != '') {

  act = 1;

  clrOrg = obj.style.color; //保存变化前的颜色

  TimerID = setInterval("ChangeColor()",100);//启动计时器,每隔0.1秒变色,时间可自己调节,1000表示1秒

  }}}

  function stopRainbowAnchor()//停用此风格

  {if (Browser && act != 0) {

  if (obj.tagName == 'A') {

  obj.style.color = clrOrg;//恢复变化前的颜色

  clearInterval(TimerID);//停止计时器

  act = 0;}}}

  //通过改变RGB值来获得不同的文字颜色

  function ChangeColor()

  { obj.style.color = makeColor();}

  function makeColor()

  {if (elmS == 0) {

  elmR = elmV; elmG = elmV; elmB = elmV;}

  else { t1 = elmV;

  t2 = (255 - elmS) * elmV/255;

  t3 = elmH % 60;

  t3 = (t1 - t2) * t3/60;

  //不同色彩,不同RGB值

  if (elmH < 60) {elmR = t1; elmB = t2; elmG = t2 + t3;}

  else if (elmH < 120) {elmG = t1; elmB = t2; elmR = t1 - t3;}

  else if (elmH < 180) {elmG = t1; elmR = t2; elmB = t2 + t3;}

  else if (elmH < 240) {elmB = t1; elmR = t2; elmG = t1 - t3;}

  else if (elmH < 300) {elmB = t1; elmG = t2; elmR = t2 + t3;}

  else if (elmH < 360) {elmR = t1; elmG = t2; elmB = t1 - t3;}

  else {elmR = 0; elmG = 0; elmB = 0;}}

  elmR = Math.floor(elmR);//取整RGB值

  elmG = Math.floor(elmG);

  elmB = Math.floor(elmB);

  clrRGB = '#' + elmR.toString(16) + elmG.toString(16) + elmB.toString(16);//转化为十六进制的颜色值

  elmH = elmH + rate;//改变色彩,再产生不同RGB组合

  if (elmH >= 360) elmH = 0;

  return clrRGB;} //返回新的RGB组合值

  </script>

  <p><a href="http//www.cpcw.com">多彩链接演示</a></p>

  添加完成后存盘用IE看看,意外吧?

  以上代码并不复杂,网页编辑者可查看注释,在理解的基础上灵活运用。