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 面向对象编程 聊聊对象的事
Sep 17 Javascript
jQuery 遍历json数组的实现代码
Sep 22 Javascript
jquery easyui combox一些实用的小方法
Dec 25 Javascript
简介JavaScript中的setTime()方法的使用
Jun 11 Javascript
探讨JavaScript语句的执行过程
Jan 28 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
Mar 25 Javascript
无循环 JavaScript(map、reduce、filter和find)
Apr 08 Javascript
bootstrap的工具提示实例代码
May 17 Javascript
vue-cli初始化项目中使用less的方法
Aug 09 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
Aug 22 Javascript
Vue axios设置访问基础路径方法
Sep 19 Javascript
javascript实现点击产生随机图形
Jan 25 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简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
遭遇php的in_array低性能问题
2013/09/17 PHP
php+ajax实现的点击浏览量加1
2015/04/16 PHP
php中通过eval实现字符串格式的计算公式
2017/03/18 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
2017/03/30 jQuery
微信小程序 登录的简单实现
2017/04/19 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
[17:36]VG战队纪录片
2014/08/21 DOTA
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:28:44]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第一场 1月10日
2021/03/11 DOTA
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
python中dict使用方法详解
2019/07/17 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
中国高端家电购物商城:顺电
2018/03/04 全球购物
校园自助餐厅的创业计划书
2013/12/26 职场文书
文科生自我鉴定
2014/02/15 职场文书
保险专业大学生职业规划书
2014/03/03 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
改进工作作风心得体会
2016/01/23 职场文书