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 相关文章推荐
基于jQuery的ajax功能实现web service的json转化
Aug 29 Javascript
解决iframe的frameborder在chrome/ff/ie下的差异
Aug 12 Javascript
DIY jquery plugin - tabs标签切换实现代码
Dec 11 Javascript
JavaScript中的无阻塞加载性能优化方案
Oct 10 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
Sep 21 Javascript
js不间断滚动的简单实现
Jun 03 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
Jun 22 Javascript
又一款js时钟!transform实现时钟效果
Aug 15 Javascript
vue从使用到源码实现教程详解
Sep 19 Javascript
JS实现拖拽的方法分析
Dec 20 Javascript
angular使用bootstrap方法手动启动的实例代码
Jul 18 Javascript
JavaScript位置参数实现原理及过程解析
Sep 14 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
Yii框架中memcache用法实例
2014/12/03 PHP
10款实用的PHP开源工具
2015/10/23 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
2016/12/07 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
onkeypress字符按键兼容所有浏览器使用介绍
2013/04/24 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
基于javascript 显式转换与隐式转换(详解)
2017/12/15 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
python有证书的加密解密实现方法
2014/11/19 Python
Python的Flask框架中实现简单的登录功能的教程
2015/04/20 Python
Python中编写ORM框架的入门指引
2015/04/29 Python
深入理解Python中的*重复运算符
2017/10/28 Python
Python实现的桶排序算法示例
2017/11/29 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
django+echart绘制曲线图的方法示例
2018/11/26 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
keras 多任务多loss实例
2020/06/22 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
使用HTML5拍照示例代码
2013/08/06 HTML / CSS
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
如何手工释放资源
2013/12/15 面试题
空气环保标语
2014/06/12 职场文书
大班上学期个人总结
2015/02/13 职场文书
2015年乡镇平安建设工作总结
2015/05/13 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
移除Selenium中window.navigator.webdriver值
2022/06/10 Python