我是FE,也是Fe

          前端來源于不斷的點滴積累。我一直在努力。

          統計

          留言簿(15)

          閱讀排行榜

          評論排行榜

          使用div模擬出frameset效果

          在史前時代,大家喜歡用frameset來做框架結構?;叵肫饋韋rameset的優點在于布局的自適應。frameset已經早不是web標準推薦的了。而且弄這么多頁面去實現這個效果也很蹩腳。其實可以用css布局和定位來實現這樣的效果的。下面是一個demo:
          <!doctype html> 
              
          <html xmlns="http://www.w3.org/1999/xhtml" >
               
          <head>
                
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                
          <title>div仿框架布局</title>
                
          <style type="text/css">
                 * 
          { margin:0; padding:0; list-style:none;}
                 html,body 
          { height:100%; overflow:hidden;}
                 
          /*reset panel posotion*/
                 .panel
          {position:absolute;top:0px;right:0px;bottom:0px; left:0px; z-index:1;}
                 .top 
          { height:50px; background-color:#ccc;}
                 .left 
          { top:50px; bottom:50px; width:200px; background-color:#eee;}
                 .main 
          { left:200px; top:50px; bottom:50px;background-color:#f5f5f5;}
                 .bottom 
          { top:auto;  height:50px;background-color:#ccc;}
                 .panel iframe 
          { width:100%; height:100%;}

                  
          /* class for hide top*/
                 .hidetop .top
          {display:none;}
                 .hidetop .left,.hidetop .main
          {top:0px;}

                  
          /* class for hide bottom*/
                 .hidebottom .bottom
          {display:none;}
                 .hidebottom .left,.hidebottom .main
          {bottom:0px;}

                 
          /*class for hide left*/
                 .hideleft .left
          {display:none;}
                 .hideleft .main
          {left:0px;}

                 
          /* HACK:*IE6/7 _IE6*/
                 html 
          { *padding:50px 0px 50px 0px;}
                 .panel
          {*position:relative;}
                 .top 
          { *margin-top:-50px; *margin-bottom:0px; }
                 .left 
          { *height:100%; *float:left; *top:0px;  }
                 .main 
          { *height:100%;  *top:0;*left:0px;_left:-3px;}/*IE 6 float 3px bug*/
                  .hidetop
          {*padding-top:0px;}
                  .hidebottom
          {*padding-bottom:0px;}
                  .hideleft
          {*padding-left:0px;}

                
          </style>
                
          <script type="text/javascript">
                  
          function toggleClass(dom,className){
                      
          var reg = new RegExp(className,"g"),
                          cn 
          = dom.className,
                          newcn
          = cn.indexOf(className)==-1?(cn+" "+className):cn.replace(reg,"");
                      dom.className
          =newcn;
                  }
                
          </script>
               
          </head>
               
          <body>
                
          <div class="panel top">頂部內容(iframe上scrolling="yes" style="overflow:visible;"防止IE6出現iframe橫向滾動條)</div>
                
          <div class="panel left">
                  
          <input type="button" id="" name="" value="收起/顯示上部" onclick="toggleClass(document.getElementsByTagName('html')[0],'hidetop')" />
                  
          <br />
                  
          <input type="button" id="" name="" value="收起/顯示左部" onclick="toggleClass(document.getElementsByTagName('html')[0],'hideleft')" />
                  
          <br />
                  
          <input type="button" id="" name="" value="收起/顯示下部" onclick="toggleClass(document.getElementsByTagName('html')[0],'hidebottom')" />
                
          </div>
                
          <div class="panel main" ><iframe frameborder="0"  scrolling="yes" style="overflow:visible;" src="http://www.baidu.com"></iframe></div>
                
          <div class="panel bottom">底部內容</div>
               
          </body>
              
          </html>

          代碼很簡潔,看著也很舒服,在IE6下也能堅強的正確的顯示著。

          可以參考blueidea論壇里面的這個經典的帖子:

          http://bbs.blueidea.com/thread-2818595-4-1.html

          posted on 2011-06-17 12:26 衡鋒 閱讀(6315) 評論(5)  編輯  收藏 所屬分類: javascript 、Web開發

          評論

          # re: 使用div模擬出frameset效果 2011-06-18 05:59 Shor

          似乎現在用jquery實現類似的功能更加美觀容易. 不知道jquery對老一代瀏覽器的支持如何.  回復  更多評論   

          # re: 使用div模擬出frameset效果 2011-06-18 10:19 陽衡鋒

          @Shor
          jQuery的有borderlayout插件http://layout.jquery-dev.net/。非常好用。對于比較簡單的布局可以采用上述做法。  回復  更多評論   

          # re: 使用div模擬出frameset效果 2011-06-20 17:23 楊文勝

          newcn= cn.indexOf(className)==-1?(cn+" "+className):cn.replace(reg,"");
          這沒太讀懂,解釋一下可以不,陽哥  回復  更多評論   

          # re: 使用div模擬出frameset效果 2011-06-20 17:29 陽衡鋒

          @楊文勝
          這不就是如果className里面有那個class了就把他替換,否則給他加在最后面么。
          if(cn.indexOf(className)==-1){
          newcn=(cn+" "+className):
          }else{
          newcn = cn.replace(reg,"");
          }  回復  更多評論   

          # re: 使用div模擬出frameset效果 2011-09-15 08:33 tb

          剛好用到   回復  更多評論   

          主站蜘蛛池模板: 固原市| 清原| 保山市| 若尔盖县| 德清县| 峡江县| 建水县| 平昌县| 文登市| 慈溪市| 德清县| 新乐市| 余庆县| 大竹县| 龙口市| 柞水县| 永修县| 雷波县| 尚义县| 汝城县| 科尔| 富锦市| 开封县| 九龙坡区| 南木林县| 宁晋县| 喀喇沁旗| 霍林郭勒市| 泸州市| 江北区| 马尔康县| 贞丰县| 弥勒县| 贡觉县| 巴塘县| 滕州市| 闻喜县| 临湘市| 天台县| 灵丘县| 梁河县|