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随机颜色代码的多种实现方式
Apr 23 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
Aug 15 Javascript
javascript学习笔记(七)Ajax和Http状态码
Oct 08 Javascript
移动端JQ插件hammer使用详解
Jul 03 Javascript
使用jquery提交form表单并自定义action的实现代码
May 25 Javascript
利用ES6语法重构React组件详解
Mar 02 Javascript
js CSS3实现卡牌旋转切换效果
Jul 04 Javascript
JS路由跳转的简单实现代码
Sep 21 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
Mar 22 Javascript
jQuery滑动效果实现方法分析
Sep 05 jQuery
JavaScript 中的执行上下文和执行栈实例讲解
Feb 25 Javascript
vue中data里面的数据相互使用方式
Jun 05 Vue.js
突发奇想的一个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中的empty和isset函数
2016/05/26 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
javascript 跳转代码集合
2009/12/03 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
js中arguments的用法(实例讲解)
2013/11/30 Javascript
引入JS文件IE6报语法错误或缺少对象问题的解决方法
2014/01/09 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
封装好的javascript前端分页插件pagination
2016/01/04 Javascript
jQuery实现鼠标经过像翻页和描点链接效果
2016/08/08 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
react实现一个优雅的图片占位模块组件详解
2017/10/30 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
Python实现大文件排序的方法
2015/07/10 Python
利用Python学习RabbitMQ消息队列
2015/11/30 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
python 制作简单的音乐播放器
2020/11/25 Python
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
.NET remoting的两种通道是什么
2016/05/31 面试题
Why we need EJB
2016/10/20 面试题
班班通项目实施方案
2014/02/25 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
大学生个人求职信例文
2014/07/07 职场文书
2014年法院个人工作总结
2014/12/17 职场文书
Redis实现短信验证码登录的示例代码
2022/06/14 Redis