最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2010年06月23日 11:17:02   作者:  
你還在為offset,scroll,inner,client,screen,mouse發(fā)愁嗎? 頭都大了。而且各個(gè)瀏覽器方法還不太一樣。所以往往很浪費(fèi)我們的時(shí)間。 于是我產(chǎn)生了寫(xiě)一個(gè)方法用戶 專門獲取這樣的數(shù)據(jù)。

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

例子
//例子: 返回一個(gè)ID 為 test 的div 的可見(jiàn)區(qū)域?qū)挾?//jelle('test').inner().width //這里可以緊接后面直接下 width
基于jquery的源碼

復(fù)制代碼 代碼如下:

<!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>無(wú)標(biāo)題文檔</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>解決各個(gè)瀏覽器下 獲取dom 元素的 位置</dd>
<dd>兼容性</dd>
<dd>ie 6 7 8 firefox 3.6 chrome 4.0 目前只測(cè)試了這幾個(gè)瀏覽器 </dd>
<dt>作者</dt>
<dd>Jelle · lu QQ:271412542 Email:idche@qq.com blogs:http://www.cnblogs.com/idche/</dd>
<dt>源碼說(shuō)明</dt>
<dd>jquery 源碼給我很大幫助,也用到一個(gè)叫 布魯斯 · 李 的同學(xué)的源碼,當(dāng)然更多資源來(lái)源于網(wǎng)絡(luò)。</dd>
<dt>功能說(shuō)明</dt>
<dd>
<ul id="jieshao">
<li>// jelle(elem) 對(duì)象 elem傳遞對(duì)象ID 或者 dom對(duì)象 如果是窗口 傳遞 window 對(duì)象</li>
<li>//.offset() 返回當(dāng)前對(duì)象相對(duì)瀏覽器的絕對(duì)位置 ,返回值 = {top:a,left:b};</li>
<li>//.inner() 返回當(dāng)前對(duì)象可見(jiàn)區(qū)域 寬度與高度 ,返回值 = {wisth:a,left:b};</li>
<li>//.scroll() 返回當(dāng)前對(duì)象被卷區(qū)top 和 left。 ,返回值 = {top:a,left:b};</li>
<li>//.offparent() 返回當(dāng)前對(duì)象距離父節(jié)點(diǎn)的位置 top left。 ,返回值 = {top:a,left:b};</li>
<li>//.client() 返回當(dāng)前對(duì)象的可用高度和寬度 ,返回值 = {width:a,height:b};</li>
<li>//.screen() 返回當(dāng)前屏幕的可用高度和寬度 ,返回值 = {width:a,height:b};</li>
<li>//.mouse(event) 返回當(dāng)前鼠標(biāo)的x,y坐標(biāo),elem不為空返回相對(duì)elem的坐標(biāo) ,返回值 = {x:a,y:b};
</li>
</ul>
</dd>
<dt>例子</dt>
<dd>//例子: 返回一個(gè)ID 為 test 的div 的可見(jiàn)區(qū)域?qū)挾?
//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="運(yùn)行代碼" 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 這里是一個(gè)測(cè)試的地方。他包含3個(gè)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">
//****介紹
//解決各個(gè)瀏覽器下 獲取dom 元素的 位置
//****兼容性
// ie 6 7 8 firefox 3.6 chrome 4.0 目前只測(cè)試了這幾個(gè)瀏覽器
//*****作者
// Jelle · lu QQ:271412542 Email:idche@qq.com blogs:http://www.cnblogs.com/idche/
//*****源碼說(shuō)明
// jquery 源碼給我很大幫助,當(dāng)然更多資源來(lái)源于網(wǎng)絡(luò)。
//*****功能說(shuō)明
// jelle(elem) 對(duì)象 elem傳遞對(duì)象ID 或者 dom對(duì)象 如果是窗口 傳遞 window 對(duì)象
//.offset() 返回當(dāng)前對(duì)象相對(duì)瀏覽器的絕對(duì)位置 ,返回值 = {top:a,left:b};
//.inner() 返回當(dāng)前對(duì)象可見(jiàn)區(qū)域 寬度與高度 ,返回值 = {wisth:a,left:b};
//.scroll() 返回當(dāng)前對(duì)象被卷區(qū)top 和 left ,返回值 = {top:a,left:b};
//.offparent() 返回當(dāng)前對(duì)象距離父節(jié)點(diǎn)的位置 top left ,返回值 = {top:a,left:b};
//.client() 返回當(dāng)前對(duì)象的可用高度和寬度 ,返回值 = {width:a,height:b};
//.screen() 返回當(dāng)前屏幕的可用高度和寬度 ,返回值 = {width:a,height:b};
//.mouse(event) 返回當(dāng)前鼠標(biāo)的x,y坐標(biāo) ,返回值 = {x:a,y:b};
//*****例子
//例子: 返回一個(gè)ID 為 test 的div 的可見(jiàn)區(qū)域?qū)挾?
//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; //后面沒(méi)有用到所以注銷掉
sys.ie= ua.match(/msie\s([\d\.]+)/) || false;
//sys.chrome= ua.match(/chrome\/([\d\.]+)/) || false; //后面沒(méi)有用到所以注銷掉
return sys;
})(),
comStyle=function(obj){
return window.getComputedStyle ? window.getComputedStyle(obj, null) : obj.currentStyle;
},
// elem 當(dāng)前對(duì)象 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={};
//對(duì)象距離瀏覽器對(duì)0 0點(diǎn)的距離
_this.offset=function(o){
//感謝 糖粒子 告訴我這個(gè)方法
//有了這個(gè)方法至少省略了 15行代碼
return (o?o:elem).getBoundingClientRect();
}
//當(dāng)前對(duì)象可見(jiàn)區(qū)域的寬 高 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 需要區(qū)分瀏覽器
//isie=/^6.0|7.0|8.0$/.test(sys.ie[1]),
if ( isie ){
width=dd.offsetWidth;
height=dd.offsetHeight;
}else{
//當(dāng)前elem=window
width=elem.innerWidth;
height=elem.innerHeight;
}
}
// 返回的數(shù)據(jù)格式{width:a,height:b}
return {'width':width,'height':height};
}
//獲取對(duì)象滾動(dòng)條卷去的距離
_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 };
}
//獲取對(duì)象距離父節(jié)點(diǎn)的 位置
_this.offparent=function(){
return {'top':_this.offset(elem).top - _this.offset(elem.parentNode).top,
'left':_this.offset(elem).left - _this.offset(elem.parentNode).left
};
}
//當(dāng)前對(duì)象的可用高度與寬度
_this.client=function(){
return elem==window ? {'width':db.clientWidth,'height':db.clientHeight} :
{'height':elem.scrollWidth,'height':elem.scrollHeight};
}
//屏幕可用工作區(qū)寬度高度
_this.screen=function(){
return {'width':window.screen.availWidth,'height':window.screen.availHeight,}
}
//獲取當(dāng)前鼠標(biāo)的位置
_this.mouse=function (e){//獲取鼠標(biāo)坐標(biāo) 請(qǐng)傳遞evnet參數(shù)
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>

相關(guān)文章

  • CocosCreator入門教程之網(wǎng)絡(luò)通信

    CocosCreator入門教程之網(wǎng)絡(luò)通信

    這篇文章主要介紹了CocosCreator的網(wǎng)絡(luò)通信,內(nèi)容不多,涉及到的細(xì)節(jié),讀者可以根據(jù)實(shí)際情況,自己去延申
    2021-04-04
  • js判斷主流瀏覽器類型和版本號(hào)的簡(jiǎn)單實(shí)現(xiàn)代碼

    js判斷主流瀏覽器類型和版本號(hào)的簡(jiǎn)單實(shí)現(xiàn)代碼

    下面小編就為大家?guī)?lái)一篇js判斷主流瀏覽器類型和版本號(hào)的簡(jiǎn)單實(shí)現(xiàn)代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05
  • js實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出為EXCEL(支持大量數(shù)據(jù)導(dǎo)出)

    js實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出為EXCEL(支持大量數(shù)據(jù)導(dǎo)出)

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出為EXCEL,支持大量數(shù)據(jù)導(dǎo)出,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • JS實(shí)用的帶停頓的逐行文本循環(huán)滾動(dòng)效果實(shí)例

    JS實(shí)用的帶停頓的逐行文本循環(huán)滾動(dòng)效果實(shí)例

    下面小編就為大家?guī)?lái)一篇JS實(shí)用的帶停頓的逐行文本循環(huán)滾動(dòng)效果實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • JavaScript庫(kù)urlcat?之URL構(gòu)建器庫(kù)

    JavaScript庫(kù)urlcat?之URL構(gòu)建器庫(kù)

    這篇文章主要介紹了JavaScript庫(kù)urlcat之URL構(gòu)建器庫(kù),urlcat?是一個(gè)小型的JavaScript庫(kù),使構(gòu)建URL非常方便并防止常見(jiàn)錯(cuò)誤。下文來(lái)看對(duì)其詳細(xì)介紹吧,需要的小伙伴可以參考一下
    2022-02-02
  • 微信小程序使用Vant Weapp組件庫(kù)的方法步驟

    微信小程序使用Vant Weapp組件庫(kù)的方法步驟

    這篇文章主要給大家介紹了關(guān)于微信小程序使用Vant Weapp組件庫(kù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用微信小程序具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Bootstrap每天必學(xué)之縮略圖與警示窗

    Bootstrap每天必學(xué)之縮略圖與警示窗

    Bootstrap每天必學(xué)之縮略圖與警示窗,對(duì)Bootstrap縮略圖與警示窗小編也了解的很少,希望通過(guò)這篇文章和大家更多的去學(xué)習(xí)Bootstrap縮略圖與警示窗,從中得到收獲。
    2015-11-11
  • JavaScript輸出為[object?Object]問(wèn)題的解決辦法

    JavaScript輸出為[object?Object]問(wèn)題的解決辦法

    平時(shí)我們?cè)诮邮蘸蠖朔祷氐膉son對(duì)象通常是一個(gè)字符串類型的object,所以一般我們要對(duì)這個(gè)object進(jìn)行類型轉(zhuǎn)化后,我們才能使用object里面的數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于JavaScript輸出為[object?Object]問(wèn)題的解決辦法,需要的朋友可以參考下
    2023-11-11
  • iframe實(shí)現(xiàn)高度自適應(yīng)小程序web-view方案

    iframe實(shí)現(xiàn)高度自適應(yīng)小程序web-view方案

    這篇文章主要為大家介紹了iframe實(shí)現(xiàn)高度自適應(yīng)小程序web-view方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • js觸發(fā)select onchange事件的小技巧

    js觸發(fā)select onchange事件的小技巧

    select 或text的onchange事件需要手動(dòng)改變select或text的值才能觸發(fā),下面有個(gè)不錯(cuò)的方法可以通過(guò)js觸發(fā)select onchange事件
    2014-08-08

最新評(píng)論

平山县| 科技| 太原市| 揭东县| 肇源县| 东港市| 蛟河市| 孝义市| 昌黎县| 阿瓦提县| 大洼县| 建平县| 板桥市| 岱山县| 卢氏县| 福州市| 仙居县| 天台县| 宜兰市| 德江县| 许昌县| 五台县| 自贡市| 东辽县| 牟定县| 徐汇区| 会宁县| 宜良县| 偏关县| 三穗县| 神池县| 南漳县| 延吉市| 永川市| 林甸县| 孟州市| 墨玉县| 铁岭县| 鹿邑县| 平凉市| 正定县|