2009-06-05 58 views
4

解決!完成CSS和HTML在 底部。如何根據瀏覽器大小創建DIV?


好了,所以這裏的情況。我有一個側面,頂部和底部div的頁面。側邊的div在225px左側。頂部的div是25px,底部的div是20px。我想要的是它們中間的一個div,所以它根據訪問者瀏覽器大小調整(並且可滾動)。 我有作品,但不會滾動,也不是正確的寬度,所以我必須將所有內容放在中間。它只是使用瀏覽器的寬度,但稍微有一點餘量,所以它實際上懸掛在邊欄下方。

A quick sketch of how it's setup.

任何想法?

關鍵: 菜單是頂部。 bottom_menu是底部菜單。內容是我需要幫助的部分,位於中心。側邊欄是側面。

CSS:

@charset "UTF-8"; 
/* CSS Document */ 

html { 
    height:100%; 
} 

img 
{ 
    border-style: none; 
    color: #FFF; 
    text-align: center; 
} 

body { 
    height:100%; 
    width:100%; 
    margin:0px; 
    padding:0px; 
    background-color:#000; 
} 

.sidebar { 
    background-image:url(../images/sidebar/background.png); 
    background-repeat:repeat-y; 
    width:225px; 
    min-height:100%; 
    position:fixed; 
    top:25px; 
    left:0px; 
    overflow:hidden; 
    padding-left:5px; 
    padding-top:5px; 
    font: 12px Helvetica, Arial, Sans-Serif; 
    color: #666; 
    z-index:1; 
    } 

.menu { 
    background-image:url(../images/top_menu/background.png); 
    background-repeat:repeat-x; 
    width:100%; 
    height:25px; 
    position:fixed; 
    top:0px; 
    left:0px; 
    overflow:hidden; 
    padding-left:5px; 
} 

.content { 
    width:100%; 
    top:25px; 
    height:100%; 
    overflow:hidden; 
    position:fixed; 
    padding-left:5px; 
    padding-top:5px; 
    background-color:#FFF; 
    margin-left:112px; 
    font: 14px Helvetica, Arial, Sans-Serif; 
} 

.bottom_menu { 
    background-image:url(../images/bottom_menu/background.png); 
    background-repeat:repeat-x; 
    width:100%; 
    height:20px; 
    position:fixed; 
    bottom:0px; 
    left:0px; 
    overflow:hidden; 
    padding-left:5px; 
    z-index:2; 
    font: 12px Helvetica, Arial, Sans-Serif; 
} 

HTML(DIV佈局):

<body> 
<div class="sidebar">CONTENT IN SIDEBAR</div> 
<div class="menu">CONTENT IN TOP MENU</div> 
<div class="bottom_menu">CONTENT IN BOTTOM MENU</div> 
<div class="content">CONTENT IN CONTENT</div> 
</body> 

成品CSS

@charset "UTF-8"; 
/* CSS Document */ 

img { 
    border-style: none; 
    color: #FFF; 
    text-align: center; 
} 
body { 
    background-color:#000; 
    margin:0; 
    padding:0; 
    border:0;   /* This removes the border around the viewport in old versions of IE */ 
    width:100%; 
    height:100%; 
} 
.sidebar { 
    background-image:url(../images/sidebar/background.png); 
    background-repeat:repeat-y; 
    font: 12px Helvetica, Arial, Sans-Serif; 
    color: #666; 
    z-index:1; 
    min-height:100%; 
} 
.menu { 
    background-image:url(../images/top_menu/background.png); 
    background-repeat:repeat-x; 
    height:25px; 
    clear:both; 
    float:left; 
    width:100%; 
    position:fixed; 
    top:0px; 
    z-index:5; 
    background-color:#000; 
} 
.bottom_menu { 
    background-image:url(../images/bottom_menu/background.png); 
    background-repeat:repeat-x; 
    height:20px; 
    z-index:2; 
    font: 12px Helvetica, Arial, Sans-Serif; 
    clear:both; 
    float:left; 
    width:100%; 
    position:fixed; 
    bottom:0px; 
} 
.colmask { 
    position:relative;  /* This fixes the IE7 overflow hidden bug and stops the layout jumping out of place */ 
    clear:both; 
    float:left; 
    width:100%; /* width of whole page */ 
    overflow:hidden; /* This chops off any overhanging divs */ 
    min-height:100%; 
} 
.sidebar .colright { 
    float:left; 
    width:200%; 
    position:relative; 
    left:225px; 
    background:#fff; 
} 
.sidebar .col1wrap { 
    float:right; 
    width:50%; 
    position:relative; 
    right:225px; 
} 
.sidebar .col1 { 
    margin:30px 15px 0 225px; /* TOP/UNKNOWN/UNKNOWN/RIGHT */ 
    position:relative; 
    right:100%; 
    overflow:hidden; 
} 
.sidebar .col2 { 
    float:left; 
    width:225px; 
    position:fixed; 
    top:0px; 
    left:0px; 
    margin-top:25px; 
    margin-left:5px; 
    right:225px; 
} 
.clear { 
    clear: both; 
    height: 1px; 
    overflow: hidden; 
} 

成品HTML:

<body> 
<div class="menu">HEADER CONTENT</div> 
<div class="colmask sidebar"> 
    <div class="colright"> 
     <div class="col1wrap"> 
      <div class="col1"> 
       CONTENT 
      </div> 
     </div> 
     <div class="col2"> 
      LEFT SIDEBAR CONTENT 
     </div> 
    </div> 
</div> 
<div class="bottom_menu">FOOTER CONTENT</div> 
<div class="clear"></div> 
</body> 

回答

2
+0

謝謝你的鏈接。這工作很好,有相當多的調整。 – Devin 2009-06-06 00:19:48

+0

你有沒有機會發布你最終的結果?我曾經嘗試過不同程度的成功,但從未完全滿意我提出的解決方案。 – Loktar 2009-06-06 00:25:10

+1

已完成上面的內容。 – Devin 2009-06-06 01:47:50

2

CSS處理不好 - 儘管它可以用相對方便地完成。

問題是div的只是自我意識 - 他們不能做「看我相鄰的兄弟,讓我同樣的高度」

有使用大填充和切緣陰性的方式,儘管他們在失敗一些東西

  • 不能在頁面定位鏈接中使用。例如page.html#section-b
  • 可能無法在舊版瀏覽器中正確打印。
  • 無法在外部顯示元素 - 因爲它在包裝容器上設置了display: hidden

話雖如此,這是可能的,我最近做了幾次。弗蘭克建議in his answer的網站是我去學習並正確使用它的地方。我建議檢查該頁面的源代碼和CSS。 Firebug可以在這裏幫助很大。

當CSS屬性display: table和它的朋友變得廣泛支持(IE8剛剛加入這個)時,做這種事情會容易得多。

0

有這樣使用相當少的標記(包裝元素和其他多餘的,曖昧的標籤)的另一種方式:

http://jsfiddle.net/zBLbt/23/

這將有可能需稍加修改是完全跨瀏覽器兼容,但更簡單的標記的好處超過了可能的增加測試。

編輯:修改後的代碼更具可讀性。

相關問題