欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

javascript tips提示框组件实现代码_javascript技巧

程序员文章站 2022-05-03 16:45:58
...
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页面,如有理解不正确的地方,请大家指教。