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 相关文章推荐
jquery ajax 检测用户注册时用户名是否存在
Nov 03 Javascript
javascript结合ajax读取txt文件内容
Dec 05 Javascript
JavaScript函数使用的基本教程
Jun 04 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
May 12 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
Feb 12 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
Aug 23 Javascript
vue打包后显示空白正确处理方法
Nov 01 Javascript
深入浅析AngularJs模版与v-bind
Jul 06 Javascript
菊花转动的jquery加载动画效果
Aug 19 jQuery
Vue.js 图标选择组件实践详解
Dec 03 Javascript
js实现数字滚动特效
Dec 16 Javascript
Bootstrap告警框(alert)实现弹出效果和短暂显示后上浮消失的示例代码
Aug 27 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
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
php中关于长度计算容易混淆的问题分析
2016/05/27 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
php中的异常和错误浅析
2017/05/03 PHP
asp.net 30分钟掌握无刷新 Repeater
2011/09/16 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
JSON.parse()和JSON.stringify()使用介绍
2014/06/20 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
JS+CSS实现下拉刷新/上拉加载插件
2017/03/31 Javascript
JavaScript监听手机物理返回键的两种解决方法
2017/08/14 Javascript
nodejs 十六进制字符串型数据与btye型数据相互转换
2018/07/30 NodeJs
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python入门篇之字典
2014/10/17 Python
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
Django中对通过测试的用户进行限制访问的方法
2015/07/23 Python
浅析python,PyCharm,Anaconda三者之间的关系
2019/11/27 Python
python ffmpeg任意提取视频帧的方法
2020/02/21 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
基于python和flask实现http接口过程解析
2020/06/15 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
EJB发布WEB服务一般步骤
2012/10/31 面试题
学生实习自我鉴定
2013/10/11 职场文书
家长对老师的评语
2014/04/18 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
施工单位安全责任书
2014/07/24 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
python ConfigParser库的使用及遇到的坑
2022/02/12 Python