天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

獲取dom元素那些討厭的位置封裝代碼

介紹
解決各個瀏覽器下 獲取dom 元素的 位置
兼容性
ie 6 7 8 firefox 3.6 chrome 4.0 目前只測試了這幾個瀏覽器
作者
Jelle ? lu QQ:271412542 Email:[email protected] blogs:http://www.cnblogs.com/idche/
源碼說明
jquery 源碼給我很大幫助,也用到一個叫 布魯斯 ? 李 的同學的源碼,當然更多資源來源于網絡
功能說明
// jelle(elem) 對象 elem傳遞對象ID 或者 dom對象 如果是窗口 傳遞 window 對象
//.offset() 返回當前對象相對瀏覽器的絕對位置 ,返回值 = {top:a,left:b};
//.inner() 返回當前對象可見區域 寬度與高度 ,返回值 = {wisth:a,left:b};
//.scroll() 返回當前對象被卷區top 和 left。 ,返回值 = {top:a,left:b};
//.offparent() 返回當前對象距離父節點的位置 top left。 ,返回值 = {top:a,left:b};
//.client() 返回當前對象的可用高度和寬度 ,返回值 = {width:a,height:b};
//.screen() 返回當前屏幕的可用高度和寬度 ,返回值 = {width:a,height:b};
//.mouse(event) 返回當前鼠標的x,y坐標,elem不為空返回相對elem的坐標 ,返回值 = {x:a,y:b};

例子
//例子: 返回一個ID 為 test 的div 的可見區域寬度 //jelle('test').inner().width //這里可以緊接后面直接下 width
基于jquery的源碼
復制代碼 代碼如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>
<style type="text/css">
.jelle_box{ margin:10px; border:5px solid #000; padding:10px; overflow:scroll;}
.o{height:100px;}
.t{height:100px;}
.h{height:100px;}
#jieshao li{ white-space:pre;}
#jieshao li li{ padding:0; margin:0;}
</style>
</head>
<script type="text/Javascript" src="jquery-1.4.2.js"></script>
<body>
<dl>
<dt>介紹</dt>
<dd>解決各個瀏覽器下 獲取dom 元素的 位置</dd>
<dd>兼容性</dd>
<dd>ie 6 7 8 firefox 3.6 chrome 4.0 目前只測試了這幾個瀏覽器 </dd>
<dt>作者</dt>
<dd>Jelle ? lu QQ:271412542 Email:[email protected] blogs:http://www.cnblogs.com/idche/</dd>
<dt>源碼說明</dt>
<dd>jquery 源碼給我很大幫助,也用到一個叫 布魯斯 ? 李 的同學的源碼,當然更多資源來源于網絡。</dd>
<dt>功能說明</dt>
<dd>
<ul id="jieshao">
<li>// jelle(elem) 對象 elem傳遞對象ID 或者 dom對象 如果是窗口 傳遞 window 對象</li>
<li>//.offset() 返回當前對象相對瀏覽器的絕對位置 ,返回值 = {top:a,left:b};</li>
<li>//.inner() 返回當前對象可見區域 寬度與高度 ,返回值 = {wisth:a,left:b};</li>
<li>//.scroll() 返回當前對象被卷區top 和 left。 ,返回值 = {top:a,left:b};</li>
<li>//.offparent() 返回當前對象距離父節點的位置 top left。 ,返回值 = {top:a,left:b};</li>
<li>//.client() 返回當前對象的可用高度和寬度 ,返回值 = {width:a,height:b};</li>
<li>//.screen() 返回當前屏幕的可用高度和寬度 ,返回值 = {width:a,height:b};</li>
<li>//.mouse(event) 返回當前鼠標的x,y坐標,elem不為空返回相對elem的坐標 ,返回值 = {x:a,y:b};
</li>
</ul>
</dd>
<dt>例子</dt>
<dd>//例子: 返回一個ID 為 test 的div 的可見區域寬度
//jelle('test').inner().width
//這里可以緊接后面直接下 width</dd>
</dl>
<textarea id="jelle_code" style="width:300px; height:50px;">jelle('t').offset().top</textarea>
<input type="button" value="運行代碼" onclick="alert(eval(document.getElementById('jelle_code').value))" />
<div class="jelle_box o" id="o">
div.id=o
<div class="jelle_box t" id="t">
div.id=t
<br/>
<br/>
<div class="jelle_box h" id="h">div.id=h <br>OK 這里是一個測試的地方。他包含3個DIV嵌套<br/><br/><br/><br/></div><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
</div>
<br/><br/><br/><br/>
</div>
<script type="text/Javascript">
//****介紹
//解決各個瀏覽器下 獲取dom 元素的 位置
//****兼容性
// ie 6 7 8 firefox 3.6 chrome 4.0 目前只測試了這幾個瀏覽器
//*****作者
// Jelle ? lu QQ:271412542 Email:[email protected] blogs:http://www.cnblogs.com/idche/
//*****源碼說明
// jquery 源碼給我很大幫助,當然更多資源來源于網絡。
//*****功能說明
// jelle(elem) 對象 elem傳遞對象ID 或者 dom對象 如果是窗口 傳遞 window 對象
//.offset() 返回當前對象相對瀏覽器的絕對位置 ,返回值 = {top:a,left:b};
//.inner() 返回當前對象可見區域 寬度與高度 ,返回值 = {wisth:a,left:b};
//.scroll() 返回當前對象被卷區top 和 left ,返回值 = {top:a,left:b};
//.offparent() 返回當前對象距離父節點的位置 top left ,返回值 = {top:a,left:b};
//.client() 返回當前對象的可用高度和寬度 ,返回值 = {width:a,height:b};
//.screen() 返回當前屏幕的可用高度和寬度 ,返回值 = {width:a,height:b};
//.mouse(event) 返回當前鼠標的x,y坐標 ,返回值 = {x:a,y:b};
//*****例子
//例子: 返回一個ID 為 test 的div 的可見區域寬度
//jelle('test').inner().width
//這里可以緊接后面直接下 width
var jelle=function(elem){
// sys 瀏覽器判斷
var sys=(function(){
var sys={},ua=navigator.userAgent.toLowerCase();
//sys.firefox= ua.match(/firefox//([/d/.]+)/) || false; //后面沒有用到所以注銷掉
sys.ie= ua.match(/msie/s([/d/.]+)/) || false;
//sys.chrome= ua.match(/chrome//([/d/.]+)/) || false; //后面沒有用到所以注銷掉
return sys;
})(),
comStyle=function(obj){
return window.getComputedStyle ? window.getComputedStyle(obj, null) : obj.currentStyle;
},
// elem 當前對象 window or other object
elem= typeof elem === 'string' ? document.getElementById(elem) :
elem === undefined ? window : elem,
isie=/^6.0|7.0|8.0$/.test(sys.ie[1]),//是否IE 瀏覽器
isie67=/^6.0|7.0$/.test(sys.ie[1]),
db=document.body,
dd=document.documentElement,
_this={};
//對象距離瀏覽器對0 0點的距離
_this.offset=function(o){
//感謝 糖粒子 告訴我這個方法
//有了這個方法至少省略了 15行代碼
return (o?o:elem).getBoundingClientRect();
}
//當前對象可見區域的寬 高 window
_this.inner=function(){
var width,height;
//not window object
if ( elem !== window ) {
var computedStyle=comStyle(elem);
width=elem.offsetWidth;
height=elem.offsetHeight;
//isie=/^6.0|7.0|8.0$/.test(sys.ie[1]),
if( isie ){
width-=parseInt(computedStyle.marginTop) || 0;
height-=parseInt(computedStyle.marginLeft) || 0;
}else{
width-=parseInt(computedStyle.paddingTop) || 0;
height-=parseInt(computedStyle.paddingLeft) || 0;
}
} else{
// window 需要區分瀏覽器
//isie=/^6.0|7.0|8.0$/.test(sys.ie[1]),
if ( isie ){
width=dd.offsetWidth;
height=dd.offsetHeight;
}else{
//當前elem=window
width=elem.innerWidth;
height=elem.innerHeight;
}
}
// 返回的數據格式{width:a,height:b}
return {'width':width,'height':height};
}
//獲取對象滾動條卷去的距離
_this.scroll=function(o){
var _elem = o ? o : elem,top,left;
if( _elem === window){
top=db.scrollTop+dd.scrollTop;
left=db.scrollLeft+dd.scrollLeft;
}else{
top=_elem.scrollTop || 0;
left=_elem.scrollLeft || 0;
}
return { 'top':top , 'left':left };
}
//獲取對象距離父節點的 位置
_this.offparent=function(){
return {'top':_this.offset(elem).top - _this.offset(elem.parentNode).top,
'left':_this.offset(elem).left - _this.offset(elem.parentNode).left
};
}
//當前對象的可用高度與寬度
_this.client=function(){
return elem==window ? {'width':db.clientWidth,'height':db.clientHeight} :
{'height':elem.scrollWidth,'height':elem.scrollHeight};
}
//屏幕可用工作區寬度高度
_this.screen=function(){
return {'width':window.screen.availWidth,'height':window.screen.availHeight,}
}
//獲取當前鼠標的位置
_this.mouse=function (e){//獲取鼠標坐標 請傳遞evNET參數
var e = window.event || e,
p=(e.pageX || e.pageY)?{ x:e.pageX, y:e.pageY } :
{ x:e.clientX + db.scrollLeft - db.clientLeft, y:e.clientY + db.scrollTop - db.clientTop };
return elem === window ? p :
{x:p.y - _this.offset().top, y:p.x - _this.offset().left};
}
return _this;
}
</script>
</body>
</html>

JavaScript技術獲取dom元素那些討厭的位置封裝代碼,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 欧美一区二区视频97色伦 | 美国caopo超碰在线视频 | 免费精品国偷自产在线 | 护士一级片 | 一一本之道高清视频在线观看中文字幕 | 久久欧洲AV无码精品色午夜麻豆 | 久久爽狠狠添AV激情五月 | 无码国产欧美日韩精品 | 久久亚洲精品中文字幕 | 青青草伊人 | 国产69精品麻豆久久久久 | 3D内射动漫同人资源在线观看 | 中文字幕完整高清版 | 最近中文字幕高清中文 | 最近免费中文字幕大全免费 | 国产欧美日韩视频怡春院 | 337p欧洲亚大胆精品 | 亚洲天堂一区二区三区 | 性色少妇AV蜜臀人妻无码 | 美女扒开腿让男生桶爽免费APP | 荡乳乱公小说 | 久久草福利自拍视频在线观看 | 亚洲精品色情婷婷在线播放 | 欧美日韩亚洲一区视频二区 | 国产免费阿v精品视频网址 国产免费69成人精品视频 | 伊人久久综合谁合综合久久 | 久久一er精这里有精品 | 把腿张开JI巴CAO死你H教室 | 午夜福利体检 | 大中国免费视频大全在线观看 | 日本又黄又裸一级大黄裸片 | 韩国女人高潮嗷嗷叫视频 | 日本xxxx96| 久久久无码精品一区二区三区 | 精品国产乱码久久久久久夜深人妻 | 特级毛片内射WWW无码 | 久久热r在线视频精品 | 亚洲日本欧美日韩高观看 | 亚洲欧美日韩一级特黄在线 | 秋葵app秋葵官网18在线观看 | 久就热视频精品免费99 |