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 相关文章推荐
小议Function.apply() 之一------(函数的劫持与对象的复制)
Nov 30 Javascript
js 通用javascript函数库整理
Aug 14 Javascript
jquery ajax return没有返回值的解决方法
Oct 20 Javascript
什么是cookie?js手动创建和存储cookie
May 27 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
Jun 09 Javascript
如何使用HTML5地理位置定位功能
Apr 27 Javascript
JavaScript 拖拽实例代码
Sep 21 Javascript
JS使用贪心算法解决找零问题示例
Nov 27 Javascript
原生JS实现的双色球功能示例
Feb 02 Javascript
关于微信小程序bug记录与解决方法
Aug 15 Javascript
详解在vue-test-utils中mock全局对象
Nov 07 Javascript
Node.js API详解之 assert模块用法实例分析
May 26 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
动漫定律:眯眯眼都是怪物!这些角色狠话不多~
2020/03/03 日漫
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
Yii2单元测试用法示例
2016/11/12 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
Javascript实现的分页函数
2007/02/07 Javascript
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
Ajax验证用户名或昵称是否已被注册
2017/04/05 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别
2020/08/12 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
[02:49]2018DOTA2亚洲邀请赛主赛事决赛日战况回顾 Mineski鏖战5局夺得辉耀
2018/04/10 DOTA
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
Django实战之用户认证(用户登录与注销)
2018/07/16 Python
Django stark组件使用及原理详解
2019/08/22 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
Lookfantastic挪威官网:英国知名美妆购物网站
2017/07/26 全球购物
市场总经理岗位职责
2014/04/11 职场文书
公安个人四风问题对照检查及整改措施
2014/10/28 职场文书
上课睡觉检讨书300字
2014/11/18 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript
GO语言异常处理分析 err接口及defer延迟
2022/04/14 Golang
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android