`

非常漂亮的链接提示效果 (附源码)

阅读更多

使用心得:

1.  mP.tTags = new Array("tr", "img");  //要添加提示的 标记名称

例如: mP.tTags = new Array("tr","img","a");

2. mP.useTables = false;   //容器标志,使用 Div 或Table

tooltip.js

//ToogleDisplay Start
function toggledisplay(section) {
	if (document.getElementById([section]).style.display == "block") {
		document.getElementById([section]).style.display = "none";
		document.images[section + "_img"].src = "/uploads/toggledisplay_expand.gif";
	} else {
		document.getElementById([section]).style.display = "block";
		document.images[section + "_img"].src = "/uploads/toggledisplay_collapse.gif";
	}
}

//ToogleDisplay End

//Font size control Start
function doZoom(size) {
	document.getElementById("zoomtext").style.fontSize = size + "px";
}
//Font size control End

//My Tips Srart
var mP = new Array();
mP.attDesc = "title";
mP.useDefStyle = false;
//mP.tClass = "*";
mP.tClass = "sub";
mP.popupDelay = 1;
mP.hideDelay = 75;
mP.instPopDur = 1;
mP.xOfst = 15;
mP.yOfst = 15;
mP.clipSteps = 10;
mP.revStyle = 1;
mP.revInt = 10;
mP.warpSteps = 15;
mP.preload = true;
mP.divIds = new Array("popupcontainer", "popupcontent", "popupcontdouble", "popupbottom", "popupboxmodeltest");
//mP.tTags = new Array("a", "img");	//old
mP.tTags = new Array("tr", "img");
mP.setAttNull = true;
mP.customAtt = "hoverinfo";
mP.useTables = false;
mP.defZindex = 100;
mP.defWidth = "200px";
mP.defCSS = new Array("border", "4px solid black", "padding", "6px", "backgroundColor", "#BBBBBB", "color", "black", "fontSize", "12px", "filter", "alpha(opacity=90)", "opacity", ".90", "textAlign", "center", "width", "auto", "height", "auto");
var TestW3DOM = (document.createElement && document.getElementsByTagName && document.getElementById);
var pcR = new Array(), gV = new Array(), aOb = new Array();
mP.revEvals = new Array(null, "\"rect(\"+(clipYTarget-aOb.clipY)+\"px, \"+(clipXTarget+aOb.clipX)+\"px, \"+(clipYTarget+aOb.clipY)+\"px, \"+(clipYTarget-aOb.clipY)+\"px)\"", "\"rect(0px, \"+(aOb.clipX*2)+\"px, \"+(clipYTarget*2)+\"px, 0px)\"", "\"rect(0px, \"+(aOb.clipX*2)+\"px, \"+(aOb.clipY*2)+\"px, 0px)\"");
mP.defDesc = "", mP.edgeBufferZone = 30, pcR.hvrdObj = null, aOb.objMovd = null, aOb.clipStep = 0, aOb.warpStep = 0;
aOb.popActv = false, aOb.objMovd = false, gV.xPosEval = "e.clientX + mP.xOfst", gV.activeDelay = mP.popupDelay;
gV.yPosEval = "e.clientY + mP.yOfst", aOb.revInt = new Array(), aOb.prevs = new Array();
addTrigger(window, "load", multipopup);
function multipopup() {
	if (!TestW3DOM) {
		return;
	}
	
	addPopupDiv();
	addTrigger(document, "mousemove", movePopup);
	addTrigger(window, "resize", sizeUpdate);
	scrollUpdate();
	sizeUpdate();
	if (mP.useTables == true) {
		gV.targetTag = "td";
	} else {
		gV.targetTag = "div";
	}
	//alert(gV.targetTag);
	if (mP.tClass != "*") {
		var targetDivs = getElementsByClass(gV.targetTag, mP.tClass);
	} else {
		var targetDivs = new Array(document);
	}
	//alert(targetDivs.length);
	for (var im = 0; im < targetDivs.length; im++) {
		for (var st = 0; st < mP.tTags.length; st++) {
			var targetNodes = targetDivs[im].getElementsByTagName(mP.tTags[st]);
			//alert("targetNodes length: " + targetNodes.length + " : " + mP.tTags[st]);
			for (var i = 0; i < targetNodes.length; i++) {
				var toi = targetNodes[i].getAttribute(mP.attDesc);
				if (toi != null && toi != "") {
					targetNodes[i].setAttribute(mP.customAtt, toi);
					if (mP.setAttNull) {
						targetNodes[i].removeAttribute(mP.attDesc);
					}
					if (!addCheckTrigger(targetNodes[i], "mouseover", writeDescription)) {
						targetNodes[i].onmouseover = writeDescription;
					}
					if (!addCheckTrigger(targetNodes[i], "mouseout", clearDescription)) {
						targetNodes[i].onmouseout = clearDescription;
					}
				}
			}
		}
	}
}
function writeDescription() {
	var tagDescription = this.getAttribute(mP.customAtt);
	if (tagDescription != "") {
		pcR.hvrdObj = this;
		pcR.cDiv.innerHTML = "";
		pcR.cDiv.innerHTML = tagDescription;
		aOb.tHeight = pcR.cDiv.offsetHeight;
		pcR.hvrdFirst = true;
		if (aOb.popActv != true) {
			aOb.revealTimer = window.setTimeout("startrevealPopup()", gV.activeDelay);
		} else {
			if (aOb.clipStep == mP.clipSteps) {
				pcR.tDiv.style.clip = "rect(auto auto auto auto)";
				pcR.tDiv.style.visibility = "visible";
				pcR.hvrdFirst = false;
			}
		}
		if (pcR.hvrdFirst == true && mP.warpSteps > 0) {
			pcR.dDiv.style.height = aOb.tHeight + "px";
			aOb.tPrevHeight = aOb.tHeight;
		}
		window.clearTimeout(aOb.resetDelayTimer);
		window.clearTimeout(aOb.hidePopupTimer);
	}
}
function clearDescription() {
	window.clearTimeout(aOb.revealTimer);
	aOb.hidePopupTimer = window.setTimeout("hidePopup()", mP.hideDelay);
	if (aOb.revealTimer == 0) {
		gV.activeDelay = 0;
	}
	pcR.hvrdObj = null;
	aOb.resetDelayTimer = window.setTimeout("resetPopupDelay()", mP.instPopDur);
	aOb.tPrevHeight = aOb.tHeight;
	aOb.prevs[aOb.prevs.length] = aOb.tHeight;
	if (aOb.warpStep != mP.warpSteps && aOb.warpStep > 0) {
		aOb.tPrevHeight = aOb.widthSet;
	}
	aOb.warpStep = 0;
}
function hidePopup() {
	for (i = 0; i < aOb.revInt.length; i++) {
		window.clearInterval(aOb.revInt[i]);
	}
	aOb.revInt = new Array();
	aOb.warpStep = 0;
	pcR.tDiv.style.visibility = "hidden";
	pcR.cDiv.innerHTML = "";
	pcR.cDiv.innerHTML = mP.defDesc;
	aOb.objMovd = false;
	aOb.popActv = false;
	aOb.clipStep = 0;
	gV.xPosEval = "e.clientX + mP.xOfst";
	gV.yPosEval = "e.clientY + mP.yOfst";
}
function resetPopupDelay() {
	gV.activeDelay = mP.popupDelay;
}
function startrevealPopup() {
	if (pcR.hvrdObj != null) {
		aOb.revealTimer = 0;
		aOb.revInt[aOb.revInt.length] = window.setInterval("revealPopup()", mP.revInt);
	}
}
function movePopup(e) {
	if (pcR.hvrdObj != null || aOb.popActv == true) {
		if (!e) {
			var e = window.event;
		}
		scrollUpdate();
		var divHeight = pcR.tDiv.offsetHeight;
		var divWidth = pcR.tDiv.offsetWidth;
		var yPos = eval(gV.yPosEval);
		var xPos = eval(gV.xPosEval);
		yPos = maximum(minimum(yPos, pcR.height - divHeight - mP.edgeBufferZone), 0);
		xPos = maximum(minimum(xPos, pcR.width - divWidth - mP.edgeBufferZone), 0);
		if (pointCollisionDetect(e.clientX, e.clientY, yPos, xPos + divWidth, yPos + divHeight, xPos, 3)) {
			collisionFix();
			aOb.yPos = eval(gV.yPosEval);
			aOb.xPos = eval(gV.xPosEval);
		} else {
			aOb.yPos = yPos;
			aOb.xPos = xPos;
		}
		pcR.tDiv.style.top = (aOb.yPos + pcR.scrolledY) + "px";
		pcR.tDiv.style.left = (aOb.xPos + pcR.scrolledX) + "px";
		aOb.objMovd = true;
	}
}
function revealPopup() {
	if (aOb.objMovd == true && mP.revStyle == 0) {
		pcR.tDiv.style.visibility = "visible";
		aOb.popActv = true;
	} else {
		if (aOb.objMovd == true && aOb.clipStep < mP.clipSteps) {
			var divHeight = pcR.tDiv.offsetHeight;
			var divWidth = pcR.tDiv.offsetWidth;
			aOb.clipStep++;
			if (aOb.clipStep < mP.clipSteps) {
				var clipYTarget = Math.ceil(divHeight / 2);
				var clipXTarget = Math.ceil(divWidth / 2);
				aOb.clipX = easeOutStepFloor(0, clipXTarget, mP.clipSteps, aOb.clipStep);
				aOb.clipY = easeOutStepFloor(0, clipYTarget, mP.clipSteps, aOb.clipStep);
				pcR.tDiv.style.clip = eval(mP.revEvals[mP.revStyle]);
			} else {
				pcR.tDiv.style.clip = "rect(auto auto auto auto)";
			}
			pcR.tDiv.style.visibility = "visible";
			aOb.popActv = true;
		}
	}
	if (aOb.popActv == true && aOb.warpStep < mP.warpSteps && aOb.clipStep == mP.clipSteps && pcR.hvrdFirst != true) {
		aOb.warpStep++;
		aOb.widthSet = easeOutStepFloor(aOb.tPrevHeight, aOb.tHeight, mP.warpSteps, aOb.warpStep);
		pcR.dDiv.style.height = aOb.widthSet + "px";
	}
}
function pointCollisionDetect(x, y, top, right, bottom, left, boundary) {
	top -= boundary;
	bottom += boundary;
	left -= boundary;
	right += boundary;
	if ((x > left && x < right) && (y > top && y < bottom)) {
		return true;
	}
	return false;
}
function collisionFix() {
	gV.xPosEval = "e.clientX - divWidth - mP.xOfst";
	gV.yPosEval = "e.clientY - divHeight - mP.yOfst";
}
function scrollUpdate() {
	if (self.pageYOffset) {
		pcR.scrolledX = self.pageXOffset;
		pcR.scrolledY = self.pageYOffset;
	} else {
		if (document.documentElement && document.documentElement.scrollTop) {
			pcR.scrolledX = document.documentElement.scrollLeft;
			pcR.scrolledY = document.documentElement.scrollTop;
		} else {
			if (document.body) {
				pcR.scrolledX = document.body.scrollLeft;
				pcR.scrolledY = document.body.scrollTop;
			}
		}
	}
}
function sizeUpdate() {
	if (self.innerWidth) {
		pcR.width = self.innerWidth;
		pcR.height = self.innerHeight;
	} else {
		if (document.documentElement && document.documentElement.clientWidth) {
			pcR.width = document.documentElement.clientWidth;
			pcR.height = document.documentElement.clientHeight;
		} else {
			if (document.body) {
				pcR.width = document.body.clientWidth;
				pcR.height = document.body.clientHeight;
			}
		}
	}
}
function getElementsByClass(targetTag, tagClass) {
	var elementList = document.getElementsByTagName(targetTag);
	//alert("targettag: " + targetTag + " CLASS; " + tagClass);
	var classTag = new Array();
	for (var i = 0; i < elementList.length; i++) {
		
		if (elementList[i].className == tagClass) {
			//alert(elementList[i].className + " " + elementList[i].tagName);
			classTag[classTag.length] = elementList[i];
		}
	}
	return classTag;
}
function addPopupDiv() {
	var ttDiv = new Array();
	var prefix = "";
	if (mP.useDefStyle == true) {
		prefix = "M_";
	}
	for (var i = 0; i < mP.divIds.length; i++) {
		if (document.getElementById(mP.divIds[i]) != null) {
			document.getElementById(mP.divIds[i]).parentNode.removeChild(document.getElementById(mP.divIds[i]));
		}
		ttDiv[i] = document.createElement("div");
		ttDiv[i].id = prefix + mP.divIds[i];
		ttDiv[i].activeStyle = getActiveStyle;
	}
	var c = new Array("margin", "padding", "border", "top", "left");
	for (i = 0; i < c.length; i++) {
		eval("ttDiv[2].style." + c[i] + " = '0px'");
		eval("ttDiv[4].style." + c[i] + " = '0px'");
		eval("ttDiv[0].style." + c[i] + " = '0px'");
	}
	ttDiv[2].style.position = "relative";
	ttDiv[2].style.width = "100%";
	ttDiv[4].style.visibility = "hidden";
	ttDiv[4].style.position = "absolute";
	ttDiv[0].style.visibility = "hidden";
	ttDiv[0].style.position = "absolute";
	ttDiv[1].appendChild(ttDiv[2]);
	ttDiv[0].appendChild(ttDiv[1]);
	ttDiv[0].appendChild(ttDiv[3]);
	document.body.appendChild(ttDiv[0]);
	if (mP.warpSteps > 0) {
		document.body.appendChild(ttDiv[4]);
		ttDiv[1].style.overflow = "hidden";
		ttDiv[4].style.padding = "10px";
		ttDiv[4].style.height = "100px";
		if (ttDiv[4].offsetHeight == 100) {
			mP.warpSteps = 0;
		}
		document.body.removeChild(ttDiv[4]);
	}
	for (var i = 0; i < mP.divIds.length - 1; i++) {
		var bgIm = ttDiv[i].activeStyle("background-image", "backgroundImage");
		if (bgIm.indexOf("url") > -1 && mP.preload == true) {
			preLoadImage(stripURL(bgIm));
		}
	}
	if (window.getComputedStyle && window.getComputedStyle(ttDiv[3], null).getPropertyValue("background-image").indexOf("url") == -1) {
		ttDiv[0].removeChild(ttDiv[3]);
	} else {
		if (ttDiv[3].currentStyle && (ttDiv[3].currentStyle.backgroundImage.indexOf("url") == -1 && ttDiv[3].currentStyle.filter.indexOf("AlphaImageLoader") == -1)) {
			ttDiv[0].removeChild(ttDiv[3]);
		}
	}
	ttDiv[0].onmouseover = collisionFix;
	if (mP.useDefStyle == true) {
		ttDiv[0].style.width = mP.defWidth;
		ttDiv[0].style.zIndex = mP.defZindex;
		for (var i = 0; i < mP.defCSS.length; i += 2) {
			eval("ttDiv[1].style." + mP.defCSS[i] + "='" + mP.defCSS[i + 1] + "'");
		}
	}
	pcR.cDiv = ttDiv[2];
	pcR.tDiv = ttDiv[0];
	pcR.dDiv = ttDiv[1];
}
function easeOutStepFloor(minValue, maxValue, totalSteps, actualStep) {
	var delta = maxValue - minValue;
	var radEnd = Math.PI / 2;
	var step = minValue + (Math.sin(((radEnd / totalSteps) * actualStep)) * delta);
	return Math.floor(step);
}
function getActiveStyle(style, stylecc) {
	if (window.getComputedStyle) {
		return window.getComputedStyle(this, null).getPropertyValue(style);
	}
	if (this.currentStyle) {
		return eval("this.currentStyle." + stylecc);
	}
}
function stripURL(s) {
	s = s.substring(s.indexOf("url(") + 4, s.lastIndexOf(")"));
	if (s.indexOf("\"") > -1) {
		s = s.substring(s.indexOf("\"") + 1, s.lastIndexOf("\""));
	}
	return s;
}
function addTrigger(elm, eventname, func) {
	if (!addCheckTrigger(elm, eventname, func)) {
		elm.attachEvent("on" + eventname, func);
	}
}
function addCheckTrigger(elm, eventname, func) {
	if (elm.addEventListener) {
		elm.addEventListener(eventname, func, false);
		return true;
	} else {
		return false;
	}
}
function preLoadImage(imageurl) {
	var img = new Image();
	img.src = imageurl;
	return img;
}
function minimum(x, y) {
	if (x < y) {
		return x;
	} else {
		return y;
	}
}
function maximum(x, y) {
	if (x > y) {
		return x;
	} else {
		return y;
	}
}

//My Tips End

 

 

 

分享到:
评论

相关推荐

    超漂亮的淘宝客商城网源码.rar

    独创在线修改后台目录,在线修改数据库文件名(智能同步修改数据库连接文件),数据库在线备份、压缩、下载、上传、恢复等。维护网站从此可完全抛开FTP了。 支持多管理员,不同管理员可设置不同权限。 访问统计...

    C#锁屏程序源码下载

    另外本程序的界面非常漂亮,可 以设置透明度,不过用到了控件——IrisSkin2.dll,已打包进去了,如果你对IrisSkin2.dll窗体控件不熟悉用法的话, 你正好可以参考一下本程序。 用户名和密码:admin 友情提示:本...

    超漂亮的淘宝客商城网源码

    独创在线修改后台目录,在线修改数据库文件名(智能同步修改数据库连接文件),数据库在线备份、压缩、下载、上传、恢复等。维护网站从此可完全抛开FTP了。 支持多管理员,不同管理员可设置不同权限。 访问统计功能...

    vc++ 开发实例源码包

    精灵系统,一套MFC渲染引擎,含2D/3D等渲染,效果看源码,IFEngine是整个引擎接口,IFSystem是硬件查询系统,IFApplication是应用程序对象基类。 FlashPlayer播放器4.0的VC++源代码 如题。 FreeBird2011最初版(模仿...

    漂亮大气大版面地方门户系统源码完整版

    3,运行 http://localhost/Install 目录下的安装程序,点击进去后按提示进行系统安装,设置好系统数据库连接、基本信息及管理员信息然后确认安装完成。 4,以上步骤操作完成后就可以打开您的站点 ...

    VB编程资源大全(源码 网络)

    i033_zm039.zip 一个漂亮的浏览器(30KB) 102,i032_zm037.zip 完整的FTP程序,功能很强大哦(43KB) 103,i031_pingtest.zip 检测是否网络连接(2KB) 104,i030_zm036.zip 可以列出并删除Internet ...

    2013最新版【开源】友情链接交换平台源码

    能够自动获取PR,百度快照、百度权重、百度谷歌收录、alexa排名等网站SEO详细内容,美观漂亮大气的橙色风格和自动静态化网站链接是一款广大站长非常喜欢的友情链接交换系统! 速度一路发友情链接互换系统简介 1、...

    微信判断浏览器自动弹出遮罩层【完整代码】.zip

    微信打开页面弹出遮罩层,微信打开页面连接后,提示去浏览器打开。有指示箭头,完美漂亮。js多种选择弹窗。下载添加url地址即可使用。完整版本的

    超漂亮同学录2.0全功能版

    1.增加了非常漂亮的许愿插件 2.修正了部分用户反映的不能上传照片的问题 3.增加了照片评论的字数到2000字 4.增加了留言,留言回复,论坛发贴和回帖的字数 5.修正了后台登陆的出现的错误。 6.完善了管理员管理的功能...

    超漂亮同学录

    1.增加了非常漂亮的许愿插件 2.修正了部分用户反映的不能上传照片的问题 3.增加了照片评论的字数到2000字 4.增加了留言,留言回复,论坛发贴和回帖的字数 5.修正了后台登陆的出现的错误。 6.完善了管理员管理的功能...

    B2B网站源码(asp)

    26,在线友情连接功能,支持在线申请及后台审核功能,支持图片、文字连接 27,在线后台 LiveUpdate 查看功能 28,超强防SQL注入功能,可从后台控制防注入字符(注意,请尽量不要改动!) 29,... ... 帐号和密码:...

    精典SQL仿阿里巴巴B2B商贸行业网,行业网模板,行业建站首选

    精心设计企业模版结构,使不懂编程的人也能做出漂亮的企业模版(具体制作见相关说明);在线广告管理,支持广告位置、尺寸、价格设定,租售情况等查看;在线友情连接功能,支持在线申请及后台审核功能,支持图片、...

    C#程序开发范例宝典(第2版).part12

    实例003 像开始菜单一样漂亮的菜单 4 实例004 任务栏托盘菜单 4 实例005 可以拉伸的菜单界面 5 实例006 级联菜单 6 1.2 工具栏设计 6 实例007 带背景的工具栏 7 实例008 浮动工具栏 7 实例009 带下拉菜单的...

    漂亮大方的WEB300全能商城

    ○9种界面风格、4种商品图片边框样式、3种验证码样式、9种横幅图片装饰效果,大小横幅均可开可关,可使用普通图片也可使用Flash动画,灵活多样的设置将组合出千变万化的效果。 ○首页的“新品速递”与“推荐商品”...

    青年创业人才系统.rar

    总体功能介绍:   1、本程序主要功能包括:个人求职、企业招聘、名企在线、自助建站... 25、在线友情连接功能,支持在线申请及后台审核功能,支持图片、文字连接  26、超强防SQL注入功能,可从后台控制防注入字符

    阿里巴巴商贸世界B2B网站管理系统完美版

    精心设计企业模版结构,使不懂编程的人也能做出漂亮的企业模版(具体制作见相关说明) 25,在线广告管理,支持广告位置、尺寸、价格设定,租售情况等查看 26,在线友情连接功能,支持在线申请及后台审核功能,...

    PHPAJAX实现无刷新下载文件实例(MySQL)

    PHP AJAX实现一款无刷新下载文件的实例,同时与MySQL数据库连接,前端配合CSS与JavaScript技术,完成了...鼠标在下载列表移动的时候,会适时出现下载提示,抛去数据连接的部分,单就网页设计来说,也是值得大家参考的。

    风云供求系统整修版

    精心设计企业模版结构,使不懂编程的人也能做出漂亮的企业模版(具体制作见相关说明);在线广告管理,支持广告位置、尺寸、价格设定,租售情况等查看;在线友情连接功能,支持在线申请及后台审核功能,支持图片、...

Global site tag (gtag.js) - Google Analytics