欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

DHTML 中的絕對定位

 更新時間:2006年11月26日 00:00:00   作者:  
下面的東西顯示了在復雜的情況下,
怎樣最好地在一個Element的旁邊顯示某個DIV。
當然,你可以滾動窗口,使這個按紐靠窗口的 左/上/右/下 的情況,觀察菜單的彈出方位。
全部代碼:
復制代碼 代碼如下:
<table border=1 cellpadding=8 cellspacing=0> 
<tr><td>table1</td><td>table1</td></tr> 
<tr><td>table1</td><td> 
 <div id=div1 style='position:absolute;background-color:wheat;padding:4px;'> 
 div1 start 
 <div id=div1button style='border:outset 2px;background-color:threedface;color:red;font-weight:bold;cursor:hand;padding:4px;'> 
  ClickMe 
 </div> 
 div1 end 
 </div> 
&nbsp;</td></tr> 
</table> 
<div style='height:100px'>-</div> 
<table border=1 cellpadding=8 cellspacing=0> 
<tr><td>table2</td><td>table2</td></tr> 
<tr><td>table2</td><td> 
 <div id=div2 style='position:relative;left:24px;background-color:wheat;'> 
 div2 start 
 <div id=div2menu style='display:none;position:absolute;background-color:lightgrey;height:200px;width:120px;border:outset 1px;padding:4px'> 
  div2menu<br> 
  div2menu<br> 
  div2menu<br> 
  div2menu<br> 
  div2menu<br> 
 </div> 
 div2 end 
 </div> 
&nbsp;</td></tr> 
</table> 
<script language='jscript'> 
//get the position of a element ( by the scroll offset ) 
function LostinetWebGetScrollPostion(e) 

 var b=e.document.body; 
 if(e==b)return {left:0,top:0}; 
 with(e.getBoundingClientRect()) 
 { 
  return {left:b.scrollLeft+left,top:b.scrollTop+top}; 
 } 

//get the position of a element ( by the client offset ) 
function LostinetWebGetClientPosition(e) 

 var b=e.document.body; 
 if(e==b)return {left:-b.scrollLeft,top:-b.scrollTop}; 
 with(e.getBoundingClientRect()) 
 { 
  return {left:left-b.clientLeft,top:top-b.clientTop}; 
 } 

//get absolute or relative parent 
function LostinetWebGetStandParent(e) 

 for(var p=e.parentElement;p!=null;p=p.parentElement) 
 { 
  var sp=p.currentStyle.position; 
  if(sp=='absolute'||sp=='relative') 
   return p; 
 } 
 return e.document.body; 

//calc the position of floate that relative to e 
function LostinetWebCalcPosition(floate,e) 

 var epos=LostinetWebGetScrollPostion(e); 
 var spos=LostinetWebGetScrollPostion(LostinetWebGetStandParent(floate)); 
 var s=LostinetWebGetStandParent(floate); 
 return {left:epos.left-spos.left-s.clientLeft,top:epos.top-spos.top-s.clientTop}; 

//get the best position to put the floate 
function LostinetWebAdjustMirror(floate,e,pos) 

 //c:Client,f:floate,e:e,p:floate's StandParent,m:Mirror 
 var cw=e.document.body.clientWidth; 
 var ch=e.document.body.clientHeight; 
 var fw=floate.offsetWidth; 
 var fh=floate.offsetHeight; 
 var ew=e.offsetWidth; 
 var eh=e.offsetHeight; 
 var ecpos=LostinetWebGetClientPosition(e); 
 var empos={left:ecpos.left+ew/2,top:ecpos.top+eh/2}; 
 var pcpos=LostinetWebGetClientPosition(LostinetWebGetStandParent(floate)); 
 var fcpos=LostinetWebGetClientPosition(floate); 
 var fmpos={left:pcpos.left+pos.left+fw/2,top:pcpos.top+pos.top+fh/2}; 
 //left<-->right 
 if( (fmpos.left<empos.left) ? ((fmpos.left-fw/2<0)&&((empos.left*2-fmpos.left)+fw/2<=cw)) : ((fmpos.left+fw/2>cw)&&((empos.left*2-fmpos.left)-fw/2>=0)) ) 
  fmpos.left=empos.left*2-fmpos.left; 
 //top<-->bottom 
 if( (fmpos.top<empos.top) ? ((fmpos.top-fh/2<0)&&((empos.top*2-fmpos.top)+fh/2<=ch)) : ((fmpos.top+fh/2>ch)&&((empos.top*2-fmpos.top)-fh/2>=0)) ) 
  fmpos.top=empos.top*2-fmpos.top; 
 pos.left=fmpos.left-pcpos.left-fw/2; 
 pos.top=fmpos.top-pcpos.top-fh/2; 

document.attachEvent('onclick',function f() 

 if(div1button.contains(event.srcElement))return; 
 if(div2menu.contains(event.srcElement))return; 
 div2menu.runtimeStyle.display='none'; 
}); 
function div1button.onclick() 

 div2menu.runtimeStyle.display='block'; 
 var pos=LostinetWebCalcPosition(div2menu,div1button); 
 pos.top+=div1button.offsetHeight; 
 LostinetWebAdjustMirror(div2menu,div1button,pos); 
 div2menu.runtimeStyle.left=pos.left; 
 div2menu.runtimeStyle.top=pos.top; 

</script> 

相關文章

  • JavaScript對象合并實現(xiàn)步驟介紹

    JavaScript對象合并實現(xiàn)步驟介紹

    這篇文章主要介紹了JavaScript對象合并實現(xiàn)步驟,為什么要合并?這是我在重構代碼的時候的一個需求。簡單來說,我會有若干個對象需要合并為一個對象。而這些對象為兩層,如果直接展開或者賦值會涉及到深拷貝
    2023-01-01
  • JavaScript 中判斷變量是否為數(shù)字的示例代碼

    JavaScript 中判斷變量是否為數(shù)字的示例代碼

    這篇文章主要介紹了JavaScript 中判斷變量是否為數(shù)字的示例代碼,代碼簡單易懂對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • JavaScript在瀏覽器中的執(zhí)行機制

    JavaScript在瀏覽器中的執(zhí)行機制

    既然說到了JavaScript,那么就會繞不過去執(zhí)行上下文,只有理解了執(zhí)行上下文才能更好的理解JavaScript本身,不過本部分不是專門講解?JavaScript的,主要從JavaScript的執(zhí)行順序開始介紹一下JavaScript是怎樣運行的
    2023-09-09
  • JS異步堆棧追蹤之為什么await勝過Promise

    JS異步堆棧追蹤之為什么await勝過Promise

    與直接使用Promise相比,使用async/await不僅可以使代碼更具可讀性,而且還可以在JavaScript引擎中實現(xiàn)一些有趣的優(yōu)化。這篇文章是關于一個這樣的優(yōu)化,涉及異步代碼的堆棧追蹤。
    2021-04-04
  • javascript中字符串拼接詳解

    javascript中字符串拼接詳解

    字符串拼接是所有程序設計語言都需要的操作。當拼接結果較長時,如何保證效率就成為一個很重要的問題。本文介紹的是Javascript中的字符串拼接,希望對你有幫助,一起來看。
    2014-09-09
  • js實現(xiàn)上傳圖片預覽方法

    js實現(xiàn)上傳圖片預覽方法

    這篇文章主要為大家詳細介紹了js實現(xiàn)上傳照片預覽的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • JavaScript中數(shù)組遍歷的7種方法小結

    JavaScript中數(shù)組遍歷的7種方法小結

    作為JavaScript開發(fā)人員,熟悉數(shù)組的遍歷和操作是非常重要的,數(shù)組遍歷是處理和操作數(shù)組元素的基本需求之一,本文將介紹JavaScript中的7種常見數(shù)組遍歷方法,幫助你成為數(shù)組操作的達人
    2023-11-11
  • JS修改地址欄參數(shù)實例代碼

    JS修改地址欄參數(shù)實例代碼

    本文給大家介紹js修改地址欄參數(shù)的實例代碼,并給大家附上用JS動態(tài)改變地址欄內容 window.location.href window.location.hash的方法,比較實用,需要的朋友參考下吧
    2016-06-06
  • javascript中的正則表達式使用詳解

    javascript中的正則表達式使用詳解

    之前講了javascript對正則表達式的實現(xiàn)方式了,只定義了正則表達式,但是如何在javascript中真正使用正則表達式呢?在javascript中RegExp和String對象都有處理正則表達式的方法。
    2015-08-08
  • JavaScript如何實現(xiàn)在文本框(密碼框)輸入提示語

    JavaScript如何實現(xiàn)在文本框(密碼框)輸入提示語

    為了更好的達到用戶體驗度,我們在登錄表單時會有一些提示語言,比如說:“請輸入用戶名”和“請輸入密碼”等語言,下面小編通過本篇文章給大家分享JavaScript如何實現(xiàn)在密碼框中出現(xiàn)提示語,對js密碼框提示語相關知識感興趣的朋友一起學習吧
    2015-12-12

最新評論