2010-11-07 4 views
3

У меня есть следующий HTML:Почему эти DIVs не отображаются на одной строке?

<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?

Примечание: вы можете увидеть живую демонстрацию и поиграйте с кодом здесь: http://jsfiddle.net/UDb4D/

ответ

7

Это потому, что ваш #center_s DIV расширяется до ширины остающейся линии. Если вы положите #right_side выше #center_s в HTML-порядке, все будет хорошо.

Смотрите здесь:

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

+0

Спасибо - не только для нахождения проблемы, но объяснить, почему это происходит. –

+0

@George Edison, приветствуется: -] – treeface

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

3

Поскольку центр не имеет поплавка и правые всплывающие элементы должны появиться первым. Добавить 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

+0

@Archonix - tru dat. он должен сказать «или». –

Смежные вопросы