日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Web布局中的幾種寬高自適應(yīng)

當(dāng)然像亞馬遜首頁那一種布局會更個性化一些,它會根據(jù)用戶持有設(shè)備的屏幕大小而現(xiàn)實內(nèi)容。例如:一部PC機上可能一排現(xiàn)實5個商品,一部iPad上可能顯示3個商品,而一部手機上可能一排只顯示1個商品。至少不要 出現(xiàn)如下這種情況,在符合W3C標準的瀏覽器中顯示正常,而在IE6,7中頁面亂套,因為IE6,7仍然擁有很龐大的用戶群;即使你做的Web應(yīng)用是面向某些企業(yè)用戶的,這種情況下用戶較少,但你也不能強求用戶使用哪一種瀏覽器。要解決這個問題,這就需要用到頁面布局中的自適應(yīng),雖然這個問題看起來很簡單。

我在這里將會介紹三種我最近在項目中用到的自適應(yīng):

◆ 頁面整體寬度自適應(yīng)

◆ iframe寬高自適應(yīng)

◆ jqgrid高度自適應(yīng)

頁面整體寬度自適應(yīng)

先看看下面的頁面基本布局圖

頁面分為三個部分:

(1) Header,這一部分寬度自適應(yīng)

(2) Left 左邊欄,為定寬200px,一般為菜單或?qū)Ш?/p>

(3) Right右側(cè)主內(nèi)容區(qū)域,寬度自適應(yīng)

既然做了分解,我們就把它當(dāng)做需求來一步一步實現(xiàn)它吧,首先是Header區(qū)域。

請看代碼1:

 
 
 
 
  1.  
  2. body{  
  3. font-family: Arial, Helvetica, sans-serif;  
  4. margin: 0;  
  5. padding: 0;  
  6. }  
  7. #header  
  8. {  
  9. height: 70px;  
  10.  margin: 20px 30px;  
  11. padding: 0;  
  12. border: 1px solid #ccc;  
  13. }  
  14.  
  15.  
  16.  
  17.  
  18.  
 
  •  
  • 關(guān)鍵的代碼只有一行,我已經(jīng)標出。

    現(xiàn)在有一個問題了,如果Header的內(nèi)容也比較豐富,可能Logo + Banner的總寬度為1000px了,但有些小屏幕卻看不完整,這時我們得為這個Header 加個最小寬度限制。在IE 7 +和W3C瀏覽器中,擁有一個min-width屬性可以實現(xiàn)這個效果,但是IE6不支持(參照各版本IE瀏覽器CSS兼容性列表)。不過css expression可以幫我們解決這個問題,請看代碼2:

     
     
     
     
    1.  
    2.  
    3.  
    4.  
    5. Header自適應(yīng) 
    6.  
    7. body{  
    8. font-family: Arial, Helvetica, sans-serif;  
    9. margin: 0;  
    10. padding: 0;  
    11. }  
    12. #header  
    13. {  
    14. /* IE6 不支持min-width屬性,但是IE7+和W3C支持 */  
    15. min-width:1000px;  
    16. /* 用CSS表達式讓IE6也支持最小寬度 */  
    17. _width:expression((document.documentElement.clientWidth||document.body.clientWidth)<1000?"1000px":"");  
    18. height: 70px;  
    19.  padding-left: 30px;  
    20. padding-right: 30px;  
    21. }  
    22. #header_content{  
    23. width: 100%;  
    24. border: 1px solid #ccc;  
    25. height: 100%;  
    26. }  
    27.  
    28.  
    29.  
    30.  
    31.  
    32.  
     
  •  
  •  
  •  
  •  
  • 在代碼2中我并沒有直接更改#header用margin屬性來控制,雖說margin:0 auto可以來控制居中自適應(yīng),但是如果需要頁邊距為30像素時用margin: 0 30px則不行了了(在Firefox滿屏是可以的,但瀏覽器縮小時,左側(cè)nargin是存在的,而右側(cè)被吃掉了)

    #p#

    OK,現(xiàn)在已經(jīng)實現(xiàn)Header部分的居中自適應(yīng)了,下面的Left和Right也不會麻煩。雖然上面的Header層使用了expression來實現(xiàn)寬度自適應(yīng),但是下面的Right層則不能使用同樣的方式,因為Header層依賴的是body,而Right層則不是。如果不考慮IE6的存在,則用如下代碼就可以實現(xiàn)本文開頭的布局圖。請看代碼3:

     
     
     
     
    1.  
    2. body{  
    3. font-family: Arial, Helvetica, sans-serif;  
    4. margin: 0;  
    5. padding: 0;  
    6. }  
    7. #header  
    8. {  
    9. /* IE6 不支持min-width屬性,但是IE7+和W3C支持 */  
    10. min-width:1000px;  
    11. /* 用CSS表達式讓IE6也支持最小寬度 */  
    12. _width:expression((document.documentElement.clientWidth||document.body.clientWidth)<1000?"1000px":"");  
    13. height: 70px;  
    14. padding-left: 30px;  
    15. padding-right: 30px;  
    16. }  
    17. #header_content{  
    18. width: 100%;  
    19. border: 1px solid #ccc;  
    20. height: 100%;  
    21. }  
    22. #main{  
    23. /* IE6 不支持min-width屬性,但是IE7+和W3C支持 */  
    24. min-width:1000px;  
    25. /* 用CSS表達式讓IE6也支持最小寬度 */  
    26. _width:expression((document.documentElement.clientWidth||document.body.clientWidth)<1000?"1000px":"");  
    27. height: 70px;  
    28. padding-left: 30px;  
    29. padding-right: 30px;  
    30. margin-top: 20px;  
    31. }  
    32. #left{  
    33. border: 1px solid #ccc;  
    34. float: left;  
    35. vertical-align:middle;  
    36. text-align:center;  
    37. width: 200px;  
    38. }  
    39. #right{  
    40. border: 1px solid #ccc;  
    41.  float: right;  
    42. position: absolute;  
    43. left: 240px;  
    44. right: 30px;  
    45. min-width: 790px;  
    46. vertical-align:middle;  
    47. text-align:center;  
    48. overflow: hidden;  
    49. }  
    50.  
    51.  
    52.  
    53.  
    54.  
    55.  
     
  •  
  •  
  •  
  • Left

     
  •  
  •  
  • Right

     
  •  
  •  
  •  
  • 紅色部分標出的是關(guān)鍵代碼,又回到之前的問題了,min-width屬性在IE6中不支持,所以你在IE6中運行代碼3將得不到我們預(yù)期的結(jié)果。那么,現(xiàn)在就要借助js來實現(xiàn)這個效果了。請看代碼4:

     
     
     
     
    1. View Code  
    2.  
    3. "text/css">
       
    4. body {
       
    5.     margin:0;
       
    6.     padding: 0;
       
    7. }
       
    8. #container {
       
    9.     /* IE6 不支持min-width屬性,但是IE7+和W3C支持 */
       
    10.     min-width:1000px;
       
    11.     /* 用CSS表達式讓IE6也支持最小寬度 */
       
    12.     _width:expression((document.documentelement.clientwidth||document.body.clientwidth)<1000?"1000px":"");
       
    13.     margin: 0 auto;
       
    14. }
       
    15. #header {
       
    16.     /* IE6 不支持min-width屬性,但是IE7+和W3C支持 */
       
    17.     min-width:940px;
       
    18.     height: 70px;
       
    19.     padding-left: 30px;
       
    20.     padding-right: 30px;
       
    21. }
       
    22. /* Header Content的實際寬度已經(jīng)為1002px了 */
       
    23. #header_content {
       
    24.     width: 100%;
       
    25.     border: 1px solid #ccc;
       
    26.     height: 100%;
       
    27. }
       
    28. #main {
       
    29.     padding-left:30px;
       
    30.     padding-right: 30px;
       
    31.     margin-top: 10px;
       
    32. }
       
    33. #main_content {
       
    34.     width: 100%;
       
    35. }
       
    36. #left {
       
    37.     border: 1px solid #ccc;
       
    38.     width: 200px;
       
    39.     float: left;
       
    40. }
       
    41. #right {
       
    42.     border: 1px solid #ccc;
       
    43.     float: right;
       
    44.     min-width:700px;
       
    45. }
       

    46.  

    47.  

    48.  
    49. "container">
       
    50.   "header">
       
    51.     "header_content"> "http://images.cnblogs.com/logo_small.gif" alt=""> 

     
  •   

  •  
  •   "main">
     
  •     "left">
     
  •       

    Left


     
  •     

  •  
  •     "width: 1049px; " id="right">
     
  •       

    Right


     
  •     
     
  •    
  •  
  •  
  •  

    代碼中有幾處要注意的地方,我在下圖中有標注出來,要查看運行結(jié)果,請復(fù)制上面的代碼保存為html,所有url都是外部鏈接。

    ***部分終于講完了,呼~~~。

    #p#

    iframe寬高自適應(yīng)

    有了前面的基礎(chǔ),要做iframe的寬高自適應(yīng)就很簡單了。iframe高度自適應(yīng)是根據(jù)屏幕的高度來的(無滾動條),寬度自適應(yīng)已經(jīng)通過前面的方式實現(xiàn)了,高度自適應(yīng)只需要對height屬性進行計算處理就可以實現(xiàn)。

    根據(jù)上面提供的代碼,要更改的地方很少。這里有一個完整的iframe例子下載:iframe auto width and height demo,代碼可以直接看里面的。

    無圖無真相,還是截個圖看看吧。

    jqgrid高度自適應(yīng)

    jqgrid是一個較為強大的表格控件,對于它的介紹為不再贅述,至于它的用法和結(jié)合asp.net進行ajax分頁的方式我將在下一篇講述(不是loading once的方式,loading once存在一些bug)。由于上面的iframe高度已經(jīng)根據(jù)屏幕的高度做了限制,而jqgrid提供了一頁顯示10,20,30條這種類似的選項,原有的高度是不可能讓30條數(shù)據(jù)顯示完全的。這就需要為jqgrid限制一個***高度,例如300px,當(dāng)內(nèi)容的高度超出300px時,jqgrid就得以豎向滾動條滑動來顯示內(nèi)容。

    假定我們已經(jīng)為jqgrid綁定好數(shù)據(jù)源,jqgrid的高度為360px。要實現(xiàn)兼容所有瀏覽器的jqgrid高度自適應(yīng),我們現(xiàn)在還需借助一個東西,http://noteslog.com/post/how-to-fix-the-resize-event-in-ie/,其實還是為了解決IE resize的bug。

    還是截兩個效果圖,圖1每頁顯示10條,圖2每頁顯示30條。

    總結(jié)

    上面的代碼中實際還是有一些問題的,在IE8中已經(jīng)不支持expression表達式了,而且這種腳本式的css也影響代碼的整體美觀。除了最普通的一行式寬度自適應(yīng),其它種類的自適應(yīng)都需要借助腳本來實現(xiàn),想必大家現(xiàn)在已經(jīng)知道最終的解決方案了,通過jquery + wresize插件能夠做到兼容所有瀏覽器的寬高自適應(yīng)。

    原文:http://www.cnblogs.com/keepfool/archive/2011/12/26/2302186.html


    當(dāng)前文章:Web布局中的幾種寬高自適應(yīng)
    鏈接URL:http://m.5511xx.com/article/dpgoejp.html

    其他資訊