Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
YouTube 165 Подписчики
Telegram 241 Подписчики
VK 0 Подписчиков
Маркетер
Маркетер
  • Маркетинг
  • Digital
  • Реклама
  • Public Relations
  • Менеджмент
  • Новости
  • Кодирование

Красивые поля ввода

  • 28.07.2005

Автор статьи: Дмитрий Турецкий

Красивые поля ввода

[самодельные поля ввода]

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

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

В какой-то мере это оправдано — стандартные элементы позволяют посетителю с первого взгляда понять, где что, не говоря уже о том, что автор сайта страхуется от возможных проблем, связанных с разным отображением элементов в разных браузерах. Но все-таки очень хочется сделать что-то поэлегантнее, чем стандартные текстовые поля, загнанные в таблицу…Для начала попробуем нарисовать простую форму в том виде, как она часто присутствует на сайтах (за исключением того, что мы сразу уберем таблицу — все-таки 21-й век на дворе!).

  имя:
  Email:
    

имя:
Email:

Стандартные элементы позволяют посетителю проще ориентироваться на сайте
М-да, выглядит не очень впечатляюще… Попробуем ее немножко облагородить. Для этого пропишем у всех элементов какие-то классы (мы их потом отформатируем с помощью CSS), а кроме того, добавим теги fieldset (группировка элементов формы), legend (название для fieldset — похоже на тег caption для таблиц) и label (выводит «этикетки» для элементов формы, причем щелчок по «этикетке» передаст фокус ввода соответствующему элементу).

  
  Подписка на новости сайта  
  
    
  
Подписка на новости сайта




Не сказать, чтобы стало намного лучше, но ведь это еще не конечный результат, а только заготовка… Добавим немного CSS и опишем размеры и положение полей.

.fld { width:300px; }  .fld label { clear:both; text-align:right; width:70px; float:left;   margin:0; margin-top:0.3em; }    .fld .txtfld { margin:3px; height:20px; width:200px; }
Подписка на новости сайта






Теги FIELDSET, LEGEND и LABEL редко используются в формах. А зря…
Уже лучше. Теперь сделаем следующий шаг и спрячем поля ввода, сохранив, разумеется, их функциональность. Для этого мы просто сделаем
рамки вокруг этих элементов нулевой ширины (если присвоить элементам атрибут display:none или visibiliy:hidden, то поля исчезнут, но вместе с ними пропадет и функциональность). Дописываем CSS:

.fld { width:300px; }  .fld label { clear:both; text-align:right; width:70px; float:left;   margin:0; margin-top:0.3em; }    .fld .txtfld { margin:3px; height:20px; width:200px; border:0 solid red; }  .subm { border:0 solid red; margin:3px; height:20px; width:80px; }
Подписка на новости сайта






Указание в CSS свойства display:none не только прячет элемент, но и уничтожает его функциональность…
Все, что теперь осталось (ну, почти все), — это нарисовать какие-то картинки, подходящие к вашему дизайну, и использовать их в качестве фона для полей ввода. Разумеется, вам придется еще немного поиграть с отступами и полями, чтобы текст точно попадал на ваши новые поля, а также с размерами шрифта, его насыщенностью, разрядкой, цветом и так далее, но эффект того стоит. Главное — не переусердствовать…

.fld { width:300px; }  .fld label { clear:both; text-align:right; width:70px; float:left;   margin:0; margin-top:0.3em; }    .fld .txtfld { margin:3px; height:20px; width:200px; border:0 solid red;   background:transparent url('input_box.gif') no-repeat; }  .subm { border:0 solid red; margin:3px 3px 3px 73px; height:20px; width:80px;   background:transparent url('input_box.gif') no-repeat; }
Подписка на новости сайта






Кнопочки и прочие картинки лучше рисовать тем, кто умеет это делать. Я — нет, так что прошу прощения за качество…
Единственное, что осталось доделать, это учесть пользователей, которые смотрят вашу страницу через IE5 (их становится все меньше, но число еще достаточно заметное). Дело в том, что этот браузер почему-то прокручивает фоновую картинку при вводе текста. Можно вместо no-repeat указать fixed — это исправит положение для IE5, но испортит для всех остальных браузеров, так как картинка зафиксируется на одном месте и не будет двигаться при прокрутке страницы (в полном соответствии со стандартом). Поэтому мы воспользуемся одним из стандартных методов защиты от IE5:

.fld { width:300px; }  .fld label { clear:both; text-align:right; width:70px; float:left;   margin:0; margin-top:0.3em; }    .fld .txtfld { margin:3px; height:20px; width:200px; border:0 solid red;   background:transparent url('input_box.gif') fixed; }  fieldset>input.txtfld { background:transparent url('input_box.gif') no-repeat; }  .subm { border:0 solid red; margin:3px 3px 3px 73px; height:20px; width:80px;   background:transparent url('input_box.gif') fixed; }  fieldset>input.subm { background:transparent url('input_box.gif') no-repeat; }
По возможности не забывайте про старые браузеры
Вот, пожалуй, и все. Разумеется, эту идею можно развивать разными способами — например, можно использовать невидимые поля ввода для доступа к «секретным» областям сайта (правда, такая защита действует до тех пор, пока посетитель в код страницы не заглянет), но лучше все же не пугать и не путать пользователя, ограничившись подгонкой дизайна форм под дизайн ваших страниц.Успехов вам и вашему сайту!

Ссылки по теме

  • CSS: пара слов о шрифтах
  • Что такое каскадные таблицы стилей (CSS)
Не переусердствуйте с украшательствами — это может значительно испортить впечатление от вашего сайта…
Алексей Волков

Предыдущий материал
  • HTML

«Резиновая» рамка с фигурными углами

  • 27.07.2005
  • alexvolkov
Подробнее
Следующий материал
  • PHP

PHP: секреты файла php.ini. Часть 3

  • 29.07.2005
  • Алексей Волков
Подробнее
Вас также может заинтересовать
Подробнее
  • CSS

Формализация CSS

  • Алексей Волков
  • 23.05.2012
Подробнее
  • JQuery

Хитрости JQuery

  • jokar
  • 23.05.2012
Подробнее
  • JQuery

Закруглить углы изображения при помощи JQuery

  • jokar
  • 21.05.2012
Подробнее
  • JQuery

Знакомьтесь: Nivo Slider от jQuery

  • tamo
  • 28.09.2010
Подробнее
  • JQuery

Первое знакомство с jQuery: часть первая.

  • tamo
  • 26.09.2010
Подробнее
  • JQuery

Продолжаем изучать jQuery: часть вторая. Учимся выделять элементы.

  • tamo
  • 26.09.2010
Подробнее
  • JQuery

Продолжаем изучать jQuery: работа с анимацией. Часть третья.

  • tamo
  • 26.09.2010
Подробнее
  • Flash

TiltViewer — 3D Flash галерея

  • Nika75
  • 21.09.2010

Добавить комментарий

Для отправки комментария вам необходимо авторизоваться.

Свежие посты
  • Концепция Reason to believe RTB
    • 15.04.26
  • Дайджест постов Сергея Людкевича
    • 12.09.24
  • Как юристы тормозят бизнес
    • 30.08.24
  • Продвижение оптовых кампаний в Яндекс Директ
    • 06.03.24
  • Cарафанное радио
    • 13.01.24
Маркетер
  • О проекте
  • Информационное спонсорство
  • Рекламным агентствам
  • Ссылки
(с) Маркетер: У нас портал для маркетологов и маркетера. Статьи про рекламу, маркетинг, public relations, интернет

Введите ключевые слова для поиска и нажмите Enter