2015-05-19 98 views
-1

能喜歡做的屏幕布局的大致是這樣的:CSS塊佈局全屏

enter image description here

整個瀏覽器窗口應填充爲白色區塊「已知的」高度只有兩個元素頂部,左側和底部,左側(對於兩個標籤,因此已知將相對於字體)。一切應與瀏覽器窗口縮放,即左邊欄是15%寬,右邊85%,等等。

作爲一個C++開發者我的直覺這裏是處理在Javascript中的事件和對DOM的代碼,但我」我覺得這對CSS來說相對來說不重要。

任何人都可以幫助我嗎?

+0

什麼樣的代碼,你試過嗎? – Andrew

回答

1

我試圖快速重現:

* { 
 
    box-sizing: border-box; 
 
} 
 
html, 
 
body, 
 
.wrapper { 
 
    width: 100%; 
 
    height: 100%; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 
.left, 
 
.right { 
 
    float: left; 
 
} 
 
.left { 
 
    position: relative; 
 
    width: 15%; 
 
    height: 100%; 
 
} 
 
.left .label-top, 
 
.left .label-bottom { 
 
    position: absolute; 
 
    width: 100%; 
 
    background-color: #fff; 
 
} 
 
.left .label-top { 
 
    top: 0; 
 
    left: 0; 
 
} 
 
.left .label-bottom { 
 
    bottom: 0; 
 
    left: 0; 
 
} 
 
.left .content, 
 
.left .top, 
 
.left .bottom { 
 
    border: 1px solid white; 
 
} 
 
.left .top, 
 
.left .bottom { 
 
    height: 5%; 
 
    background-color: gray; 
 
} 
 
.left .content { 
 
    height: 30%; 
 
    background-color: #a09898; 
 
} 
 
.right { 
 
    width: 85%; 
 
    height: 100%; 
 
    background-color: gray; 
 
} 
 
.right::after { 
 
    content: ''; 
 
    display: table; 
 
    clear: both; 
 
}
<div class="wrapper"> 
 
    <div class="left"> 
 
    <div class="label-top">Label</div> 
 
    <div class="top"></div> 
 
    <div class="content"></div> 
 
    <div class="content"></div> 
 
    <div class="content"></div> 
 
    <div class="bottom"></div> 
 
    <div class="label-bottom">Label</div> 
 
    </div> 
 
    <div class="right"></div> 
 
</div>

+1

謝謝,我編輯:) –

+0

這很好,但在我的iPad上還不夠高。即您必須向下輕掃一下屏幕才能看到「底部」和「標籤底部」。在我個人電腦上的Chrome瀏覽器中,雖然沒有問題。編輯:不,似乎再次工作。 Safari是多麼神祕。 – Robinson

1

對於佈局,請考慮使用定位和顯示屬性。有很多方法可以創建動態結構,確保響應。

有關詳細信息,請參閱this question and answer瞭解創建網站時可能會考慮的一些「常規」規則。

.left { 
 
    position: absolute; 
 
    lefT: 0; 
 
    top: 0; 
 
    height: 100%; 
 
    width: 15%; 
 
    background: lightgray; 
 
} 
 
.right { 
 
    position: absolute; 
 
    left: 15%; 
 
    top: 0; 
 
    height: 100%; 
 
    width: 85%; 
 
    background: dimgray; 
 
} 
 
.left .fixedBlock { 
 
    margin: 0; 
 
    padding: 0; 
 
    height: 50px; 
 
    background: blue; 
 
} 
 
.left .filledDiv { 
 
    height: calc(100% - 100px); 
 
    background: tomato; 
 
} 
 
.left .filledDiv .third { 
 
    height: 33.33%; 
 
    background: rgba(0, 0, 0, 0.2); 
 
} 
 
.left .filledDiv .third:nth-child(2) { 
 
    background: rgba(0, 0, 0, 0.4); 
 
}
<div class="left"> 
 
    <div class="fixedBlock">fixed height</div> 
 
    <div class="filledDiv"> 
 
    <div class="third">dynamic height</div> 
 
    <div class="third">with children</div> 
 
    <div class="third">a third of its heigth</div> 
 
    </div> 
 
    <div class="fixedBlock">also fixed height</div> 
 

 
</div> 
 
<div class="right">right side - open me in full screen!</div>

+0

這是偉大的jb。至少這是我可以合作的東西。 – Robinson

+0

我希望你能@羅賓遜。幾乎任何你'風格'可以/應該在CSS(高度/顯示/定位/形狀)中完成。對於文本/輸入處理的操縱 - 這是JS和代碼背後的地方:) – jbutler483

1

所以,有點基礎,你就可以開始在上面工作。

爲固定高度,我用vh,它真的取決於你想支持哪些瀏覽器:vh support

否則,您可以使用父母或身體的height: 100%

.left-bar { 
 
    width: 15%; 
 
    background-color: red; 
 
    float: left; 
 
    height: 100vh; 
 
    border-right: 5px solid black; 
 
} 
 

 
.right-window { 
 
    width: 85%; 
 
    float: left; 
 
    height: 100vh; 
 
    background-color: pink; 
 
    
 
} 
 
* { 
 
    -webkit-box-sizing: border-box; 
 
    -moz-box-sizing: border-box; 
 
    box-sizing: border-box; 
 
}
<div class="left-bar"> 
 
</div> 
 
<div class="right-window"> 
 
</div>

我想這是你想要的。但不知道。

這實現了完整的瀏覽器填充。

如果您發現寬度有calc()從邊框中移除5px,如果您願意,可以將其刪除並僅放置15%

我想你只是想要一個基礎結構,這是一個非常簡單的結構,你必須愛我的顏色選擇技巧。

編輯:替換calc()加入box-sizing: border-box感謝@Paulie_D評論。

+0

vh,不像%(我一直在嘗試和失敗),大概意思是「垂直高度」。這是可見窗口的垂直高度? – Robinson

+0

它是'視口高度',非常自我解釋:) –

+0

作爲初學者,CSS中的「自我解釋」並不多。 – Robinson