2010-12-22 5 views
5

Ich möchte die verbesserte Semantik von HTML5 nutzen. Ich erstelle einen Suchbereich und der Suchbereich sollte einen Hintergrund haben und suchbezogene Dinge wie Autocomplete und Suchhinweise enthalten.Was ist die beste semantische Möglichkeit, einen Suchbereich zu umbrechen?

Gibt es einen Konsens darüber, um welche Art von Element es sich bei einem Suchgebiet handelt?

  • Sollte es ein NAV sein, weil Suchen eine Methode der Navigation ist?
  • Sollte es ein SEKTION sein, weil es ein diskreter Abschnitt der Seite ist?
  • Sollte es ein DIV sein, weil das Wrapping von suchbezogenen Elementen keine klare Semantik hat?

Das Markup ist so etwas wie dieses:

<?whatElement?> 
    <input type="search" placeholder="Search for a name or ID..." required /> 
    <a href="#" class="search button">Search</a> 
</?whatElement?> 

Vielen Dank für Ihre Gedanken.

Antwort

3

Ich bin mir bewusst, diese Frage bereits eine gewählte Antwort, aber es rangiert so hoch, in meinem Google-Suche nach „semantischen Suchformular“, dass ich das Bedürfnis zu tragen, was ich glaube, eine etwas bessere Antwort zu sein , semantisch und vom Standpunkt der Standards.

<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>

Natürlich habe ich eine Reihe von Annahmen und den HTML-Code mit einigen Standardwerten gefüllt (Action, erhalten, die ID und den Namen des Eingangs, usw.) und ohne Klassennamen für die Elemente (die ich immer zu Gattungsnamen oder, Himmel verboten, IDs) benutze, aber du solltest dich an deine eigenen Bedürfnisse anpassen.

Zum Beispiel, einige Ergänzungen auf den ausgezeichneten Beiträge oben: das erste Kind von jeder Form sollten immer einen <fieldset> Tag sein und haben ein <legend> angebracht (sichtbar oder nicht - https://www.w3.org/TR/WCAG20-TECHS/H71.html) und alle <input> Tags a angeschlossen haben sollten <label> Tag durch die for und id Eigenschaften (https://www.w3.org/TR/WCAG20-TECHS/H44.html - Ich finde es einfacher, nur die Eingabe in das Etikett wickeln, um nicht zu vergessen, sie zu verbinden). Alle Call-to-Action-Elemente sollten einen Titel haben (für SEO und Usability, um die Aktion zu verstärken, bevor der Benutzer sie macht), etc.

+0

Ja, das Aria-Zeug ist eine gute Ergänzung, danke. Wenn dies lehrmäßig wird, möchten Sie vielleicht nicht "s" in den Gehirnen von Menschen kodieren. – SimplGy

+0

Haben Sie eine Begründung (Link) dafür, warum jedes Formular ein erstes Kind von 'fieldset' haben sollte? Ich habe das nie gehört, und es kommt standardmäßig mit Styling, das mich nicht interessiert. – SimplGy

+0

Hier werden Zugänglichkeitsverfahren für Formulare beschrieben: http://webaim.org/techniques/forms/. Dies ist die Anforderungsspezifikation für diese spezielle Regel: https://www.w3.org/TR/WCAG20-TECHS/H71.html (Teil der WCAG 2.0 - Web Content Accessibility Guidelines https://www.w3.org/WAI/WCAG20/quickref/). Was mich daran erinnert, dass ich eine Änderung an der Antwort vornehmen muss (Hinzufügen einer Legende). – ViorelMocanu

5

Wie wäre:

<form> 
    <input type="search" name="" value="" /> 
    <input type="submit" value="Search" /> 
</form> 
+0

Ich hatte das vorher, aber Safari Mobile fügt einen irreversiblen 6px hinzu von linker und rechter Füllung auf BUTTON und INPUT type = submit Elemente, also ging ich stattdessen mit der Fakey-Taste. – SimplGy

+1

Ihre Frage war über Semantik, Stil kann über CSS geändert werden (http://thinkvitamin.com/design/styling-submit-buttons-for-mobile-safari/) Ohne Semantik des Formulars und Eingabe [type = submit] Elemente werden Sie eine Menge von guten Standard-Browser-Verhalten verlieren – antonj

+0

Und was ist mit dem '

6

Die HTML5-Spezifikation sagt über das section Element:

Rolle muss entweder Region, Dokument, Anwendung, Content, Haupt, Suche, alarm, dialog, alertdialog, status oder log

so würde ich das verwenden.

+0

Ehrfürchtig, genau wonach ich suchte (eine selbstverantwortliche Position), danke. – SimplGy

4
<section role="search"> 

Das role Attribut ist ein ARIA landmark:

Ein Meilenstein Region, die eine Sammlung von Gegenständen und Objekten, die als Ganzes, kombinieren, um eine Suchfunktion zu erstellen.