
- •34. Проектирование, компоновка и представление форм с помощью css
- •Концепции, представленные в этой статье
- •Переопределение правил и маркеров
- •Новые элементы полей формы
- •Изменения относительно предыдущей формы
- •Очевидные недостатки
- •Новые поля форм? Что это?
- •Когда слишком много вариантов выбора: select/option
- •Объединение последовательности элементов управления: fieldset
- •Начинаем с самого начала, заканчиваем готовой формой
- •Демонстрация 1
- •Демонстрация 1: сопутствующие рассмотрения
- •Демонстрация 2
- •Демонстрация 2: сопутствующие рассмотрения
- •Демонстрация 3
- •Демонстрация 3: сопутствующие рассмотрения
- •Создание сетки
- •Создание структуры сетки в композиции
- •Реализация сетки в таблице стилей
- •Демонстрация 4
- •Демонстрация 4: сопутствующие рассмотрения
- •Правило третей
- •Демонстрация 5
- •Демонстрация 5: сопутствующие рассмотрения
- •Демонстрация 6
- •Демонстрация 6: сопутствующие рассмотрения
- •Демонстрация 7
- •Демонстрация 8
- •Демонстрация 8: сопутствующие рассмотрения
- •Демонстрация 9
- •Демонстрация 9: сопутствующие рассмотрения
- •Демонстрация 10
- •Демонстрация 10: сопутствующие рассмотрения
- •Демонстрация 11
- •Демонстрация 11: сопутствующие рассмотрения
- •Демонстрация 12
- •Демонстрация 12: сопутствующие рассмотрения
- •Создание уровней поддержки платформы
- •Сложные компоновки форм на практике (… вместо теории)
- •Заключение
- •Контрольные вопросы
- •Библиография
- •Об авторе
Когда слишком много вариантов выбора: select/option
…
<label for="natureOfInquiry">General
subject:</label>
<select name="subject" class="medium" id="natureOfInquiry">
<option value="support">Support</option>
<option value="billing">Accounts & billing</option>
<option value="press">Press</option>
<option value="other_q">Other questions</option>
</select>
Элементы select и option предлагают результаты, аналогичные тем, которые предоставляет последовательность радио-кнопок, занимая при этом значительно меньше места. Выбор элемента select вместо последовательности радио-кнопок часто является вопросом того, как используется пространство интерфейса пользователя; длинный список географических областей или отделов на сайте е-коммерции обычно лучше подходит для элементов select, в то время как более короткие последовательности выбора (например, да/нет, true/false, диапазон возраста, диапазон дохода) должны представляться в виде радио-кнопок.
Тщательное самотестирование покажет, что для манипулирования списком select требуется достаточно высокий уровень точного управления движением, но он увеличивается не так существенно, по сравнению с количеством содержащихся в нем вариантов. Практический результат состоит в том, что короткие списки взаимно исключающих вариантов лучше всего форматируются как последовательности радио-кнопок с подходящим образом написанными метками.
Объединение последовательности элементов управления: fieldset
Основное назначение элемента fieldset состоит в задании единого контекста последовательности тесно связанных элементов управления (элементы управления text для номера телефона, элементы select для даты, и т.д.).
Начинаем с самого начала, заканчиваем готовой формой
Теперь, когда новый материал этой статьи очерчен в общих чертах, пришло время рассмотреть этот материал в действии - двенадцать следующих демонстраций показывают различные концепции дизайна и проблемы оформления, которые встречаются при разработке формы Web.
Читателям настоятельно рекомендуется самостоятельно использовать демонстрационный материал для экспериментов с правилами таблиц стилей.
Эти демонстрации представлены в порядке исходного кода, а не в том порядке, в котором были написаны таблицы стилей. Причины и последствия этого отклонения обсуждаются в дальнейшем в статье.
Демонстрация 1
Начиная с правила, которое содержит html { margin: 0; padding: 0; }, первый шаг состоит в оформлении body, содержащего страницу.
Так выглядит страница без дополнительного оформления.
И код соответствующей страницы.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>CSS Technique Demonstration: Forms</title>
<link rel="stylesheet" type="text/css" href="bmh.form.styles.00.css" />
<!--[if IE]><link rel="stylesheet" type="text/css"
href="form_prog_styles_ie.css" /><![endif]-->
</head>
<body>
<h3>Contact Us</h3>
<form id="contactForm" method="post" action="/cgi-bin/generic_email_script.php">
<ul>
<li id="nameField" class="required"><label for="realname">Name:</label>
<input type="text" name="name" value="" class="medium" id="realname" />
<span class="note">required</span></li>
<li id="addressField" class="required"><label for="address">Email:</label>
<input type="text" name="email" value="" class="medium" id="address" />
<span class="note">required</span></li>
<li id="acctTypeField" class="required"><label for="acctNone">Account type:</label>
<fieldset>
<label for="acctGold">Gold</label><input type="radio" name="acct_type" id="acctGold" class="rInput" />
<label for="acctSilver">Silver</label><input type="radio"
name="acct_type" id="acctSilver" class="rInput" />
<label for="acctBronze">Bronze</label><input type="radio" name="acct_type" id="acctBronze" class="rInput" />
<label for="acctNone">None</label><input type="radio" name="acct_type" id="acctNone"
class="rInput" checked="checked" />
</fieldset>
<span class="note">required</span>
</li>
<li id="subjectField"><label for="natureOfInquiry">General subject:</label>
<select name="subject" class="medium" id="natureOfInquiry">
<option value="support">Support</option>
<option value="billing">Accounts & billing</option>
<option value="press">Press</option>
<option value="other_q">Other questions</option></select>
</li>
<li id="availabilityField"><label for="availability">My account is unavailable:</label>
<input type="checkbox" name="is_down" id="availability" class="rInput" /></li>
<li id="messageField"><label for="messageBody">Comments:</label>
<textarea name="comments" cols="32" rows="8" class="long" id="messageBody"></textarea></li>
<li class="submitField"><input type="submit" value="Send" class="submitButton" /></li>
</ul>
</form>
</body>
</html>
Пример 34.1. (html, txt)
Форма с применением оформления body.
Добавлены новые стили оформления:
body {
margin: 0;
padding: 1.714em;
background-image: url(images/bg_grid.gif);
font-size: 14px;
font-family: Helvetica,Arial,sans-serif;
line-height: 1.714em;
}