2014-03-27 56 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

这个解决方案的唯一问题是,通过隐藏溢出也会隐藏其中的内容 –