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的IE和Firefox兼容性集锦
Dec 11 Javascript
个人总结的一些关于String、Function、Array的属性和用法
Jan 10 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
Dec 02 Javascript
indexOf 和 lastIndexOf 使用示例介绍
Sep 02 Javascript
jquery分割字符串的方法
Jun 24 Javascript
JavaScript访问字符串中单个字符的两种方法
Jul 03 Javascript
AngularJS ng-change 指令的详解及简单实例
Jul 30 Javascript
详解Vue2 SSR 缓存 Api 数据
Nov 20 Javascript
详解JS函数stack size计算方法
Jun 18 Javascript
详解在React项目中安装并使用Less(用法总结)
Mar 18 Javascript
在Vue中实现随hash改变响应菜单高亮
Mar 09 Javascript
Javascript组合继承方法代码实例解析
Apr 02 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
漂亮但不安全的CTB
2006/10/09 PHP
php5 图片验证码实现代码
2009/12/11 PHP
php 中文字符串首字母的获取函数分享
2013/11/04 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
laravel框架使用阿里云短信发送消息操作示例
2020/02/15 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
PHP7 弃用功能
2021/03/09 PHP
Javascript String.replace的妙用
2009/09/08 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
javascript实现点击商品列表checkbox实时统计金额的方法
2015/05/15 Javascript
Bootstrap每天必学之下拉菜单
2015/11/25 Javascript
nodejs实现bigpipe异步加载页面方案
2016/01/26 NodeJs
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
2019/05/16 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
使用python绘制二维图形示例
2019/11/22 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
学python最电脑配置有要求么
2020/07/05 Python
html5 div布局与table布局详解
2016/11/16 HTML / CSS
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
2014年房地产个人工作总结
2014/12/20 职场文书
国家助学金感谢信
2015/01/21 职场文书
商务邀请函
2015/01/30 职场文书
感恩的心主题班会
2015/08/12 职场文书
创业计划书之DIY自助厨房
2019/09/06 职场文书
ubuntu端向日葵键盘输入卡顿问题及解决
2022/12/24 Servers