javascript tips提示框組件實現代碼

來源:互聯網
上載者:User

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>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.