Как отформатировать HTML-форму без использования таблиц

Я знаю, что использовать HTML-таблицы для всего - плохо ... и эти таблицы следует использовать только для представления табличных данных, а не для достижения какой-то цели стиля.

У меня вопрос: как сделать HTML-формы с помощью CSS, чтобы они выглядели красиво и согласованно, как при использовании таблиц?

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
23
0
36 418
6

Ответы 6

Я бы посмотрел, используя тег div, для размещения данных на странице.

Таблицы по-прежнему очень полезны для табличных данных, но их не одобряют для компоновки страницы.

См. Исходный код здесь, на stackoverflow.com, вероятно, есть несколько хороших примеров.

Тег <table> используется на этой странице 24 раза.

SSH This 30.01.2014 02:00

Подумайте о размещении имен полей над полем, а не рядом. Я считаю, что это лучшее из лучших.

Когда все сделано правильно, это делает формы бесконечно более удобочитаемыми, поскольку ваши глаза должны двигаться только в одном направлении, а не сканировать вперед и назад.

John Sheehan 07.10.2008 23:17

Однако для сложных форм это работает не очень хорошо. Для меня это просто заставило меня упростить формы, что никогда не бывает плохо.

John Sheehan 07.10.2008 23:18

К сожалению, у нас не всегда есть возможность указать дизайн.

Andrew Hedges 08.10.2008 00:14

Взгляните на код, используемый в формах wufoo, они используют ul для форматирования форм и выглядят действительно хорошо.

http://wufoo.com/gallery/templates/

Ник Ригби написал отличную статью для A List Apart под названием Более красивые доступные формы.

Использует набор полей, легенду, метку. Высоко семантический.

Вы можете попытаться убрать форму как можно дальше назад и обойтись <label> и различными элементами ввода формы по мере необходимости, опираясь на атрибут clear:left; в CSS.

Это гарантирует, что каждая строка начинается заново, без необходимости заключать каждую строку формы в дополнительный <div> или <p> или даже составлять из этого список.

.formlabel{
    clear:left;
    display:block;
    float:left;
    margin:0 0 1em 0;
    padding:0 0.5em 0 0;
    text-align:right;
    width:8em;
}

.forminput{
    float:left;
    margin:0 0.5em 0.5em 0;
}

.formwarning{
    clear:left;
    float:left;
    margin:0 0.5em 1em 0;
}

Вот образец HTML-формы, показывающий примеры различных типов ввода и дополнительное сообщение проверки, которое вы можете скрыть или стилизовать по мере необходимости:

<fieldset><legend>Details</legend>
    <label for = "name" class = "formlabel">Name</label>
      <input id = "name" name = "name" type = "text" class = "forminput" />
      <div class = "formwarning">Validation error message</div>

    <label for = "dob_year" class = "formlabel">DOB</label>
      <div class = "forminput">
        <input id = "dob_year" name = "dob_year" type = "text" size = "4" /> /
        <input id = "dob_month" name = "dob_month" type = "text" size = "2" /> /
        <input id = "dob_day" name = "dob_day" type = "text" size = "2" />
      </div>

    <label class = "formlabel">Sex</label>
      <label for = "female" class = "forminput">Female</label>
        <input id = "female" name = "sex" type = "radio" class = "forminput" />
      <label for = "male" class = "forminput">Male</label>
        <input id = "male" name = "sex" type = "radio" class = "forminput" />

    <label for = "state" class = "formlabel">State</label>
      <select id = "state" name = "state" class = "forminput">
        <option>ACT</option>
        <option>New South Wales</option>
        <option>Northern Territory</option>
        <option>Queensland</option>
        <option>South Australia</option>
        <option>Tasmania</option>
        <option>Victoria</option>
        <option>Western Australia</option>
      </select>

    <label for = "deadseal" class = "formlabel">Death certificate</label>
      <input id = "deadseal" name = "deadseal" type = "file" class = "forminput" />
</fieldset>

В приведенном выше примере у DOB действительно есть дополнительный <div>, загромождающий вещи. Вы можете избавиться от него, если при необходимости сделаете косые черты даты частью псевдоэлемента :after.

Получается нормально в Opera 11.60, Firefox 11, Google Chrome 18 и Internet Explorer 8.

HTML

<form>
<div id = "personal_name">
<label>Name</label>
<input name = "name" />
</div>
</form>

CSS

form
{display: table}
#personal_name
{display: table-row}
#personal_name input, #personal_name label
{display: table-cell}

Думаю, этого достаточно.

Другие вопросы по теме