`

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

阅读更多

使用心得:

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

 

 

 

分享到:
评论

相关推荐

    漂亮许愿墙前台程序源码

    【漂亮许愿墙前台程序源码】是一款基于ASP.NET技术构建的前端展示应用,主要功能是为用户提供一个美观且互动的许愿墙界面。这款源码仅包含前端部分,核心在于CSS和JavaScript的运用,实现了许愿墙的动态翻页效果,...

    漂亮的女人资讯门户源码

    标题中的“漂亮的女人资讯门户源码”指的是一个专门针对女性信息的网站源代码,它可能是用ASP编程语言编写的,ASP是一种经典的服务器端脚本语言,用于构建动态网页。源码意味着包含了整个网站运行所需的全部代码,...

    jsp唯美登录界面,附源码

    本文将围绕“jsp唯美登录界面,附源码”这一主题,深入探讨JSP技术与Div布局在创建登录界面中的应用。 首先,JSP(JavaServer Pages)是一种基于Java的动态网页开发技术,由Sun Microsystems(现已被Oracle收购)...

    最漂亮的php留言系统 源码

    《构建与解析:最漂亮的PHP留言系统源码详解》 在Web开发中,PHP是一种广泛使用的服务器端脚本语言,尤其适用于动态网站的构建。本文将深入探讨一款被描述为“最漂亮的PHP留言系统”的源码,分析其设计原理、核心...

    漂亮实用的自定义对话框源码及Demo

    标题 "漂亮实用的自定义对话框源码及Demo" 暗示了这是一个关于.NET框架下的自定义对话框实现,提供了美观且功能丰富的用户界面组件。这个资源可能包含了一个自定义对话框控件的设计和实现,以及一个演示如何使用这个...

    C#源码 漂亮界面 医院管理系统源码下载 (CS架构) .net程序

    3. "源码必读.txt":这可能是开发团队提供的一个指南,列出了一些阅读和理解源代码的重要提示或者注意事项。 4. "RLL":这个文件夹可能包含了资源文件,如本地化文本、图片或图标等。 5. "UI":用户界面文件夹,很...

    一款炫酷的导航网站源码亲测可用

    采用Thinkphp+Easy Admin+Mysql 开发 是一套完整的具有商业化的系统 前端简洁,清新,高颜值! 后端便捷,简约,多功能! 配套有会员系统,支付系统,自助广告,插件...这套源码非常适合做导航网,资源网的小伙伴们

    c#漂亮的物业管理系统源码

    C# 漂亮的物业管理系统源码是一款基于Windows Forms(WinForm)技术构建的软件应用,它旨在为小区物业管理提供便捷高效的管理工具。这个项目展示了如何利用C#语言和Visual Studio 2012开发环境,结合事件驱动和...

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

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

    C#锁屏程序源码下载

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

    一个漂亮的基于GridView扩展的Slider 翻页滚动控件源码及例子程序

    在给定的标题“一个漂亮的基于GridView扩展的Slider翻页滚动控件源码及例子程序”中,我们可以理解到这是一个专门针对GridView进行扩展,实现了类似Slider(滑动条)效果的控件,它允许用户通过滑动来浏览和切换页面...

    Qt 登录注册界面源码,不错代码,值得拥有

    // 显示错误提示 QMessageBox::warning(this, "警告", "用户名或密码不能为空"); return; } // 假设这里有一个验证函数,实际应用中会对接服务器或数据库 bool isAuthentic = authenticate(username, ...

    asp.net漂亮弹出对话框控件源码及示例

    描述中提到的“源码及示例”意味着我们可以获得该控件的完整开发代码,这对于开发者来说是非常有价值的。能够查看源码,有助于理解其工作原理,并可以根据项目需求进行定制或扩展。同时,提供的示例文件可以帮助...

    WebChart生成漂亮饼图源码

    WebChart控件是一种用于在Web应用中生成图表的第三方组件,尤其适合于创建直观的数据可视化效果,如饼图。在给定的资源中,我们有多个文件,它们构成了一个简单的Web应用程序,展示了如何使用WebChart控件来生成漂亮...

    基于PHP的超漂亮的QQ资源网php版源码.zip

    【标题】"基于PHP的超漂亮的QQ资源网php版源码.zip" 提供的是一个使用PHP编程语言开发的网站源代码,特别适用于构建一个展示或分享QQ相关资源的在线平台。这种类型的源码通常包括了前端用户界面设计、后端逻辑处理...

    ASP网站实例开发源码——教育组织部门网站源码!! 漂亮大气 规范正式.zip

    源码的特性被描述为“漂亮大气”且“规范正式”,暗示着它可能具有良好的用户界面设计和符合行业标准的编程实践。 1. **default.asp**:这通常是网站的首页,用于展示网站的主要内容和导航菜单。在这个案例中,它...

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

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

    某设计网站源码_绿色风格很好看 大气(ASP+AC)

    【标题】"某设计网站源码_绿色风格很好看 大气(ASP+AC)" 涉及的核心知识点是ASP编程语言以及可能使用的数据库连接技术。ASP(Active Server Pages)是微软开发的一种服务器端脚本环境,用于生成动态网页。这里的...

Global site tag (gtag.js) - Google Analytics