Оформление Формы. Часть 1, Input. Из Серии «Сделайте Мне Красиво»

19.03.2008 | Рубрики: Верстка, Дизайн
Тэги: , , , ,

Что есть такое — форма? Это не френч с карманАми, не лампас на штанине урядника и даже не бескозырка старпома Лома. В данном цикле из нескольких статей мы будем говорить за веб-формы. То есть, об интерактивных элементах на странице веб-сайта, самым простым вариантом которой является окошко ввода почтового адреса с кнопкой «ОК».

рис. 1
form1

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

Большое разнообразие полей для ввода данных в веб-формах можно свести к трем основным тэгам: input, textarea и select. В данной статье поговорим об оформлении наиболее часто используемого тэга — input. Напомню, что тэг этот, подобно тэгу изображения img не имеет закрывающего тэга. Поэтому после записи всех свойств необходимо так же перед закрывающей скобкой добавлять пробел со слэшем /.

При помощи тэга input можно изобразить довольно приличную кучку разнообразных элементов веб-формы. Все определяет значение атрибута type этого тэга. Например:

  • text — однострочное текстовое поле, как на рис.1;
  • password — поле для ввода пароля. При наборе символы отображаются звездочками *;
  • checkbox — «флажок» — предлагает множественный выбор;
  • radio — «радиокнопка» — предлагает единственный выбор из ряда;
  • submit — ОК, «Да!», Отправить, «Пшел!», «Фас!» — кнопка отправки данных. К слову: эта кнопка не обязательна. Данные можно отравить и просто нажатием клавиши Enter;
  • button — просто кнопка. При желании можно наделить любой функцией;
  • reset — сброс данных;
  • hidden — скрытое поле. В форме его не видно. Используется для передачи всевозможной служебной информации;
  • file — поле для выбора локального файла. Часто обзывают словом «Обзор».

Кроме того, к данному тегу часто применяют следующие, дополнительные атрибуты:

size — размер видимой длинны поля в буквенных символах. Например запись size=”20” означает, что в окошке поместятся ровно 20 цифро-буквов, не больше и не меньше.

maxlength — еще одно дурное английское слово (рекомендую нацарапать на стене, иначе забудется). Задает максимально разрешенное количество символов для ввода в данное поле.

value — содержимое по-умолчанию. То есть, если напишете value=”E-mail”, то в этом поле изначально будет показано данное слово — E-mail.

С этим разобрались. Теперь самое вкусное! Как нам над этим тэгом поколдовать, чтобы сделать красиво? Ведь по-умолчанию эта штуковинка выглядит весьма неприглядно, эдакий серенький брусочек. Почему бы нам не сделать его таким:

рис. 2
form2.gif

В этом нам поможет лист стилей CSS, в котором мы для формы пропишем несколько правил и зададим тем самым желаемый вид отображения. Что мы можем изменить? Во-первых, размер самого поля. Долой мелкий и неудобный шрифт! Пусть будет крупно. Во-вторых, цвет как самого поля, так и рамки вокруг него. В-третьих, можно само поле поместить на каком-нибудь красивом фоне, задав тэгу form собственный background.

Итак, поехали! Нам понадобится код самой формы:

<form action=”"><input class=”area” type=”text” size=”20″ maxlength=”100″ name=”email” value=”Ваш E-mail” /><input class=”button” type=”submit” value=”OK” /></form>

И следующий набор правил:

form {
background: #333 url(bg-form.gif) repeat-x;
width: 350px;
margin: 200px auto;
padding: 50px 0;
text-align: center;
}

.area {
background: #F4FFE6;
color: #060;
font-size: 24px;
border: 1px solid #3f3;
}

.button {
background: #3f3;
color: #fff;
font-size: 22px;
border: 1px solid #F4FFE6;
}

Как видим, никаких лишних дивов (DIV). Все правила привязаны к существующим тэгам. Здесь тэг form используется как контейнер, в котором помещены два элемента input с классами: area — поле ввода, и button — то есть, кнопка. Для формы мы использовали в качестве фона рисунок с градиентом и бликом, ширину всего блока задали в 350 пикселей и выравнивание текста по центру.

Особо следует остановиться на размерах текстового поля и кнопки. Высота их задается размерами самого шрифта. То есть, в нашем случае — 24 пиксела. Но тут есть одна непонятка (кто разъяснит — буду сильно признателен): шрифт поля и кнопки одинаков. И когда мы смотрим нашу форму в Опере, то высота поля и кнопки тоже одинкова. Но вот в Internet Explorer кнопка почему-то становится выше текстового поля. От чего это зависит, я так и не нашел пока. Как вариант — написать небольшой хак (кусок правил) конкретно под IE и задать там высоту кнопки путем уменьшения размера шрифта.

В следующий раз поговорим о текстовом поле, которое так и называется — textarea.

Вебсовет

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

  1. Марина 20.03.2008

    Спасибо Вам большое.

    Ответить

  2. Kventor 20.03.2008

    2 Марина: Пожалуйста! :) Если что-то непонятно или не получается - смело спрашивайте. Обязательно отвечу и помогу.

    Ответить

  3. Марина 22.03.2008

    Хорошо :-), если будет что-то не получаться, то обращусь к Вам.
    Недавно начала изучать веб-разработку, правила верстки. Очень помогают Ваши советы. :-)

    Ответить

  4. Kventor 22.03.2008

    Замечательно! Рад, что смог хоть чем-то помочь :)

    Ответить

  5. HostyleFlame 03.06.2008

    Путем нехитых махинаций я менял у формы стандартную кнопку на свою. Единственной поблемой для меня было создание круглой кнопки, т.к. файрфокс и некоторые другие браузеры при нажатии на кнопку выделяют её границы, а круглую кнопку все равно вырезаешь и сохраняешь с небольшой рамкой, состоящей из окружающего кнопку фона - получается палевно в итоге…

    Ответить

  6. Найкрис Кроули 03.06.2008

    оу!!! вот это формы!

    (это я написал на автомате, разглядывая девушку на улице :))

    Ответить

  7. Kventor 04.06.2008

    HostyleFlame, есть такая трабла у некоторых браузеров. Как обойти сей факт - пока не знаю. Если что-то найду, обязательно расскажу.

    Найкрис, надеюсь написанное было цензурно и грамотно? :)

    Ответить

  8. Найкрис Кроули 04.06.2008

    Квентор, а я по-другому и не умею ;)

    А насчет кнопки с паливом, так я считаю, что это не проблема, ну пусть и спалит какой-то процент посетителей… если учесть, что большей части будет все равно по этому поводу, а большая часть, от оставшейся, решит, что так и нужно, то получаем 2-3% посетителей, которые заметят, что круглая кнопка на самом деле квадратная

    Ответить

  9. Студия электро дизайна 18.08.2008

    А никто не видел статью, как заменить чекбокс, прикрутив вместо него див с жабаскриптом?
    Весь интернет перерыл - не могу вспомнить где видел.

    Ответить

  10. Nus 22.08.2008

    сдорово только я не могу понять как сделать так чтоб управлять кнопкой когда курсор над ней (цвет рамки например менять когда над кнопкой курсор)

    Ответить

  11. Игорь Квентор 22.08.2008

    Ну, можно, например, для кнопки прописать еще одно правило:

    .button:hover {
    border: 1px solid #F00;
    }

    Хотя в ИЕ оно работать не будет.

    Ответить

  12. Евгений 22.10.2008

    А я вот не очень согласен с этим методом селекции. Если у меня умопомрачительно-огромная форма с великим числом элементов, а мне нужно чтобы все input’ы были одинаковые. Писать class=”input1″ в каждом - гиблое дело. Css ведь позволяет селектить input, select, textarea, button. Т.е. для всех выпадающих списков можно создать такой код:
    select {
    background:#f2f2f2;
    border:#ccc solid 1px;

    }
    и не надо будет вписывать в каждый тег параметр class=”…”

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

    Ответить

  13. Игорь 25.05.2010

    А в css можно вынести maxlength?
    Или значения указываются только в теге input?

    Ответить

  14. Игорь Квентор 25.05.2010

    Игорь, все нужно попробовать :)

    Ответить

  15. eSender 07.07.2010

    HostyleFlame, чтобы граница не появлялась у круглой кнопки можно к примеру сделать не , а сделать такую кнопку картинкой . Можно задать к такой картинке и другие параметры.

    Ответить

  16. DartShelL 07.08.2010

    чтобе убрать эту рамку (часто в “лисе” встречается) примените к свойство: outline:none; - и никаких проблем

    .button
    {
    outline:none;
    }

    Ответить

  17. Игорь Квентор 08.08.2010

    Очень верное замечание! И не только для кнопки, но и для input вообще. Тогда и в Chrome рамка не будет появляться.

    Ответить

  18. Георгий 15.02.2011

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

    На мой взгляд, правильней было бы использовать селекторы атрибутов, например input[type=”text”] только для текстовых полей, или input[type=”checkbox”] только для флажков.

    Данный способ не сработает в Internet Explorer 6.

    Ответить

Трэкбеки

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