Объединение обернутых элементов

У меня есть несколько элементов в HTML, которые я хочу сгруппировать, когда они завертываются. Я думаю, что ответ кроется с некоторыми CSS (или, возможно, даже с JavaScript), но я не уверен. Например, у меня есть несколько элементов, описанных следующим образом:

<label A><input A><label B><input B><label C><input C>

Что происходит, пользователи иногда изменяют размер окна браузера, и в итоге мы получаем следующее:

<label A><input A><label B>
<input B><label C><input C>

В приведенном выше примере вход B не находится рядом с его элементом ввода. Есть ли способ сгруппировать ярлык и ввод, чтобы они обертывались вместе? Я пробовал divs и помещал элементы вместе в таблицу с "nowrap" со смешанными результатами. Я не против переноса строк, мне просто нужно сохранить ярлык и элемент ввода вместе.

Ответы

Ответ 1

Возможно, стоит также взглянуть на установку родительских divs вокруг каждой пары, которую вы хотите сохранить вместе - я знаю, что вы сказали, что попробовали это, но также дали им фиксированную ширину и отображение: inline; и он должен работать

ALSOO включает float: left/right; (выберите только один). Таким образом, если окно браузера слишком мало, чтобы показать их все бок о бок, вместо этого он возьмет конечную пару и выведет ее на следующую строку, но должен держите все элементы вместе и бок о бок.

Ответ 2

Попробуйте что-то вроде этого:

<label>First Name:
    <input type="text">
</label>
<label>Last Name:
    <input type="text">
</label>

и установите

label {
    display: inline-block;
}

Демо http://dabblet.com/gist/3145028

Альтернатива: оберните оба <label> и <input> в <div> с помощью display: inline-block

Ответ 3

Простым ответом является перенос элементов в другой элемент с дисплеем: встроенный блок как стиль. Так что...

<span class='wrapper'>
  <span class='left-side'></span>
  <span class='right-side'></span>
</span>

и

.wrapper {
  display: inline-block;
}

Ответ 4

Поместите все эти элементы в div следующим образом:

<div style="white-space: nowrap">
  ...
</div>

Ответ 5

Вы можете поместить каждую метку/группу ввода в <span>, а затем установить css в display:inline. Я уверен, что это сдержит его. В зависимости от вашего макета сайта и предыдущего CSS вам может потребоваться настроить css.

Ответ 6

Поскольку вы сказали, что это было в таблице, вот, вероятно, вы искали: http://jsfiddle.net/DX9G7/

HTML:

<table border="0" cellspacing="0" cellpadding="0">
    <colgroup>
        <col width="30%" />
        <col width="30%" />
        <col width="40%" />
    </colgroup>
    <tr>
        <td>
            <div class="form-row">
                <label>A</label>
                <input type="text" />
            </div>
            <div class="form-row">
                <label>B</label>
                <input type="text" />
            </div>
            <div class="form-row">
                <label>C</label>
                <input type="text" />
            </div>
        </td>
    </tr>
</table>​

Теперь вы можете изменить свой css так, как вы хотите.