2014-03-27 57 views
0

我知道它是一個noob和重複的問題,但我需要一些答案。並排放置div的正確方法

我認爲:1格寬度:100%和2格內寬度:50%each.WHy它不適合?

HTML:

<div id="top-menu"> 
    <div id="logo"></div>    
    <div id="menu-top"></div> 
</div> 

CSS:

#top-menu{ 
    width: 100%; 
    height: 100px; 
    position: relative; 
    border: 1px solid black; 
    background-color: #A3238E; 
} 

#logo{ 
    width: 50%; 
    height: 100px; 
    position: relative; 
    display: inline-block; 
    background: orange; 
} 

#menu-top{ 
    width: 50%; 
    height: 100px; 
    position: relative; 
    display: inline-block; 
    background: green; 
    left: 0; 
} 

我得到的2 div之間出現一點空白,但我不知道如何刪除它... 另外,如果我用寬度設置第二個:49%,它工作...但有50%它沒有,我猜這是因爲他們之間的小空白。

如何使它工作?

+0

你是什麼意思「它不適合」? – TylerH

+0

它並不保持並排,它降到第一格以下; s – PlayHardGoPro

+0

嘗試爲兩個div設置邊距和填充爲0 – dmikester1

回答

1

,你需要使用以下命令:

#top-menu{ 
    width: 100%; 
    height: 100px; 
    position: relative; 
    border: 1px solid black; 
    background-color: #A3238E; 
} 

#logo{ 
    width: 50%; 
    float:left; 
    height: 100px; 
    position: relative; 
    display: inline-block; 
    background: orange; 
} 

#menu-top{ 
    width: 49%; 
    float:left; 
    height: 100px; 
    position: relative; 
    display: inline-block; 
    background: green; 
    left: 0; 
} 

發現我加float:left;到您並排想邊的兩個div。然後在你的HTML中使用如下:

<div id="top-menu"> 
    <div id="logo"></div>    
    <div id="menu-top"></div> 
    <div style="clear:both;"></div> 
</div> 

通知我加<div style="clear:both;"></div>這將清除float:left;。如果您願意,可以使用<div style="clear:left;"></div>來做同樣的事情。

+0

談到「不錯的做法」,這是一個正確的做法嗎? – PlayHardGoPro

+0

@PlayHardGoPro並不特別;它使用內嵌式樣式。這被認爲是不好的做法。 CSS應該放入.css文件中。 – TylerH

+0

我上面的答案解決了無內聯樣式的浮動清除問題。 –

-1
#top-menu{ 
    width: 100%; 
    height: 100px; 
    position: relative; 
    border: 1px solid black; 
    background-color: #A3238E; 
    display: table; 
} 

#logo{ 
    width: 50%; 
    height: 100px; 
    position: relative; 
    display: table-cell; 
    background: orange; 
} 

#menu-top{ 
    width: 50%; 
    height: 100px; 
    position: relative; 
    display: table-cell; 
    background: green; 
} 
+0

這種顯示器,表格和表格單元格。這是一個好習慣嗎? – PlayHardGoPro

+0

@PlayHardGoPro:當然,它工作完美!不是嗎? –

+0

在使用此之前,我會確保它在您需要支持的瀏覽器中正常工作。這支持到IE8。如果屏幕閱讀器和其他輔助功能工具會將CSS顯示錶作爲表格讀取,或者在語義上以標記的形式讀取,那麼也存在一些問題。這不是我過去做過的一種方式,所以我不積極,但值得深入研究。 – Nicknameless

0

問題是因爲inline-blockhttp://css-tricks.com/fighting-the-space-between-inline-block-elements/

更換display: inline-block;float: left;

..然後你可以添加overflow: hidden到#頂部菜單來清除浮動。

UPDATE:

您可能需要從#頂級菜單中刪除height: 100px使用overflow: hidden clearfix技術。

+0

工作完美!如果我將溢出添加到#頂級菜單,我不需要創建另一個div來使用clear:兩者?這是一個正確的方法嗎?謝謝! – PlayHardGoPro

+0

絕對(或者如果其他因素阻止使用'overflow:hidden',則可以使用'clearfix'類)。 –

+0

這個解決方案的唯一問題是,通過隱藏溢出也會隱藏其中的內容 –