Если это таблица фиксированной ширины, ее легко выложить с помощью div и float.Просто установите для каждой ширины именно то, что вам нужно.
Для таблицы с жидкостным макетом - а жидкостный макет в целом крайне желателен - гораздо сложнее организовать форму без отображения в стиле таблицы, потому что float
и position
не позволяют легко выполнять вычисления типа «эта ячейка составляет половину оставшейся ширины родительского элемента после выделения меток фиксированной ширины».
Так что в подобных случаях, что, безусловно, включает в себяВ виде формы из двух столбцов, которую вы разместили, значения table-*
CSS display
- это ваша единственная возможность.Если вы нацелены только на IE8 и другие современные браузеры, вы можете использовать divs и установить display: table-row
et al в таблице стилей.Однако для совместимости с IE6-7 и другими более старыми / мобильными / нишевыми браузерами вам придется использовать реальные элементы <table>
/ <tr>
/ <td>
, поскольку только современные браузеры поддерживают table-CSS независимо от элементов таблицы.
В этом нет ничего постыдного.Форма в любом случае является полубабличной, и практического недостатка в ее доступности нет, поскольку содержимое страницы остается упорядоченным надлежащим образом.
Примечание: для форм с разметкой жидкостей у вас также есть проблема изменения размеров полей ввода в соответствииродительский элемент.input { width: 100%; }
почти делает это, но не совсем, потому что width
не включает границы или отступы, которые вводятся по умолчанию.Вы можете использовать CSS3 box-sizing
и его специфичные для браузера версии, чтобы обойти это для современных браузеров, но если вы хотите, чтобы он точно соответствовал пикселю в IE6-7, вам придется использовать отступы для родительских элементов.равно границе / заполнению дочернего поля ввода.