javascript tips提示框组件实现代码


Posted in Javascript onNovember 19, 2010

tip.js

function tips(obj,tag){ 
var tip = document.createElement('div'),arg= arguments[2],left,top; //创建tipbox 
var bodywid= document.documentElement.clientWidth; //这里也可以替换为容器的宽度$(id).outerWidth(); 
var abs = obj.getElementsByTagName(tag); 
tip.className="tip_bd"; 
obj.appendChild(tip); 
for(var i=0,len=abs.length;i<len;i++){ 
hover(abs[i],function(){ 
var content = arg||this.getAttribute('tip'),text; 
left = position(this).left,top=position(this).top; 
content?tip.innerHTML=content:tip.innerHTML="暂无内容!"; 
if(left+parseInt(getStyle(tip,'width'))>bodywid) //判断当前位置是否超过最大宽度 
text='right:'+(bodywid-left)+'px;left:auto;'; 
else 
text='left:'+(left+this.offsetWidth)+'px;'; 
text +='top:'+(top+this.offsetHeight)+'px;'; 
tip.style.cssText=text; 
text=''; 
tip.style.display='block'; 
},function(){ 
tip.style.display='none'; 
}); 
} 
} 
function hover(el,fnOver, fnOut){//鼠标滑过函数 
addEvent(el,'mouseover',fnOver); 
addEvent(el,'mouseout',fnOut); 
} 
function addEvent(el,type,fn){ //绑定事件 
if(el.attachEvent) { 
el['e'+type+fn] = fn; //IE下拷贝元素引用,使this指向el对象而不是window 
el[type+fn] = function(){el['e'+type+fn](window.event);} 
el.attachEvent('on'+type, el[type+fn]); 
}else 
el.addEventListener(type, fn, false); 
} 
function position(el){//dom节点的绝对位置 
if(el&&el.nodeType == 1) 
return {'left':el.getBoundingClientRect().left+document.documentElement.scrollLeft,'top':el.getBoundingClientRect().top+document.documentElement.scrollTop}; 
} 
function getStyle(obj,styleName){//获取当前样式属性 
if(obj.currentStyle)//ie 
return obj.currentStyle[styleName]; 
else{ //ff 
var $arr=obj.ownerDocument.defaultView.getComputedStyle(obj, null); 
return $arr[styleName]; 
} 
} 
tips(document.getElementById('tips'),'a');

一个简单的类似title的提示效果,但现实内容可以很丰富,以上js另存为tip.js,下面是使用的demo。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> <head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 
<meta name="copyright" content="" /> 
<meta name="keywords" content="" /> 
<meta name="description" content="" /> 
<title>提示信息框</title> 
<link rel="stylesheet" type="text/css" href="style/css/tip.css" /> 
<style> 
#wrap{line-height:22px;padding:20px;} 
#tips .tip_bd{border:1px solid green;width:100px;position:absolute;background:#fff;z-index:9999;text-align:center;display:none;} 
#tips{border:1px solid #ccc;padding:0 10px;} 
</style> 
</head> 
<body> 
<h1>提示信息框</h1> 
<br/><br/><br/><br/> 
<div id="tips"> 
阅读了<a href="#" tip="三水点靠木">三水点靠木</a>今天发布的IT文章《30个提高Web程序执行效率的好经验》,这30条准则对我们web开发是非常有用的,不则是知其然而不知其所<a href="#" tip="三水点靠木2">三水点靠木</a>以然。下面是我对这些准则的理解和分析,有些有关JS性能的准则,我也测试了它们<a href="#">三水点靠木</a>的差异,大家可以下载DEMO页面,如有理解不正确的地方,请大家指教。 
</div> 
</body> 
<script type="text/javascript" src="tips.js"></script> 
</html>
Javascript 相关文章推荐
js中cookie的使用详细分析
May 28 Javascript
JavaScript asp.net 获取当前超链接中的文本
Apr 14 Javascript
javascript 获取图片尺寸及放大图片
Sep 04 Javascript
javascript中的原型链深入理解
Feb 24 Javascript
使用百度地图api实现根据地址查询经纬度
Dec 11 Javascript
Bootstrap每天必学之缩略图与警示窗
Nov 29 Javascript
JS生成和下载二维码的代码
Dec 07 Javascript
Javascript之深入浅出prototype
Feb 06 Javascript
Angularjs为ng-click事件传递参数
Jun 15 Javascript
react+redux的升级版todoList的实现
Dec 18 Javascript
vue+Element-ui实现登录注册表单
Nov 17 Javascript
JavaScript实现班级抽签小程序
May 19 Javascript
突发奇想的一个jquery插件
Nov 19 #Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
Nov 19 #Javascript
基于jQuery的获得各种控件Value的方法
Nov 19 #Javascript
基于jquery实现的可以编辑选择的下拉框的代码
Nov 19 #Javascript
使用jQuery的将桌面应用程序引入浏览器
Nov 19 #Javascript
DIV菜单层实现代码
Nov 19 #Javascript
jQuery 定时局部刷新(setInterval)
Nov 19 #Javascript
You might like
PHP读MYSQL中文乱码的解决方法
2006/12/17 PHP
php 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
2010/06/03 PHP
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
PHP变量赋值、代入给JavaScript中的变量
2015/06/29 PHP
浅析JavaScript中的delete运算符
2013/11/30 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
2014/11/02 Javascript
JavaScript定义类和对象的方法
2014/11/26 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
Vuejs监听vuex中值的变化的方法示例
2018/12/02 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
Python中的面向对象编程详解(下)
2015/04/13 Python
python发送邮件实例分享
2017/07/28 Python
python使用插值法画出平滑曲线
2018/12/15 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
python3实现字符串操作的实例代码
2019/04/16 Python
如何在python中实现随机选择
2019/11/02 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
土木工程应届生求职信
2013/10/31 职场文书
暑期社会实践学生的自我评价
2014/01/09 职场文书
清正廉洁演讲稿
2014/05/22 职场文书
娱乐节目策划方案
2014/06/10 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
幼儿园八一建军节活动方案
2014/08/27 职场文书
学生打架检讨书
2014/10/20 职场文书
2014年煤矿安全工作总结
2014/12/04 职场文书
优秀党务工作者先进事迹材料
2014/12/25 职场文书
安装工程师岗位职责
2015/02/13 职场文书