2014-11-01 136 views
0

我有以下的HTML標記:如何使浮動元素達到100%的高度?

.container { 
 
    border: 1px solid green; 
 
} 
 
.right { 
 
    border: 1px solid #000; 
 
    float: right; 
 
    width: 40px; 
 
} 
 
.left { 
 
    border: 1px solid red; 
 
    overflow: hidden; 
 
}
<div class="container"> 
 
    <div class="right">Right</div> 
 
    <div class="left-container"> 
 
    <div class="left"> 
 
     Left fluid 
 
     <br/> 
 
     multiple rows 
 
    </div> 
 
    </div> 
 
</div>

正如你可以看到右擋長相醜陋。我怎樣才能使元件流體高度達到100%?

+0

這個問題已經被問了好幾次。你有沒有檢查舊的? – 2014-11-01 20:12:20

回答

1

添加規則height:100%右格,並刪除float:right。我將其更改爲position:absolute,以便您不需要容器的高度。

.container { 
 
    border: 1px solid green; 
 
    position: relative; 
 
    width: 100%; 
 
} 
 
.right { 
 
    border: 1px solid #000; 
 
    width: 40px; 
 
    height: 100%; 
 
    position: absolute; 
 
    right: 0; 
 
} 
 
.left { 
 
    display: block; 
 
    border: 1px solid red; 
 
    overflow: hidden; 
 
    margin-right:40px; 
 
}
<br><br><div class="container"> 
 
    <div class="right">Right</div> 
 
    <div class="left-container"> 
 
    <div class="left"> 
 
     Left fluid 
 
     multiple rows a really long sentence a really long sentence a really long sentence a really long sentence a really long sentence a really long sentence. 
 
    </div> 
 
    </div> 
 
</div>

+0

謝謝得到了答覆。是否可以不設置'.container'的高度? – Erik 2014-11-01 20:36:29

+0

它當然是!使用'position:absolute',而不是'float:right'。然後你可以添加'right:0',你不需要'.container'的高度!檢查我的編輯。 。 。 – 2014-11-01 20:45:44

+0

我試過這個解決方案,它對我沒有用處,因爲當您將'position:absolute'設置爲right block時,您將它從流動中移出並且綠色容器重疊 – Erik 2014-11-01 20:56:43

0

加上明確:兩者;浮動元素後。

<div class="right"></div> 
<div style="clear: both"></div> 
+0

你能編輯我的例子請 – Erik 2014-11-01 20:24:27

+0

它不適合我 – Erik 2014-11-01 20:36:51

1

如果您的應用程序將在一個現代瀏覽器中運行,然後使用Flexbox將是一個很好的路要走:http://jsfiddle.net/2hn9zgog/

HTML:

<div class="container"> 
    <div class="right">Right</div> 
    <div class="left"> 
     Left fluid 
     <br/>multiple rows 
    </div> 
</div> 

CSS:

.container { 
    display: flex; 
    width: 100%; 
    outline: 1px dotted gray; 
} 

.right { 
    order: 2; 
    flex: 0 0 auto; 
    border: 1px solid green; 
} 

.left { 
    flex: 1 0 auto; 
    border: 1px solid red; 
} 
+0

感謝您的解決方案,但我不能使用'flex'因爲它支持不好的瀏覽器 – Erik 2014-11-01 20:57:32

0

添加

html, body{ 
height: 100%; 
min-height: 100%; 
} 

.your-container{ 
height: 100%; 
} 
+0

謝謝,我也會試試 – Erik 2014-11-03 08:54:41

+0

我的錯誤,請嘗試閱讀: http://webdesign.tutsplus.com/tutorials/快速尖端解決最等高列-難題 - CMS-20403 – 2014-11-03 08:57:22