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 相关文章推荐
javascript 闭包疑问
Dec 30 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
Aug 07 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
Jul 18 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
Oct 27 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
Sep 16 Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
Oct 26 Javascript
实时监控input框,实现输入框与下拉框联动的实例
Jan 23 Javascript
微信小程序全选多选效果实现代码解析
Jan 21 Javascript
JS eval代码快速解密实例解析
Apr 23 Javascript
webpack+express实现文件精确缓存的示例代码
Jun 11 Javascript
Vue 监听元素前后变化值实例
Jul 29 Javascript
vue中watch和computed的区别与使用方法
Aug 23 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在Web开发领域的优势
2006/10/09 PHP
pw的一个放后门的方法分析
2007/10/08 PHP
PHP调用Twitter的RSS的实现代码
2010/03/10 PHP
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
js 匿名调用实现代码
2009/06/19 Javascript
简略的前端架构心得&amp;&amp;基于editor为例子的编码小技巧
2010/11/25 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
Python验证码识别的方法
2015/07/10 Python
浅析python中的迭代与迭代对象
2018/10/08 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
python实现横向拼接图片
2020/03/23 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
html5 canvas绘制网络字体的常用方法
2019/08/26 HTML / CSS
物业电工岗位职责
2013/11/20 职场文书
《商鞅南门立木》教学反思
2014/02/16 职场文书
法律进机关实施方案
2014/03/12 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python
Java版 简易五子棋小游戏
2022/05/04 Java/Android