Формируем форму поиска для сайта (для исходного кода Яндекс.Поиск)
Здравствуйте, уважаемый посетитель!
В предыдущей статье мы создали Яндекс.Поиск и сделали все его основные настройки. Сегодня же используя полученный код сформируем на сайте форму поиска, предназначенную для ввода запросов.
При этом, для того, чтобы это дополнение ничем не отличалось от других элементов сайта, постараемся с помощью стилей CSS разместить его на сайте максимально приблизив внешний вид к существующему дизайну.
Следует отметить, что оформление формы Яндекс.Поиск под дизайн сайта, не совсем простое занятие.
Сложность заключается в том, что в ней присутствует скрипт на языке JavaScript, который обеспечивает взаимодействие формы с сервисом Яндекс.Поиск. И при его выполнении после каждой загрузки страницы происходит динамическое изменение HTML и CSS кода самой формы. Что, соответственно, приводит к искажению ее внешнего вида.
Поэтому общее описание рассматриваемого материала получилось достаточно объемным с приведением значительного количества кода и поясняющих иллюстраций. В связи с этим материал разбит на две части.
В этой статье мы рассмотрим первую часть, оформив поисковую форму для исходного HTML-кода, полученного непосредственно с сервиса Яндекс.Поиск. А в следующей, посмотрим как можно откорректировать стили CSS для того, привести ее внешний вид в исходное состояние после ее динамического изменения, связанного с выполнением скрипта.
Следует отметить, что в сети Интернет сложно найти подробную методику приведения внешнего вида формы Яндекс.Поиск к существующему дизайну сайта (по крайней мере мне этого не удалось)
Надеюсь, что рассматриваемый здесь материал поможет многим желающим использовать на своем сайте поиск от Яндекса максимально используя все его преимущества, включая возможность адаптации внешнего вида элементов поиска под дизайн сайта.
Несмотря на то, что создание в предыдущих статьях поиска от Яндекс производилось непосредственно на действующем, размещенном в сети Интернет сайте avtobezugona.ru (создание Яндекс.Поиска возможно только на реально действующих ресурсах), для наглядности, рассматриваемые здесь операции по формированию его элементов будут производиться на примере варианта сайта "newsite.local", размещаемого на локальном веб-серевере.
скриншот 51
Содержание
- Размещаем HTML-код формы поиска
- С помощью стилей CSS формируем внешний вид формы поиска
- Исходные файлы сайта
Размещаем HTML-код формы поиска
В создаваемом сайте элементы поиска в соответствии с дизайн-макетом предполагается использовать в области сайдбара. Поэтому полученный из дополнительных материалов из предыдущей статьи HTML-код (файл "seach_form.html") разместим в соответствующем месте файла "aside.php", находящегося в папке "blocks" корневого каталога "www".
Ниже показан HTML-код в редакторе Notepad++ файла "aside.php" с размещенным фрагментом формы поиска в ранее созданном контейнере Рис.1 Фрагмент исходного HTML-кода формы поиска Теперь исходя из этого HTML-кода можно приступить к назначению определенных свойств CSS для того, что придать этому элементу должный внешний вид. Как было ранее отмечено, на данном этапе мы занимаемся оформлением формы поиска для чистого HTML-кода, полученного непосредственно с сервиса Яндекс.Поиск. Поэтому, для того, чтобы иметь такую возможность, имеющийся в файле "aside.php" скрипт, следует временно закомментировать или удалить, как показано ниже. type="hidden" name="searchid" value="2301097"/> type="hidden" name="l10n" value="ru"/> type="hidden" name="reqenc" value=""/> type="search" name="text" value="" placeholder="Введите запрос"/> type="submit" value="Найти"/> "/*(function(w,d,c){var s=d.createElement('script'),h=d.getElementsByTagName('script')[0],e=d.documentElement;if((' '+e.className+' ').indexOf(' ya-page_js_yes ')===-1){e.className+=' ya-page_js_yes';}s.type='text/javascript';s.async=true;s.charset='utf-8';s.src=(d.location.protocol==='https:'?'https:':'http:')+'//site.yandex.net/v2.0/js/all.js';h.parentNode.insertBefore(s,h);(w[c]||(w[c]=[])).push(function(){Ya.Site.Form.init()})})(window,document,'yandex_site_callbacks');*/" Рис.2 Исходный HTML-кода формы поиска с закомментированным скриптом Как видно, в строке 14 JavaScript-скрипт закомментирован, что позволяет нам перейти к CSS стилизации для варианта с исходным HTML-кодом. Наша задача состоит в том, чтобы привести внешний вид формы наиболее близко к типовому дизайну сайта. Поэтому при назначении свойств CSS будем исходить из ранее назначенных стилей существующих аналогичных элементов. Это относится как к контейнеру На данный момент существующая таблица стилей CSS, относящихся к форме поиска выглядит следующим образом. /*-----Форма поиска-----*/ .seach { height: 9.25em; background-image: linear-gradient(to top, #c4c4c4 0%, #e9e9e9 5%, #eaeaea 10%, #eaeaea 94%, #f7f7f7 98%, #fafafa 100%); border-radius: .625em; box-shadow: 0 0 3.75em 0 #fff; border-top: .0625em solid #dedede; padding: .3125em 1.25em; font-size: .9375em; color: #212a68; line-height: .8; overflow: hidden; margin-top: .9375em; position: relative; } .seach h3 { text-align: center; font-size: 1.125em; font-weight: bold; line-height: 1.2; padding-top: .5em; margin-bottom: 1.125em; } .seach label { position: relative; bottom: .5em; } Рис.3 CSS-код формы поиска Если сейчас открыть страницу сайта, то в этом состоянии можно увидеть, что форма Яндекс.Поиска разместилась в предназначенном ей месте. Рис.4 Установленная форма Яндекс.Поиска Однако, вид самой формы пока не соответствует существующему дизайну. Что требует назначения определенных свойств CSS для имеющихся в ней элементов . Ниже приведены дополнения CSS-кода, которые приводят форму Яндекс.Поиска к внешнему виду, соответствующему особенностям дизайна создаваемого сайта (внесенные дополнения выделены светлым фоном). /*-----Форма поиска-----*/ .seach { height: 9.25em; background-image: linear-gradient(to top, #c4c4c4 0%, #e9e9e9 5%, #eaeaea 10%, #eaeaea 94%, #f7f7f7 98%, #fafafa 100%); border-radius: .625em; box-shadow: 0 0 3.75em 0 #fff; border-top: .0625em solid #dedede; padding: .3125em 1.25em; font-size: .9375em; color: #212a68; line-height: .8; overflow: hidden; margin-top: .9375em; position: relative; } .seach h3 { text-align: center; font-size: 1.125em; font-weight: bold; line-height: 1.2; padding-top: .5em; margin-bottom: 1.125em; } .seach label { position: relative; bottom: .5em; } .ya-site-form input[type="search"] { width: 100%; height: 1.875em; font-size: 1em; padding: .25em .5em 0 .5em; background: #fdfadc; box-sizing: border-box; box-shadow: .1875em .1875em .3125em 0 #8b8e8d inset; border-radius: .3125em; border-top: 0 solid #fff; border-left: 0 solid #fff; border-bottom: .125em solid #fff; border-right: .125em solid #fff; color: #000066; } .ya-site-form input[value="Найти"] { height: 1.875em; padding: 0 .375em 0 .375em; border-radius: .3125em; text-align: center; font-weight: bold; background-image: linear-gradient(to top,#653939,#a76d6d 70%,#c39696); box-shadow: .125em .125em .25em 0 #422a2a; border-width: .125em; border-style: solid; border-color: #ddbebe #241616 #241616 #ddbebe; color: #fff; line-height: 1.2; font-size: .9375em; position: absolute; bottom: 1.0625em; right: 1.3125em; } .ya-site-form input[value="Найти"]:hover { box-shadow: none; border-color: #c39696 #a76d6d #653939 #a76d6d; } .ya-site-form input[value="Найти"]:active { box-shadow: 0 0 .4375em .125em #422a2a inset; border-color: #777 #fff #fff #777; } Рис.5 CSS-код формы поиска Ранее при оформлении элементов сайдбара подробно рассматривалось назначение стилей CSS для формирования внешнего вида форм. Поэтому не будем здесь повторяться, а только отметим, что все свойства для элементов поля ввода (поз.27÷41) и кнопки "Найти" (поз.42÷57) применены к имеющемуся в исходном коде от Яндекс.Поиск элементу А для визуализации состояния кнопки к этим же элементам назначены псевдо-классы: :hover (поз.58÷61) - для активного состояния (находящаяся под курсором мыши) и :active (поз.62÷65) - для нажатого состояния (удерживаемая кнопкой мыши). Сделано это аналогично тому, как ранее мы оживляли кнопки и делали их интерактивными на этапе верстки сайта. Проверим теперь результат выполненных действий, обновив страницу сайта. Рис.6 Стилизованная форма Яндекс.Поиска Как видно после стилизации данный элемент поиска приняла типовой для этого сайта вид. А теперь раз комментируем код JavaScript и посмотрим как он будет выглядеть после полной загрузки страницы и выполнения скрипта, обеспечивающего взаимодействие с сервисом Яндекс.Поиск. Рис.7 Форма Яндекс.Поиска с динамически измененным HTML-кодом Видно, что в этом состоянии исказились размеры и расположение элементов, размер шрифта, а также цвет кнопки. Как отмечалось ранее это связано с тем, что выполнение скрипта приводит к появлению в форме дополнительных элементов со своими стилями CSS. Что, соответственно, и приводит к таким изменениям. А для того, чтобы это исправить, необходимо сначала определить реальное содержимое динамически измененного HTML и CSS кода, а затем внести необходимые дополнения в таблицу стилей CSS. Чем мы и займемся в следующей статье. Дополнительные материалы бесплатно предоставляются только зарегистрированным пользователям. Для скачивания исходных файлов необходимо авторизоваться под своим аккаунтом через соответствующую форму. Для тех кто не зарегистрирован, можно это сделать на вкладке Регистрация. С уважением,
Поиск
С помощью стилей CSS формируем внешний вид формы поиска
Исходные файлы сайта
Исходные файлы сайта с обновлениями, которые были сделаны в данной статье, можно скачать из прилагаемых дополнительных материалов: