Создание лучших форм

Фото автора =) 26.03.2008 от ROM

Оригинал

В большинстве случаев, когда делаете формы, у Вас получаются надписи слева или выше полей, с которыми они ассоциируются. Дизайнеры сходят с ума, пытаясь сделать все красиво, но зачастую это семантически неправильно и требует хаков, зависящих от браузера. В прошлом я использовал следующий код:

<form>
	<ul>
		<li><label>Label1</label><input type=”text” value”" /><li>
		<li><label>Label2</label><input type=”text” value”" /><li>
		…
	</ul>
</form>

Надписи могли быть слева или справа или отображались как блок, в зависимости от ваших нужд. Однако я недавно подсмотрел на Facebook.com хорошую технологию, которая использует тег определение списка (dl). Я нашел это особенно привлекательным, потому что браузеры (по умолчанию) и дизайнеры добавляют мало стилей для тега dl, поэтому ваш дизайн наиболее переносим. Плюс семантика использования этого тега позволяет вам иметь пару ключ/значение. Здесь ключом будет label и значением поле.

Вот пример, как будет выглядеть Ваша форма:
Example of Facebook Message Form

Чтобы сделать такую хорошую форму, ваш html должен быть похожим на этот:

<form action=”someURL” class=”clearfix” id=”someID” method=”post”><dl>
	<dt><label for=”form-msg-to”>To:</label></dt>
	<dd><input id=”form-msg-to” name=”to” type=”text” value=”"/></dd>
	<dt><label for=”form-msg-subject”>Subject:</label></dt>
	<dd><input id=”form-msg-subject” name=”subject” type=”text” value=”"/></dd>
	<dt><label for=”form-msg-message”>Message:</label></dt>
	<dd><textarea cols=”30″ id=”form-msg-message” name=”body” rows=”5″></textarea></dd>
</dl></form>

и стили:

#message form {
	/* Optional, just a littl nice padding */
	padding: 3em 0pt 1em 9em;
}

#message dl {
	/* Replace with desired width */
	width: 47em;
}

#message dl dt {
	float: left;
	/* Spacing between label and field */
	padding: 0 1em 0 0em;
	text-align: right;
	/* Width of largest label */
	width: 6.5em;
}

#message dl dt label {
	/* Make whatever you like */
	color: #666;
	/* Labels with “for” attribute are clickable, ensure they look that way */
	cursor: pointer;
	display: block;
	/* Use whatever font-size you prefer */
	font-size: larger;
	/* Adjust padding to align with fields */
	padding-top: 0.5em;
}

#message dl dd {
	float: left;
	/* This is the padding between form field rows */
	margin: 0 0 1em;
	/* Remaining width dl - dt - padding */
	width: 39em;
}

#message input.txt,
#message textarea {
	/* Prevents x-browser bug */
	overflow: hidden;
	padding: 0.4em 0 0.4em 0.2em;
	width: 33em;
}

Вам также надо добавить стиль “clearfix” для формы, если другие элементы зависят от её позиции.


Популярность: 14%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: Переводы, Программирование |

Комментарии (3)

  1. Dima пишет:

    спасибо помогло по больше таких статей)

  2. Sergey пишет:

    было интересно спасибо решил проблему)))0

  3. admin пишет:

    Будут по мере нахождения и времени для перевода.

Оставить комментарий

Подпишитесь, пожалуйста:

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Заметьте: Включена проверка комментариев. Нет смысла повторно отправлять комментарий.


Рубрики:

Управление:




Рейтинг блогов
Рейтинг блогов
Рейтинг блогов
Яндекс цитирования
Каталог блогов Blogdir.ru
количество читателей онлайн и всего


Я - на Карте
Каждому своё…
Блог о jQuery, Linux и немного программировании