2013-04-23 2 views
0

У меня есть три divs внутри другого div.Как я могу вертикально выровнять мой div внутри другого div и держать их бок о бок?

<div id="parentDiv" style="float:right;"> 
    <div id="childDiv1" style="float:left;"> 
     <b>Text1</b> 
    </div> 
    <div id="childDiv2" style="float:left;"> 
     <img src="smiley.gif" alt="Smiley face" height="42" width="42"> 
    </div> 
    <div id="childDiv3" style="float:left;"> 
     <input type='checkbox' /> 
    </div> 
<div> 

Мне нужно, чтобы они появились бок о бок, так что я поставил их float:left.

Беда в том, что они появляются, как это ...

Incorrect layout image

... с текстом вертикально сверху. Мне нужно, чтобы это было посередине.

N.B. Я нашел сообщение о very similar issue, но кажется, что плавающий заставляет его потерпеть неудачу.

+0

Решение, с которым вы связаны, работает отлично. http://jsfiddle.net/Bb4Ye/1/ – JJJ

+0

@Juhana. Нет, это не http://jsfiddle.net/7Fewx/617/ – Urbycoz

+0

[Похоже на меня] (http://jsfiddle.net/7Fewx/619/) – JJJ

ответ

1

Если вам действительно нужно DIVs, вы можете использовать «дисплей: встроенный;» вместо float. А затем вертикально-выровненный: средний; чтобы сделать элементы в центре.

<div id="parentDiv" style=" "> 
     <div id="childDiv1" style="display: inline-block; vertical-align: middle;"> 
      <b>Text1</b> 
     </div> 
     <div id="childDiv2" style="display: inline-block; vertical-align: middle;"> 
      <img src="smiley.gif" alt="Smiley face" height="42" width="42"> 
     </div> 
     <div id="childDiv3" style="display: inline-block; vertical-align: middle;"> 
      <input type='checkbox' /> 
     </div> 
    </div> 

Надеюсь, что это поможет.

+0

Да, мне действительно нужно использовать DIV. И это решение идеально. Благодарю. – Urbycoz

0

Для того, чтобы они казались бок о бок, вам не нужно их плавать, просто установите их такими, какими они есть. Что касается изображения, просто добавьте для него свойство CSS: vertical-align:middle, и это должно выровнять его в середине текста.

+0

Хорошо, если это все, что вам нужно на вашей странице. Если это не так, и пространство ограничено, они будут завернуты. – Urbycoz

+0

Они тоже будут обертываться плавающей точкой. – casraf

-1

«высота линии» всех элементов внутри всех «DIV» должен быть равен

+0

Могут ли люди объяснить, почему это пропущено, пожалуйста. – Urbycoz

+0

Урбикоз, объясните, пожалуйста, ваш проголосовавший. – user2185350

1

Вы можете добиться того, что легко с таблицами

 <table> 
      <tr> 
       <td> <b>Text1</b></td> 
       <td><img src="smiley.gif" alt="Smiley face" height="42" width="42"></td> 
       <td><input type='checkbox' /></td> 
      </tr> 
     </table> 

Или вам действительно нужно придерживаться дивы? Надеюсь это поможет. :)

+0

Да. Проблема в том, что эти divs уже находятся в таблице. И вложенные таблицы приходят со своими проблемами. – Urbycoz

+0

Я вижу. Итак, как насчет замены float дисплеем: inline? –

+0

Да, хороший звонок. Я все равно поддерживаю ваш ответ, так как он работает. – Urbycoz

1

Используйте следующий код: (я советую вам избегать таблицы как можно больше)

<div id="parentDiv" style="float:right;"> 
    <div id="childDiv1" style="float:left; line-height: 42px;"> 
     <b>Text1</b> 
    </div> 
    <div id="childDiv2" style="float:left;"> 
     <img src="smiley.gif" alt="Smiley face" height="42" width="42"> 
    </div> 
    <div id="childDiv3" style="float:left; line-height: 42px;"> 
     <input type='checkbox' /> 
    </div> 
<div> 
+0

Это работает и для меня. – Urbycoz

+0

Хорошо, это здорово – user2255273

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