如文字顏色要考慮到和背景色配合問題,那麼聯結標籤的文字顏色應該也是要能
配合才對,為了和前景背景色有所區別,而三種聯結狀態色彩值又不能重覆,因此
我採用 Link Color 比 TextColor 色度稍弱化些,VLink Color 則再弱化些,而
ALinkColor 則是 TextColor 的更強化。當然如果這樣的效果你並不滿意,當然你可以
建立自己的規則來使用。本範例的聯結標籤色彩設定如下:
/* 依前景色背景色換算 link,alink,vlink 色彩函式
bc 參數:背景色
tx 參數:前景色
mode 參數:選擇運算那一種聯結色彩 */
function reverseLinkColor(bc,tc,mode)
{
/* 聯結模式選擇常數宣告 */
var LINK_COLOR=0,ALINK_COLOR=1,VLINK_COLOR=2;
var result="";
var hexString="0123456789ABCDEFG";
var off,b,t;
for (var i=0;i<bc.length;i++)
{
b=parseInt("0x"+bc.charAt(i));
t=parseInt("0x"+tc.charAt(i));
/* 減弱前景色強度 */
if (mode==LINK_COLOR) {off=(t>b)?t-2:t+2;}
/* 增加前景色強度 */
if (mode==ALINK_COLOR) {off=(t>b)?t+2:t-2;}
/* 進一步減弱前景色強度 */
if (mode==VLINK_COLOR) {off=(t>b)?t-4:t+4;}
/* 不使最後 off 值超出 0~15 之合法範圍 */
if (off<0) {off=0;}
if (off>15) {off=15;}
result+=hexString.charAt(off);
}
return result;
}
當然這時 BODY 標籤就要增加 link,alink,vlink 三個性質的設定,本範例是這麼做的:
/* 背景色 */
var bColor="";
/* 前景色 */
var tColor="";
/* 一般聯結顏色 */
var lColor="";
/* 作用中的聯結顏色 */
var aColor="";
/* 查閱過的聯結顏色 */
var vColor="";
/* 各代表設定變數取得其色值 */
bColor=randomColor();
tColor=reverseColor(bColor);
lColor=reverseLinkColor(bColor,tColor,0);
aColor=reverseLinkColor(bColor,tColor,1);
vColor=reverseLinkColor(bColor,tColor,2);
/* 準備全網頁色彩設定輸出字串 */
var colorSetString=' BGCOLOR="#'+bColor+'"';
colorSetString+=' TEXT="#'+tColor+'"';
colorSetString+=' LINK="#'+lColor+'"';
colorSetString+=' ALINK="#'+aColor+'"';
colorSetString+=' VLINK="#'+vColor+'"';
/* 一次輸出所有的色彩設定 */
document.write("<BODY"+colorSetString+">");