2010-11-07 68 views
3

我有以下HTML:這些DIV如何不顯示在同一行上?

<div id="root"> 
    <div id="left_side">LEFT</div> 
    <div id="center_s">CENTER</div> 
    <div id="right_side">RIGHT</div> 
</div> 

...和CSS:

#root { 
    background-color: #eee; 
} 

#left_side { 
    float: left; 
} 

#center_s { 
    margin-left: auto; 
    margin-right: auto; 
    width: 65px; 
    background-color: #ccc; 
} 

#right_side { 
    float: right; 
} 

不過,我得到以下幾點:

Screenshot

右邊的DIV是在另一行,這是不是我想要的。我怎樣才能讓它和其他DIV保持一致?

注:你可以看到現場演示和玩這裏的代碼:http://jsfiddle.net/UDb4D/

回答

7

這是因爲你的#center_s格擴展到剩餘的線的寬度。如果您在HTML順序中將#right_side放在#center_s以上,它就可以正常工作。

在這裏看到:

http://jsfiddle.net/UDb4D/2/

+0

謝謝 - 不僅是發現問題,但解釋爲什麼它發生。 – 2010-11-07 01:34:57

+0

@George Edison,不客氣: - ] – treeface 2010-11-07 01:36:19

0

我很快就砍死這件事。請記住,我是一名開發人員,而不是網頁設計師。

<div id="root" align="center"> 
    <div id="right_side">RIGHT</div> 
    <div id="center_s">CENTER</div> 
    <div id="left_side">LEFT</div> 
</div> 

而且......

#root { 
    background-color: #eee; 
} 

#left_side { 
    display: inline; 
    float: left; 
} 

#center_s { 
    display: inline; 
    margin-left: auto; 
    margin-right: auto; 
    width: 65px; 
    background-color: #ccc; 
} 

#right_side { 
    display: inline; 
    float: right; 
} 
+1

這並不完全相同,因爲'margin:auto'在內聯元素上的工作方式不同。看到我的方法如下。 – treeface 2010-11-07 01:35:17

3

因爲中央沒有float和右浮動元素必須首先出現。添加float: left;#center_s或移動#right_side DIV之前,所以它看起來像這樣:

#root { 
    background-color: #eee; 
} 

#left_side { 
    float: left; 
} 

#center_s { 
    margin-left: auto; 
    margin-right: auto; 
    width: 65px; 
    background-color: #ccc; 
    float: left; 
} 

#right_side { 
    float: right; 
} 

<div id="root"> 
    <div id="right_side">RIGHT</div> 
    <div id="left_side">LEFT</div> 
    <div id="center_s">CENTER</div>  
</div> 
+1

如果'#right_side'在'#center_s'之前,則不需要浮動##center_s' – DaiYoukai 2010-11-07 01:36:37

+0

@Archonix - tru dat。它應該說'或'。 – 2010-11-07 02:48:46