Мини поиск — строка поиска на сайте

Default Image Микроблог

Адаптация интерфейса для мобильных устройств часто требует минимизации элементов. К числу таких элементов относится строка поиска. В этой статье рассмотрим создание «мини-поиска» — компактного и динамичного варианта строки поиска для сайта.

Три состояния мини-поиска
Дизайн нашего мини-поиска будет меняться в зависимости от действий пользователя. Выделим три основных состояния:

СостояниеОписание
ПассивноеСтрока поиска скрыта, виден только значок лупы (иконка поиска).
ПромежуточноеСтрока поиска отображена, но поле ввода пустое. Поиск ещё не активирован (пользователь нажал на значок, но не начал ввод).
АктивноеПользователь начал вводить текст в строку поиска. Значок лупы меняет функцию: теперь это кнопка для отправки запроса.

План работ
Для реализации потребуется выполнить следующие шаги:

  1. Создать HTML-разметку формы мини-поиска.
  2. Задать CSS-стили для строки поиска, значка и его активного состояния.
  3. Реализовать с помощью jQuery открытие строки поиска при клике на значок.
  4. Реализовать закрытие строки поиска при повторном клике на значок.
  5. Запрограммировать активацию кнопки поиска (смену её функции) при вводе данных в строку.

1. HTML-разметка формы
Разместим на странице базовую структуру нашего мини-поиска.

2. CSS-стили для мини-поиска
Зададим внешний вид элементам. Стили охватывают контейнер, строку ввода, кнопку и их состояния.

/* Стили для контейнера и значка */
#welcome2 .arrm {
    padding: 0;
    height: 38px;
    width: 38px;
    text-align: center;
    border: 1px solid transparent;
}

#welcome2.prover .arrm {
    border: 1px solid #636E75;
    color: #636E75;
}

#welcome2 > ul {
    text-align: right;
    position: absolute;
    top: 0px;
    right: 40px;
    width: 262px;
    display: none;
    background: none;
    height: 40px;
    z-index: 1000;
    margin: 0;
    padding: 0;
    list-style: none;
}

/* Стили для строки поиска */
#search {
    position: absolute;
    top: 0px;
    right: 0px;
    width: 260px;
    z-index: 7;
}

#search .button-search {
    position: absolute;
    left: 262px;
    width: 40px;
    height: 40px;
    cursor: pointer;
    z-index: 10001;
    line-height: 40px;
    background: #636E75;
    color: #fff;
    text-align: center;
}

#search input {
    margin: 0;
    background: #FFF;
    padding: 0 10px;
    width: 240px;
    height: 38px;
    border: 1px solid #636E75;
}

#search input:focus {
    outline: none;
}

/* Адаптация для мобильных устройств */
@media (max-width: 767px) {
    #welcome2 > ul {
        right: 60px;
    }
    #search {
        width: 180px;
    }
    #search input {
        width: 160px;
    }
    #search .button-search {
        left: 180px;
    }
}

3. Программная часть на jQuery
Для работы скриптов необходима предварительно подключённая библиотека jQuery.

// Проверка заполненности строки при загрузке страницы
// (актуально, если пользователь перешёл по ссылке с уже заданным поисковым запросом)
if($("#search input").val().length > 0) {
    $("#search .button-search").css('display','block');
} else {
    $("#search .button-search").css('display','none');
}

// Активация/деактивация кнопки поиска при вводе текста
$("#search input").on("keyup", function() {
    if($("#search input").val().length > 0) {
        $("#search .button-search").css('display','block');
    } else {
        $("#search .button-search").css('display','none');
    }
});

// Закрытие строки поиска при клике в любом месте страницы, кроме неё самой
$(document).click(function (e) {
    var div = $(".prover");
    if (!div.is(e.target) && div.has(e.target).length === 0) {
        div.children('ul').css('display','none');
        div.removeClass("prover");
    }
});

Представленное решение позволяет создать компактную, интуитивно понятную и адаптированную для мобильных устройств строку поиска. Динамическое изменение её состояния улучшает пользовательский опыт, делая взаимодействие с сайтом более удобным.

Оцените статью
codda