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;ihover(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。
提示信息框 提示信息框 阅读了
脚本之家 今天发布的IT文章《30个提高Web程序执行效率的好经验》,这30条准则对我们web开发是非常有用的,不则是知其然而不知其所
脚本之家 以然。下面是我对这些准则的理解和分析,有些有关JS性能的准则,我也测试了它们
脚本之家 的差异,大家可以下载DEMO页面,如有理解不正确的地方,请大家指教。
Stellungnahme: Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn