2011-04-01 58 views
0

enter image description here如何用html + css做這樣的佈局?

框是一些對象(按鈕,標籤,textarea)。格林的大小是動態的。特別是藍盒子底部有問題。

+2

向我們展示您擁有的代碼。 – tster 2011-04-01 23:35:39

+0

可能會更具體嗎? – 2011-04-01 23:36:27

+0

@ thirty:fair'nuff – 2011-04-01 23:48:02

回答

0

Here's my solution →

這裏的主要問題是,左欄不知道右欄有多高。

您可以將它們放在父項中(這將包裝兩列),但左側列不會知道父級的高度,因爲如果子元素的子元素只能展開到父元素的高度父元素的高度是明確設置的。

另外,這裏有兩個截然不同的列,所以我想嘗試將它們儘可能接近它們顯示的方式。將左欄放在右欄(綠框)內並不能準確地表示這是如何構成的。

HTML:

<div id="container"> 
    <div id="labelDiv"> 
     <label>I'm a label.</label> 
     <p>Text area, whatevs.</p> 
    </div> 

    <button>Hello</button> 

    <div id="greenBox"> 
     <p>Green box text.</p> 
    </div> 
</div> 

CSS:

#container { 
    width: 610px; 
    overflow: hidden; 
    position: relative; 
} 

#labelDiv { 
    width: 300px; 
    float: left; 
} 

button { 
    position: absolute; 
    bottom: 0; 
    left: 0; 
} 

#greenBox { 
    width: 310px; 
    float: left; 
} 

所以左邊(除按鈕以外)一切都向左浮動,並且還向左浮動的綠色方塊。目前爲止,但按鈕需要知道整個盒子有多高,以便它可以將其自身附着到底部。因此,我們在外容器上設置overflowhidden,這樣它就可以環繞浮動元素,並將按鈕完全定位到其底部,使其與最高內部元素(綠色框​​)的底部完全對齊。

我還建議在#labelDiv上設置一些margin-bottom,這樣它就不會遮住按鈕。

+0

haa。是的,這正是我的意思。順便說一句。我可以在哪裏閱讀有關CSS文檔的HTML大小計算流程? – Clare 2011-04-02 02:30:01

+0

我推薦學習關於CSS浮動。 [NetTuts](http://www.nettuts.com)是一個很好的資源。但總的來說,我會避免需要像這樣的技巧的佈局。我很好奇這個應用程序在這裏。 – clem 2011-04-02 18:54:19

+0

只是一個形式,因爲這是我現在寫的:) – Clare 2011-04-09 09:02:05

0

See example of the following →

只要指定了藍色和紅色的寬度,你可以使用relativeabsolute位置如下:

<div id="green"> 
    <label id="red">Label</label> 
    <button id="blue">Button</button> 
</div> 

#green { 
    position:relative; 
} 
#red { 
    width:100px; 
    position:absolute; left:-110px; top:0px; 
} 
#blue { 
    width:100px; 
    position:absolute; left:-110px; bottom:0px; 
} 
+0

是的,它們可以被分割。但如果他們不呢? – Clare 2011-04-02 00:05:43

+0

然後,你必須猜測'left'的值 – mVChr 2011-04-02 02:20:43

2

將持有人繞過它,它會採取高度從'綠色',並且只給予它們絕對值和最低值0,那麼你給予元素的寬度無關緊要。

編輯:希望這對你有用,漂浮的元素,綠色的一個到右邊,剩下的其餘部分。

<div id="divHolder"> 
<label id="red">Label</label> 
<button id="blue">Button</button> 
<div id="green"> 
    a 
    </div> 
    <br class="clearFloat" /> 
</div> 

#divHolder { 
    width:300px; 
    position:relative; 

} 
#green { 
    height:300px; 
    background-color: green; 
    float:right; 
} 
#red { 
    background-color:red; 
    float:left; 
    position:absolute; 
} 
#blue { 
    background-color: blue; 
    bottom: 0; 
    position:absolute; 
} 
.clearFloat { 
clear:both; 
} 

看看這裏: http://jsfiddle.net/YA9yD/32/

+0

是的。但它與mVChrs'相同。如果我不想放置綠色靜態的左邊緣怎麼辦? – Clare 2011-04-02 01:52:35

+0

我更新了小提琴,這是有點不同,可能不是正確的方式,但嘗試它:)似乎做你想做什麼,或至少我認爲你想要的,il更新回答 – Lauw 2011-04-02 09:58:08