Я знаю, что на этот вопрос уже есть выбранный ответ, но он занял настолько высокое место в моем поиске Google для "семантической формы поиска" , что я чувствую необходимость внести вклад в то, что, по моему мнению, немного лучшеответьте семантически и с точки зрения стандартов.
<section role="search">
<form action="#" method="get">
<fieldset>
<legend>Search this website:</legend>
<label for="s">
<input type="search" name="s" id="s" placeholder="Search..." maxlength="200" />
</label>
<button type="submit" title="Search this website now">Submit</button>
</fieldset>
</form>
</section>
Конечно, я сделал ряд предположений и заполнил HTML некоторыми значениями по умолчанию (action, get, id и name для ввода и т. Д.) И безИмена классов для элементов (которые я всегда использую в пользу общих имен элементов или, не дай Бог, идентификаторов), но вы должны адаптироваться к вашим собственным потребностям.
Например, некоторые дополнения помимо превосходного вкладавыше: первый дочерний элемент любой формы всегда должен быть тегом <fieldset>
и иметь прикрепленный <legend>
(видимый или нет - https://www.w3.org/TR/WCAG20-TECHS/H71.html), а все теги <input>
должны иметь связанный тег <label>
через свойства for
и id
(https://www.w3.org/TR/WCAG20-TECHS/H44.html - мне проще просто обернуть ввод в метку, чтобы не забыть подключить их).Все элементы призыва к действию должны иметь заголовок (для SEO и юзабилити, чтобы усилить действие, которое пользователь собирается совершить непосредственно перед тем, как он его сделает) и т. Д.