поле поиска на сайте

Организация поиска по веб-странице на JavaScript (без jQuery)

Пару дней назад получил тестовое задание от компании на вакансию Front-end dev. Конечно же, задание состояло из нескольких пунктов. Но сейчас речь пойдет только об одном из них — организация поиска по странице. Т.е. банальный поиск по введенному в поле тексту (аналог Ctrl+F в браузере). Особенность задания была в том, что использование каких-либо JS фреймворков или библиотек запрещено. Все писать на родном native JavaScript.

(Для наглядности далее буду сопровождать всю статью скринами и кодом, чтоб мне и вам было понятнее, о чем речь в конкретный момент)

Поиск готового решения

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

Если кому интересно, код брал тут.

Почему скрипт работал некорректно?

Все просто. Скрипт работает следующим образом. Сперва в переменную записываем все содержимое тега body, затем ищем совпадения с регулярным выражением (задает пользователь при вводе в текстовое поле) и затем заменяем все совпадения на следующий код:

А затем заменяем текущий тег body на новый полученный. Разметка обновляется, меняются стили и на экране подсвечиваются желтым все найденные результаты.

Вы уже наверняка поняли, в чем проблема, но я все же объясню подробней. Представьте, что в поле поиска ввели слово «div». Как вы понимаете, внутри body есть множество других тегов, в том числе и div. И если мы всем к «div» применим стили, указанные выше, то это уже будет не блок, а непонятно что, так как конструкция ломается. В итоге после перезаписи разметки мы получим полностью сломанную веб-страницу. Выглядит это так.

Было до поиска: поле поиска на сайте. Смотреть фото поле поиска на сайте. Смотреть картинку поле поиска на сайте. Картинка про поле поиска на сайте. Фото поле поиска на сайтеПросмореть полностью
Стало после поиска: поле поиска на сайте. Смотреть фото поле поиска на сайте. Смотреть картинку поле поиска на сайте. Картинка про поле поиска на сайте. Фото поле поиска на сайтеПросмореть полностью

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

Итак пишем скрипт с нуля

Как все у меня выглядит.

поле поиска на сайте. Смотреть фото поле поиска на сайте. Смотреть картинку поле поиска на сайте. Картинка про поле поиска на сайте. Фото поле поиска на сайте

Сейчас нас интересует форма с поиском. Обвел ее красной линией.

Давайте немного разберемся. Я это реализовал следующим образом (пока чистый HTML). Форма с тремя тегами.

Первый — для ввода текста;
Второй — для для отмены поиска (снять выделение);
Третий — для поиска (выделить найденные результаты).

Итак, у нас есть поле для ввода и 2 кнопки. JavaScript буду писать в файле js.js. Предпложим, что его вы уже создали и подключили.

Первое, что сделаем: пропишем вызовы функции при нажатии на кнопку поиска и кнопку отмены. Выглядеть будет так:

Давайте немного поясню что тут и зачем нужно.

Полю с текстом даем id=«text-to-find» (по этому id будем обращатсья к элементу из js).

Кнопке отмены даем такие атрибуты: type=«button» onclick=«javascript: FindOnPage(‘text-to-find’,false); return false;»

Тип: button
При нажатии вызывается функция FindOnPage(‘text-to-find’,false); и передает id поля с текстом, false

Кнопке поиска даем такие атрибуты: type=«button» onclick=«javascript: FindOnPage(‘text-to-find’,true); return false;»

Тип: submit (не кнопка потому, что тут можно юзать Enter после ввода в поле, а так можете и button использовать)
При нажатии вызывается функция FindOnPage(‘text-to-find’,true); и передает id поля с текстом, true

Вы наверняка заметили еще 1 атрибут: true/false. Его будем использовать для определения, на какую именно кнопку нажали (отменить поиск или начать поиск). Если жмем на отмену, то передаем false. Если жмем на поиск, то передаем true.

Окей, двигаемся дальше. Переходим к JavaScript

Будем считать, что вы уже создали и подключили js файл к DOM.

Прежде, чем начнем писать код, давайте отвлечемся и сперва обсудим, как все должно работать. Т.е. по сути пропишем план действий. Итак, нам надо, чтоб при вводе текста в поле шел поиск по странице, но нельзя затрагивать теги и атрибуты. Т.е. только текстовые объекты. Как этого достичь — уверен есть много способов. Но сейчас будем использовать регулярные выражения.

Итак, следующее регулярное выражение будет искать только текст след. вида: «>… текст.

Источник

Создание и настройка поиска

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

Шаг 1. Область поиска

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

Техническое название поиска

Название, которое будет отображаться на странице Мои поиски. Его будете видеть только вы.

Название поиска для стандарта Opensearch

Вы можете задать название поиска для OpenSearch — под этим названием посетители смогут добавить ваш поиск в браузер в качестве поисковой системы.

Семейный фильтр

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

Чтобы заведомо исключить из области поиска страницы с матом и порнографией, настройте семейный фильтр. Настройки фильтра аналогичны соответствующим настройкам большого поиска.

Область поиска

Перечислите через пробел адреса сайтов или их подразделов.

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

В списке исключений можно указать точные адреса документов или маску адреса для исключения разделов сайта целиком. Например:

Исключение страницы somepage.php сайта example.com : http://example.com/somepage.php

Исключение всех страниц раздела /blog/ сайта сайта example.com : http://example.com/blog

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

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

Шаг 2. Форма поиска

На втором шаге вы настраиваете внешний вид поисковой формы. Настройки автоматически отражаются под заголовком Предпросмотр формы поиска — форма здесь выглядит такой, какой она будет на странице вашего сайта. Обратите внимание: на вашем сайте форма автоматически растянется по ширине доступного ей места.

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

Код получившейся формы доступен на последнем шаге создания поиска.

Шаг 3. Результаты поиска

На третьем шаге вы настраиваете результаты поиска. Главное — решить, на какой именно странице должны показываться результаты поиска (блок Где показывать результаты).

Доступно два варианта:

На странице Яндекса, с вашим логотипом, заголовком и нижним колонтитулом (вариант Показать результаты на Яндексе ).

На странице вашего сайта (вариант Показывать результаты на моей странице ). Если вы выбрали этот вариант, укажите URL страницы, которая будет содержать код результатов поиска. Сам код будет доступен на последнем шаге создания поиска.

Выбранные вами настройки внешнего вида результатов поиска (цвета, тексты, начертание шрифтов) автоматически отражаются под заголовком Предпросмотр результатов поиска.

Шаг 4. Проверка поиска

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

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

Шаг 5. Код для вставки на сайт

На пятом шаге вы получаете код поисковой формы, а также код результатов поиска (если собираетесь отображать результаты на своем сайте).

Выбор кодировки и языка

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

Выбор языка влияет на несколько параметров поиска:

Код поисковой формы

Выбрав язык поисковой формы, вы можете скопировать ее код и вставить в HTML-код страницы вашего сайта.

Код формы Яндекс.Поиска для сайта заключен в элемент

Код результатов поиска

Яндекс.Поиск для сайта предоставляет два кода результатов поиска:

Вставленный вами код результатов поиска встраивает весь HTML-код в структуру вашей страницы. Элементы результатов поиска будут оформлены согласно вашим общим CSS-стилям.

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

Дальнейшая настройка

Созданный поиск появится в списке Мои поиски. Открыв страницу поиска, вы можете изменить все параметры, заданные при создании, а также настроить поисковые подсказки, сниппеты и уточнения поиска.

Источник

Окно поиска по сайту

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

Как реализовать окно поиска по сайту

Как добиться того, чтобы при показе вашего контента в результатах поиска Google показывалось окно поиска:

Введя поисковый запрос в дополнительном окне, пользователь будет переадресован на сайт или в приложение и увидит страницу с результатами. Чтобы эта функция работала, вам понадобится настроить поисковую систему.

Пример

Ниже приведен пример для запроса «Pinterest» в Google. Среди полученных результатов пользователь увидел окно поиска сразу под ссылкой на нужный сайт.

поле поиска на сайте. Смотреть фото поле поиска на сайте. Смотреть картинку поле поиска на сайте. Картинка про поле поиска на сайте. Фото поле поиска на сайте

Далее приведены примеры разметки для окна поиска по сайту, на котором установлена пользовательская система поиска.

Нажмите кнопку ниже, чтобы увидеть пример кода в формате JSON-LD.

Нажмите кнопку ниже, чтобы увидеть пример кода в формате микроданных.

Нажмите кнопку ниже, чтобы увидеть пример кода JSON-LD для сайта и приложения.

Рекомендации

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

Как запретить Google добавлять окно поиска

Алгоритм Google Поиска может добавить окно поиска под ссылкой на ваш сайт, даже если вы не предпринимали действий, описанных в статье. Вы можете избежать этого, указав на главной странице следующий метатег:

Типы структурированных данных

Чтобы ваш контент мог демонстрироваться в расширенных результатах, необходимо задать все обязательные свойства.

Измененный тип WebSite

Google Поиск использует измененный тип структурированных данных WebSite для окон поиска сайтов и приложений. Подробное описание структурированных данных типа WebSite приведено на сайте schema.org, однако в случае с Google Поиском оно немного отличается от стандартного. Более подробные сведения представлены ниже.

Массив из одного или двух объектов SearchAction.

Объект описывает URI, к которому нужно направить запрос, и синтаксис этого запроса. Вы должны добавить страницу или обработчик намерений, который может получить запрос и выполнить корректный поиск по отправленной строке. Если пользователь не работает с приложением Android (или намерение для Android отсутствует), версия запроса для сайта будет отправлена из поискового окна по указанному маршруту. Если пользователь работает с устройством Android, а URI намерения известен, будет отправлено это намерение.

Пример для сайта

Пример для приложения

В качестве свойства urlTemplate должна быть строка в следующем формате: search_handler_uri .

https://query.example.com/search?q=

Обязательные свойства
potentialAction

Указывает на URL сайта, который является целью поиска. Ведет на каноническую главную страницу сайта. Пример: https://www.example.org

Сбор статистики по расширенным результатам в Search Console

С помощью Search Console вы можете собирать данные об эффективности страниц вашего ресурса в Google Поиске. Вам не обязательно регистрироваться в этом сервисе, чтобы ваши страницы попали в результаты поиска. Однако это позволит узнать, как роботы Google воспринимают сайт, и оптимизировать его. Рекомендуем проверять информацию в Search Console в следующих случаях:

После первого размещения структурированных данных

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

После выпуска новых шаблонов или обновления кода

При регулярном анализе трафика

Устранение неполадок

Если у вас возникли трудности с добавлением или отладкой структурированных данных, вам помогут ресурсы и сведения, доступные по приведенным ниже ссылкам.

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Источник

Как сделать поиск по сайту на HTML

поле поиска на сайте. Смотреть фото поле поиска на сайте. Смотреть картинку поле поиска на сайте. Картинка про поле поиска на сайте. Фото поле поиска на сайте

На этом уроке мы научимся встраивать строку поиска в адаптивное меню навигации, используя при этом только HTML/CSS код.

Демонстрация примера.

HTML разметка

Внутри меню навигации

Вся эта конструкция до стилизации выглядит таким вот образом.

поле поиска на сайте. Смотреть фото поле поиска на сайте. Смотреть картинку поле поиска на сайте. Картинка про поле поиска на сайте. Фото поле поиска на сайте

CSS код

Зададим светло-зелёный цвет фона для панели навигации.

nav <
background-color: #dcedc8;
>

Поместим все ссылки в строку с помощью обтекания слева, представим ссылки, как изначально строчные элементы – блочными.

nav a <
float: left;
display: block;
>

Меняем цвет фона под ссылками при наведении.

nav a:hover <
background-color: #8bc34a;
>

Стилизуем активный элемент для выделения пункта меню текущей страницы.

nav a.active <
background-color: #8bc34a;
color: #fff;
>

Располагаем контейнер для поиска на правой части панели навигации.

Стилизуем поле для поиска внутри панели навигации.

nav input[type=text] <
padding: 5px;
margin-top: 7px;
border: none;
>

Стилизуем кнопку Отправить внутри контейнера с поиском, располагая её правее по отношению к строке поиска (float:right).

Меняем цвет кнопки при наведении.

До ширины экрана 625 пикселей панель навигации выглядит хорошо.

поле поиска на сайте. Смотреть фото поле поиска на сайте. Смотреть картинку поле поиска на сайте. Картинка про поле поиска на сайте. Фото поле поиска на сайте

После 625 пикселей конструкция ломается, необходимо делать медиа-запрос для маленьких устройств.

поле поиска на сайте. Смотреть фото поле поиска на сайте. Смотреть картинку поле поиска на сайте. Картинка про поле поиска на сайте. Фото поле поиска на сайте

Медиа-запросы

Первым делом отменим обтекание везде, где оно было (float:none), это позволит всем элементам занять вертикальное положение, на ширине экрана меньше, чем 625 пикселей.

поле поиска на сайте. Смотреть фото поле поиска на сайте. Смотреть картинку поле поиска на сайте. Картинка про поле поиска на сайте. Фото поле поиска на сайте

Добавить иконку на кнопку Отправить

1) Добавить ссылку между тегами head:

2) Вставить иконку между тегами button:

поле поиска на сайте. Смотреть фото поле поиска на сайте. Смотреть картинку поле поиска на сайте. Картинка про поле поиска на сайте. Фото поле поиска на сайте

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

Посмотреть код целиком можно на Codepen

поле поиска на сайте. Смотреть фото поле поиска на сайте. Смотреть картинку поле поиска на сайте. Картинка про поле поиска на сайте. Фото поле поиска на сайте

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Комментарии ( 1 ):

Спасибо тебе, добрый человек! Ради отзыва решил даже зарегистрироваться на сайте. Это единственный поиск, который корректно подошел к моему сайту. За что огромное спасибо!

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.

Источник

Варианты оформления поля Поиска по сайту на CSS

поле поиска на сайте. Смотреть фото поле поиска на сайте. Смотреть картинку поле поиска на сайте. Картинка про поле поиска на сайте. Фото поле поиска на сайте

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

Вариант 1. Поиск с иконками выбора области поиска

HTML

SCSS

jQuery

Вариант 2. Форма поиска с анимированной кнопкой

HTML

Вариант 3. Расширяющаяся панель поиска

Наведите на лупу, чтобы увидеть эффект

HTML

Вариант 4. Панель поиска на CSS

Кликните на лупе, чтобы увидеть эффект

HTML

Вариант 5. Анимация поля поиска на CSS

Наведите на лупу, чтобы увидеть эффект

HTML

Вариант 6. Анимация панели поиска

HTML

Вариант 7. Панель поиска

Кликните на лупе, чтобы увидеть эффект

HTML

Понравилась статья? Поделитесь

Вас может заинтересовать:

9 трендов, которые будут диктовать правила брендинга и дизайна логотипа в 2019 году: яркие цвета, градиенты, минимализм и многое другое!

Как сделать красивую градиентную обводку блока на одном только CSS? Для этого мы сделаем следующее:

1. Создадим div. linear-gradient с градиентным фоном;

2. Создадим внутренний блок div с небольшим отступом.

Итак, что мы можем ожидать в веб-дизайне в 2021 году?

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

На основе проведённого анализа разрабатываем два варианта дизайна страниц сайта. Совместно с Заказчиком выбираем дизайн, наиболее удовлетворяющий всем потребностям и пожеланиям.

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

search_handler_uriНа сайтах применяется URL обработчика, который должен получать и обрабатывать поисковый запрос. В приложениях – URI обработчика намерения для вашей поисковой системы, который должен обрабатывать запрос.
search_term_string