CSS эксперименты с полем и кнопкой поиска

CSS эксперименты с полем и кнопкой поиска

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

У вас уже есть стандартный блок с поиском

Для начала в вашем HTML-документе вам необходимо создать тег input с типом search. Если вы посмотрите на нижеприведенный код, то заметите четыре разных элемента: блок div с классом .box, блок div с классом .container-1, элемент span с классом .icon и сам элемент input с типом search.

Все четыре варианта будут иметь поле поиска и иконку в виде лупы. Каждый из четырех примеров будет помещен в контейнер, чтобы мы могли независимо управлять полем поиска. И наконец, блок div будет отвечать за центрирование контейнера.

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Добавление шрифтов Font Awesome

Шрифты Font Awesome являются библиотекой иконок. Узнать подробнее об этом проекте вы можете на собственном сайте проекта Font Awesome.

Пример кода сверху – это один из примеров того, как вы можете вставить иконку внутрь разметки. Однако, для того чтобы иконка отображалась, вам необходимо прописать ссылку на библиотеку Font Awesome, как это показано в следующем примере. Вставьте данную ссылку внутрь элемента head.

Базовое оформление

Мы собираемся добавить некоторые стили в отдельной таблице стилей (которую вам также необходимо подключить внутри элемента head).

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

Украшение блока с поиском

Эта обучающая статья полностью посвящена тому, как научиться украшать блоки с поиском. В первом примере я буду объяснять все очень подробно; я хочу быть уверена в том, что вы точно понимаете, что и как происходит. В последующих трех примерах я просто покажу, как добиться различных переходов.

#1. Исчезновение фона

В первом примере мы приступим к изменению фона у тега input при наведении. Мы также добавим переход, чтобы изменение не было резким.

HTML

Вы уже видели вариант HTML-разметки. Во всех примерах она будет похожей.

CSS

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

Сначала мы оформим элемент с классом .container. Вероятно самое важное свойство – это position: relative. Оно задано специально для того, чтобы иконку можно было поместить поверх элемента input, что вы и увидите далее.

Input

Теперь нам нужно назначить стили для самого элемента input. Вышеприведенные стили носят чисто эстетический характер, т.к. свойство border-radius или background-color не влияют на функционирование самого элемента input. Обязательно обратите внимание на левый отступ. Он необходим для того, чтобы обеспечить свободное пространство для иконки, т.е. иконка не будет находиться буквально поверх элемента input.

Ниже приведены четыре разных правила для указания цвета текста атрибута placeholder (в нашем случае это Поиск). К сожалению, все правила должны прописываться отдельно с указанием вендорных префиксов и не могут быть прописаны в сокращенном виде. Это немного раздражает, и вы увидите этот повторяющийся код в каждом примере!

Иконка

Наконец, мы назначаем оформление для иконки. Наиболее важный момент – это позиционирование иконки поверх элемента input благодаря свойству position: absolute. Поля (margins) помогают спозиционировать иконку в дополнение к указанному верхнему значению свойства position равному 50%.

Добавление эффектов при наведении

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

Из вышеприведенного отрывка кода видно, что мы добавили два дополнительных состояния – focus и active. Таким образом, эффект не будет исчезать, когда курсор мыши будет уводиться с элемента. Что еще важнее – эффект будет сохранен при взаимодействии с элементом.

Создание перехода

Для реализации перехода нам нужно добавить несколько строк кода. Вернемся обратно к правилу, в котором мы назначили стили для элемента input – .container-1 input#search. Перед закрывающей скобкой добавьте следующий код:

Мы задаем свойство transition в сокращенном виде, но мы можем также и прописать все три параметра по отдельности. Сначала мы говорим, что переход будет влиять только на свойство background. Затем мы говорим, что переход должен длиться чуть больше полсекунды. Наконец, мы определяем функцию смягчения для перехода. Функция ease не является единственно возможной для данного примера. Мы также можем использовать, например, функции linear или ease-in. Тогда просто сам переход будет смотреться немного по-другому. Попробуйте сами поменять значения и выбрать тот эффект, который вам больше понравится.

Стили для элемента input теперь выглядят следующим образом:

Как работают CSS переходы?

Если вы ничего не знаете о CSS переходах, давайте я сделаю для вас небольшой обзор. Сначала, чтобы переход был реализован, нужно определить свойство в его исходном состоянии (по умолчанию), но не в состояниях hover, active или focus.

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

#2. Растягивание элемента input при наведении

В данном примере блок с поиском будет изначально представлен только иконкой в виде лупы. Когда вы наводите курсор мыши на иконку, блок с поиском будет растягиваться, чтобы вы могли ввести ваш запрос. Большая часть кода будет похожа на код из предыдущего примера.

📎📎📎📎📎📎📎📎📎📎