<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    This Is A FineDay

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      93 隨筆 :: 0 文章 :: 69 評論 :: 0 Trackbacks

    select擋住div的5種解決方法
    ?

    在IE中,select屬于window類型控件,它會“擋住”所有非window類型控件
    可以這么理解,div這樣的組件是在瀏覽器客戶區使用代碼“渲染”的,
    他們被渲染在客戶區的繪畫表面上,
    而select是使用的標準windows控件,只是作為客戶區的子控件放置而已,
    它會覆蓋所有客戶區繪畫表面上“畫”出來的一切,但不一定會覆蓋其他類型的window控件,
    比如iframe和其他的select,如果你使用過類似Delphi這樣的環境就會自然理解。IE7解決了此類BUG。

    有多種種辦法;
    1. 修改select,不用標準select,而是自己用其他html元素模擬
    2. 修改你的div,使用iframe。
    3. 在div被顯示的時候或者到達select所在位置時隱藏select
    4. 在div中或div的同一坐標上,用相同尺寸的iframe先遮擋一下,然后在iframe上顯示div的內容。
    5.Object對象的優先度較高,可以擋住select框

    以下例子系網上資源整理

    原址:http://hi.baidu.com/suofang/blog/item/72f2f7ed23f2324e78f055c4.html

    第4種方法的例子:最好的方法:iframe來當作div的底

    Div被Select擋住,是一個比較常見的問題。???
    ????? 有的朋友通過把div的內容放入iframe或object里來解決。???
    ????? 可惜這樣會破壞頁面的結構,互動性不大好。???
    ????
    ????? 這里采用的方法是:???
    ????
    ????? 雖說div直接蓋不住select???
    ????? 但是div可以蓋iframe,而iframe可以蓋select,???
    ????? 所以,把一個iframe來當作div的底,???
    ????? 這個div就可以蓋住select了.???


    <html>
    <head>
    <script>
    function DivSetVisible(state)
    {
    var DivRef = document.getElementById('PopupDiv');
    var IfrRef = document.getElementById('DivShim');
    if(state)
    {
    DivRef.style.display = "block";
    IfrRef.style.width = DivRef.offsetWidth;
    IfrRef.style.height = DivRef.offsetHeight;
    IfrRef.style.top = DivRef.style.top;
    IfrRef.style.left = DivRef.style.left;
    IfrRef.style.zIndex = DivRef.style.zIndex - 1;
    IfrRef.style.display = "block";
    }
    else
    {
    DivRef.style.display = "none";
    IfrRef.style.display = "none";
    }
    }
    </script>
    </head>
    <body>
    <form>
    <select>
    <option>A Select Box is Born ....</option>
    </select>
    </form>
    <div id="PopupDiv" style="position:absolute; top:25px; left:50px; padding:4px; display:none; background-color:#000000; color:#ffffff; z-index:100">
    .... and a DIV can cover it up<br/>through the help of an IFRAME.
    </div>
    <iframe id="DivShim" src="javascript:false;" scrolling="no" frameborder="0" style="position:absolute; top:0px; left:0px; display:none;">
    </iframe>
    <br/>
    <br/>
    <a href="#" onclick="DivSetVisible(true)">Click to show DIV.</a>
    <br/>
    <br/>
    <a href="#" onclick="DivSetVisible(false)">Click to hide DIV.</a>
    </body>
    </html>

    第3種方法的例子:最直接的方法:隱藏下拉框.

    下面提供的是一個比較通用的一組函數:

    test.htm

    ------------

    <script>
    var HideElementTemp = new Array();
    //點擊菜單時,調用此的函數,菜單對象
    function cal_hideElementAll(obj){
    ??????????? cal_HideElement("IMG",obj);
    ??????????? cal_HideElement("SELECT",obj);
    ??????????? cal_HideElement("OBJECT",obj);
    ??????????? cal_HideElement("IFRAME",obj);
    }
    function cal_HideElement(strElementTagName,obj){
    try{
    ??????? var showDivElement = obj;
    ??????? var calendarDiv = obj;
    ??????? var intDivLeft = cal_GetOffsetLeft(showDivElement);
    ??????? var intDivTop = cal_GetOffsetTop(showDivElement);//+showDivElement.offsetHeight;
    ??????? //HideElementTemp=new Array()
    ??????? for(i=0;i<window.document.all.tags(strElementTagName).length; i++){
    var objTemp = window.document.all.tags(strElementTagName)[i];
    if(!objTemp||!objTemp.offsetParent)
    ???????? continue;
    var intObjLeft=cal_GetOffsetLeft(objTemp);
    var intObjTop=cal_GetOffsetTop(objTemp);
    if(((intObjLeft+objTemp.clientWidth)>intDivLeft)&&
    ??????? (intObjLeft<intDivLeft+calendarDiv.style.posWidth)&&
    ??????? (intObjTop+objTemp.clientHeight>intDivTop)&&
    ??????? (intObjTop<intDivTop+calendarDiv.style.posHeight)){
    ???????? //var intTempIndex=HideElementTemp.length;//已經有的長度
    ????? //save elementTagName is stutas
    ???????? //HideElementTemp[intTempIndex]=new Array(objTemp,objTemp.style.visibility);
    ???????? HideElementTemp[HideElementTemp.length]=objTemp
    ???????? objTemp.style.visibility="hidden";
    ??????????? }
    ??????? }
    }catch(e){alert(e.message)
    }
    }

    function cal_ShowElement(){
    ??????? var i;
    ??????? for(i=0;i<HideElementTemp.length; i++){
    var objTemp = HideElementTemp[i]
    if(!objTemp||!objTemp.offsetParent)
    ???????? continue;
    objTemp.style.visibility=''
    ??????? }
    ??????? HideElementTemp=new Array();
    }
    function cal_GetOffsetLeft(src){
    ??????? var set=0;
    ??????? if(src && src.name!="divMain"){
    ??????????? if (src.offsetParent){
    ?????????????? set+=src.offsetLeft+cal_GetOffsetLeft(src.offsetParent);
    }
    if(src.tagName.toUpperCase()!="BODY"){
    ???????? var x=parseInt(src.scrollLeft,10);
    ???????? if(!isNaN(x))
    ??????????????? set-=x;
    }
    ??????? }
    ??????? return set;
    }

    function cal_GetOffsetTop(src){
    ??????? var set=0;
    ??????? if(src && src.name!="divMain"){
    ??????????? if (src.offsetParent){
    ??????????????? set+=src.offsetTop+cal_GetOffsetTop(src.offsetParent);
    ?????? }
    if(src.tagName.toUpperCase()!="BODY"){
    ???????? var y=parseInt(src.scrollTop,10);
    ???????? if(!isNaN(y))
    ????? set-=y;
    }
    ??????? }
    ??????? return set;
    }

    </script>
    <select></select>
    <select></select>
    <div style="position:absolute;left:0;top:0;width:100;height:100;background-color:red" onclick="cal_hideElementAll(this)">
    點擊讓select隱藏
    </div>
    <br><br><br><br><br><br>
    <input type="button" value="點擊讓select顯示" onclick="cal_ShowElement()">

    以上這種方法,如果對于select框數目少,相對固定的話,直接用obj.style.visibility="hidden"這樣進行隱藏是更直接的.

    第2種方法:用iframe作載體

    以下是一簡單的例子:

    -----------

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>簡單菜單</title>
    <!--
    提供定位函數,用iframe作載體,不會被select擋住
    By Fason(2003-5-21)
    -->
    <style id=s>
    #div1{
    position:absolute;
    z-index:100;
    width:100;
    height:130;
    background-color:#d2e8ff;
    border:1 solid black;
    }
    div{cursor:hand;font-size:12px;}
    a{text-decoration:none;color:red;font-size:12px}
    </style>
    </head>
    <body>
    <script>
    function window.onload(){
    var shtml=div1.innerHTML;
    var ifm=document.createElement("<iframe frameborder=0 marginheight=0 marginwidth=0 hspace=0 vspace=0 scrolling=no></iframe>")
    ifm.style.width=div1.offsetWidth
    ifm.style.height=div1.offsetHeight
    ifm.name=ifm.uniqueID
    div1.innerHTML=""
    div1.appendChild(ifm)
    window.frames[ifm.name].document.write(s.outerHTML+"<body leftmargin=0 topmargin=0>"+shtml+"</body>")
    }

    function show(){
    with(document.all.img1){
    x=offsetLeft;
    y=offsetTop;
    objParent=offsetParent;
    while(objParent.tagName.toUpperCase()!= "BODY"){
    x+=objParent.offsetLeft;
    y+=objParent.offsetTop;
    objParent = objParent.offsetParent;
    }
    y+=offsetHeight-1
    }
    with(document.all.div1.style){
    pixelLeft=x
    pixelTop=y
    visibility=''
    }
    }
    function hide(){
    document.all.div1.style.visibility='hidden'
    }
    </script>
    <img id=img1 onmouseover="show()" onmouseout="hide()" src="ie.gif"><br><select></select>
    <div id=div1 onmouseover="style.visibility=''" onmouseout="style.visibility='hidden'" style="visibility:hidden;">
    <div href="http://www.csdn.net" onmouseover="style.backgroundColor='highlight'" onmouseout="style.backgroundColor=''" onclick="window.open(href)">中國程序員</div>
    <div href="</div>
    </body>
    </html>

    第5種方法:Object對象的優先度較高,可以擋住select框

    <OBJECT id=aa style="display:none;z-index:1000; position:absolute; top:0; left:0; width:152; height: 200;" type="text/x-scriptlet" data="about:<body><div style='position:absolute;left:0;top:0;width:152;height:200;font:14;color:white;background:black;border:1 solid black'>test</div>"></OBJECT>
    <select><option>hellohellohellohello</select><button onclick=aa.style.display=aa.style.display=="none"?"":"none">test</button>

    這種方法雖然也簡單,但對復雜的層是來說還不是好的解決方法.

    posted on 2007-08-07 13:53 Peter Pan 閱讀(9314) 評論(0)  編輯  收藏 所屬分類: JS
    主站蜘蛛池模板: 午夜dj免费在线观看| 120秒男女动态视频免费| 亚洲免费二区三区| 午夜不卡久久精品无码免费| 国产日产亚洲系列| a毛片久久免费观看| 亚洲免费人成在线视频观看| 国内精品免费在线观看| 亚洲精品乱码久久久久久蜜桃不卡| fc2成年免费共享视频18| 亚洲色WWW成人永久网址| 国产午夜无码精品免费看| 亚洲午夜视频在线观看| 精品无码免费专区毛片| 亚洲色偷精品一区二区三区| 国产视频精品免费| 精选影视免费在线 | 久久国产亚洲观看| av无码国产在线看免费网站| 亚洲熟妇自偷自拍另欧美| 四虎永久免费影院在线| 三年片免费高清版| 亚洲国产亚洲综合在线尤物| 黄网址在线永久免费观看| 在线播放国产不卡免费视频| 国产亚洲成AV人片在线观黄桃| 99精品热线在线观看免费视频 | 国内精品免费在线观看| 亚洲精品网站在线观看你懂的| 成人免费网站在线观看| jizz免费观看视频| 亚洲经典在线观看| 午夜国产大片免费观看| 国产三级在线免费| 亚洲熟妇无码AV| 国产成人精品免费大全| a级特黄毛片免费观看| 国内精品免费在线观看| 成在线人免费无码高潮喷水| 国内精品乱码卡1卡2卡3免费| 国产无遮挡吃胸膜奶免费看 |