2013-08-24 71 views
1

我在对齐导航栏内的某些元素时遇到问题。在具有浮动元素的元素内部居中放置一个非浮动元素

下面是对的jsfiddle一个例子:http://jsfiddle.net/flobar/b7nzR/

这里的HTML:

<div id="nav"> 
    <div id="menu">Menu</div> 
    <div id="logo">Logo</div> 
    <div id="settings">Settings</div> 
</div> 

这里的CSS:

#nav { 
    height: 60px; 
    border: 1px solid #ccc;  
} 

#menu { 
    width: 70px; 
    height: 30px; 
    margin-top: 15px; 
    float: left; 
    background: #ccc; 
} 

#logo { 
    width: 200px; 
    height: 30px; 
    margin: 15px auto 0 auto; 
    background: #ccc; 
} 

#settings { 
    width: 70px; 
    height: 30px; 
    margin-top: 15px; 
    float: right; 
    background: #ccc; 
} 

的问题是,最右边块正在被向下推中央块,但我不知道为什么。

任何人都可以帮忙。

+0

为什么哟你用'float:right'?当你想要div在一行时,使用'float:left'全部 – 23tux

+0

但是我需要菜单div在左边的logo div在中心和设置div在右边。 – user2575265

回答

1

我将解释这是怎么回事那里,你有你的第一个div设置为float: left;这将很好地浮动,现在你的第二个div不浮动要么leftright所以它采取整个可用水平空间导致第三个div呈现在下面。

Demo

#logo { 
    width: 200px; 
    height: 30px; 
    margin: 15px auto 0 auto; 
    background: #ccc; 
    float: left; 
    margin-left: 120px; 
} 

现在知道的事实,要居中对齐的#logo所以在这种情况下,让你的#logodivposition: absolute;

#nav { 
    height: 60px; 
    border: 1px solid #ccc; 
    position: relative; /* Be sure you use this else your div will fly out in the wild */ 
} 

#logo { 
    width: 200px; 
    height: 30px; 
    margin: 15px auto 0 auto; 
    background: #ccc; 
    position: absolute; /* Takes your element out of the flow*/ 
    left: 50%; /* 50% from the left */ 
    margin-left: -100px; /* 1/2 of total width to ensure that it's exactly centered */ 
} 

Demo 2

+0

太棒了,我正在考虑将它们全部定位绝对,但我想你的版本只需要我改变徽标的样式。非常感谢 – user2575265

+0

@ user2575265是的,你也可以做到这一点,但不要忘记清理漂浮物,因为你有漂浮的元素,并且如果你是绝对的,不要忘记在父亲上使用'relative'),并且没关系 ... –

0

您还必须浮动#logo;

#logo { 
    float:left; 
    width: 200px; 
    height: 30px; 
    margin: 15px auto 0 auto; 
    background: #ccc; 
} 

example

+0

谢谢,但徽标需要与中心对齐。 – user2575265

0
#nav { 
     height: 60px; 
     border: 1px solid #ccc; 
display:table; 
    } 

    #menu { 
     width: 70px; 
     height: 30px; 
     margin-top: 15px; 
     float: left; 
     background: #ccc; 
display: inline-table; 
    } 

    #logo { 
     width: 200px; 
     height: 30px; 
     margin: 15px auto 0 auto; 
     background: #ccc; 
display: inline-table; 
    } 

    #settings { 
     width: 70px; 
     height: 30px; 
     margin-top: 15px; 
     float: right; 
     background: #ccc; 
     display:inline-table 
    }