Одна проблема с таблицами - ошибка space . Если вы не используете таблицы, вы можете написать свою метку и ввести следующее:
<label for="foo">Blah <input id="foo" type="text"/></label>
, который должным образом инкапсулирует ввод и метку.
В таблице, с другой стороны, вы разделяете их:
<td><label for="foo">Blah</label></td><td><input id="foo" type="text"/></td>
Это означает, что область между и не реагирует на щелчки мыши.
Это не так уж плохо с простыми полями, это действительно раздражает с помощью радиокнопок и флажков (или, может быть, я просто очень требователен).
Теперь, чтобы ответить на ваш вопрос: я не думаю, что есть хороший способ отформатировать столбец в CSS (если ширина столбца не известна - вы можете получить это умение с помощью JavaScript ...) Так что T.J. У Краудера, конечно, отличный ответ.
Однако есть один аргумент для CSS (и принудительной ширины), так как в одном случае я создал очень большую форму, которая покрывала весь экран. Все поля будут отображаться на одном экране (по желанию клиента), а CMS не выводит таблицу. Но даже несмотря на то, что таблица была бы кошмаром просто потому, что все поля для многих были помещены в невыровненные столбцы. Это было бы довольно сложно с таблицей (много строк с использованием таблицы в качестве сетки, которая будет таблицей для разметки!).
Обновление:
Согласно комментарию ниже, singe31 говорит, что <input/>
не может быть определено в теге <label>
. Это не верно. HTML 4.01 DTD легко читается, и мы видим, что:
<!ELEMENT LABEL - - (%inline;)* -(LABEL) -- form field label text -->
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
<!ENTITY % formctrl "INPUT | SELECT | TEXTAREA | LABEL | BUTTON">
Другими словами, <input/>
может появляться в теге <label>
. Это совершенно законно.
HTML 5 ясно показывает, что это допустимо в документации по w3c здесь:
http://www.w3.org/html/wg/drafts/html/master/forms.html#the-label-element
Прокрутите немного вниз до «Пример кода», и вы увидите:
Пример кода
Например, на платформах, где щелчок или нажатие на ярлык флажка проверяет флажок, щелчок или нажатие на ярлык в следующем фрагменте может привести к тому, что агент пользователя выполнит шаги активации искусственного щелчка для элемента ввода, как если бы сам элемент был вызван пользователем:
<label><input type=checkbox name=lost> Lost</label>
На других платформах поведение может быть просто фокусировать элемент управления или ничего не делать.