Как добавить кнопку поиска в поле ввода текста?

Как создать элемент «поиск», аналогичный элементу в этот сайт?

введите здесь описание изображения

Если мы посмотрим источник, у него есть одно текстовое поле, за которым следует тег <span>.

<input type="text" name="q" id="site-search-input" autocomplete="off" value="Search" class="gray" />
<span id="g-search-button"></span>

Где я могу получить подобное изображение «увеличительного стекла»?


person Someone    schedule 02.11.2010    source источник


Ответы (7)


Поместите изображение в диапазон, например, с помощью background-image, затем задайте ему относительное положение и переместите его влево, чтобы оно перекрывало правый конец окна поиска, например:

#g-search-button {
  display: inline-block;
  width: 16px;
  height: 16px;
  position: relative;
  left: -22px;
  top: 3px;

  background-color: black;  /* Replace with your own image */
}

Рабочий пример на JSBin

person casablanca    schedule 02.11.2010
comment
@casablanca: Мне нужно поставить фоновое изображение вместо фонового цвета - person Someone; 02.11.2010
comment
@cassablanca: я неправильно получаю изображение - person Someone; 02.11.2010
comment
@Derby: Что ты пробовал? Используйте что-то вроде background-image: url(filename.png). - person casablanca; 02.11.2010
comment
@Derby: Это работает для меня. Вы уверены, что путь к изображению правильный? - person casablanca; 02.11.2010
comment
@Cassablanca: он съедает границу моего текстового поля - person Someone; 02.11.2010
comment
@Derby: Тогда попробуйте переместить span дальше влево, мой пример был только для width: 16px. В любом случае убедитесь, что ваше изображение не слишком большое. - person casablanca; 02.11.2010
comment
@Cassablanca: всего 10 * 10 все еще получается так же - person Someone; 02.11.2010
comment
‹тип ввода =TextBox class=Txt› ‹span class=search-button style=width: 16px›‹/span›‹/td› .Txt { семейство шрифтов: Arial, Helvetica, sans-serif; размер шрифта: 11px; граница:1px канавка #000000; вертикальное выравнивание: посередине; ясно: оба; } .search-button { display: inline-block; ширина: 16 пикселей; высота: 16 пикселей; положение: родственник; слева: -22px; верх: 3px; фоновое изображение: URL-адрес (glass.jpg); } - person Someone; 02.11.2010
comment
@cassablanca: Изображение, которое я взял из Google, имеет ширину 10 пикселей * высоту 10 пикселей x - person Someone; 02.11.2010
comment
@casablanca - Также требуется некоторое право заполнения, иначе символы будут скрыты за изображением. - person Bibhu; 08.08.2013

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

Что вам нужно сделать, так это добавить div-оболочку вокруг input:text и input:submit

Оболочка будет выглядеть как текстовое поле, но на самом деле будет содержать прозрачное текстовое поле и кнопку отправки. Вам нужно специально удалить стили для элементов input:text и input:submit.

<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title>Input Example</title>
  <style type="text/css">
/* <![CDATA[ */

.search
{
  border: 1px solid #000000;
  width: 200px;
}

.search input[type="text"]
{
  background: none;
  border: 0 none;
  float: left;
  height: 1.5em;
  line-height: 1.5em;
  margin: 0;
  padding: 3px 0;
  width: 180px;
}

.search input[type="submit"]
{
  background: #CCCCCC url(path/to/image.jpg);
  border: 0 none;
  height: 1.5em;
  line-height: 1.5em;
  margin: 0;
  padding: 3px 0;
  text-indent: 100px;
  width: 20px;
}

/* ]]> */
  </style>
</head>
<body>
  <form ...>
    <div class="search">
      <input type="text" />
      <input type="submit" />
    </div>
  </form>
</body>
</html>

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

РЕДАКТИРОВАТЬ: вы можете сделать свое собственное увеличивающее изображение, их довольно легко сделать в прозрачном формате png 20x20px.

person zzzzBov    schedule 04.11.2010

Если вы просматриваете страницу в Google Chrome, щелкните правой кнопкой мыши кнопку поиска и выберите «Проверить элемент», вы сможете увидеть CSS, используемый для достижения этого эффекта.

Если вы не знакомы с CSS, я настоятельно рекомендую CSS: полное руководство.

person Paul D. Waite    schedule 02.11.2010
comment
+1 за элегантный ответ. Также следует упомянуть Firebug для Firefox. - person Valentin Flachsel; 02.11.2010

На таком сайте, как Iconspedia, есть количество похожих бесплатных значков.

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

person Andrew Flanagan    schedule 02.11.2010
comment
Сейчас у нас есть Font Awesome и IcoMoon. - person Dan Dascalescu; 30.06.2015

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

http://jsfiddle.net/Lzm1k4r8/23/

Вы можете настроить положение left: слева или справа от окна поиска.

person BigBadMe    schedule 13.08.2015
comment
Это сэкономило мне кучу времени :) - person user2323308; 18.11.2015

Чтобы помочь с отзывами пользователей, почему бы не добавить значок указателя мыши, когда вы наводите курсор на увеличительное стекло? Просто укажите это в своем CSS:

.search:hover {курсор:указатель; }

person Simmo    schedule 23.11.2010

Я хотел бы подключить новый плагин jQuery, который я написал, потому что я чувствую, что он отвечает на запрос OP. Он называется jQuery.iconfield: https://github.com/yotamofek/jquery.iconfield.

Это позволяет легко добавить значок в левую часть текстового поля. Для использования значка в качестве кнопки вы можете легко привязаться к событию iconfield.click, которое запускается, когда пользователь щелкает значок. Он также заботится об изменении курсора, когда мышь находится над значком.

Например:

$('#search-field').iconfield( {
    'image-url':   'imgs/search.png', // url of icon
    'icon-cursor': 'pointer'          // cursor to show when hovering over icon
} );
$('#search-field').on( 'iconfield.click', function( ) {
    $('#search-form').submit()
}

Хотелось бы получить отзывы о своей работе.

person Yotam Ofek    schedule 15.10.2012
comment
я пытался использовать этот плагин, но значок-курсор не работает, iconfield.click не срабатывает, опция left: false также не действует!! - person Bernice; 30.03.2014
comment
Привет, пожалуйста, свяжитесь со мной по электронной почте, указанной в моем профиле GitHub. С удовольствием устраню неполадки и исправлю. - person Yotam Ofek; 30.03.2014