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 相关文章推荐
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
Jan 12 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
Apr 26 Javascript
jquery自定义属性(类型/属性值)
May 21 Javascript
js中事件的处理与浏览器对象示例介绍
Nov 29 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
Jun 23 Javascript
JavaScript-RegExp对象只能使用一次问题解决方法
Jun 23 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
Dec 15 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
Apr 18 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
Aug 17 Javascript
JavaScript获取服务器时间的方法详解
Dec 11 Javascript
关于vuex的学习实践笔记
Apr 05 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
Jun 08 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使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
javascript call方法使用说明
2010/01/11 Javascript
浅谈Javascript嵌套函数及闭包
2010/11/09 Javascript
jQuery操作Select的Option上下移动及移除添加等等
2013/11/18 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
关于javascript获取内联样式与嵌入式样式的实例
2017/06/01 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
vue+mousemove实现鼠标拖动功能(拖动过快失效问题解决方法)
2018/08/24 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
2019/02/21 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
跟老齐学Python之用Python计算
2014/09/12 Python
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
pyttsx3实现中文文字转语音的方法
2018/12/24 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
Pandas之Dropna滤除缺失数据的实现方法
2019/06/25 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
python中hasattr()、getattr()、setattr()函数的使用
2019/08/16 Python
Python AutoCAD 系统设置的实现方法
2020/04/01 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
彪马日本官网:PUMA日本
2019/01/31 全球购物
促销活动策划方案
2014/01/12 职场文书
幼儿园国庆节活动总结
2015/03/23 职场文书
长江七号观后感
2015/06/11 职场文书
mybatis 获取更新记录的id
2022/05/20 Java/Android