793 Stimmen

Entfernen des hervorgehobenen Rahmens bei einem Eingabeelement für Text

Wenn ein HTML-Element "fokussiert" ist (d. h. gerade ausgewählt/mit einem Tab versehen), wird es in vielen Browsern (zumindest in Safari und Chrome) mit einem blauen Rahmen versehen.

Für das Layout, an dem ich gerade arbeite, ist das störend und sieht nicht gut aus.

<input type="text" name="user" class="middle" id="user" tabindex="1" />

Firefox scheint dies nicht zu tun, oder zumindest lässt es mich mit kontrollieren:

border: x;

Wenn mir jemand sagen kann, wie der IE abschneidet, wäre ich neugierig.

Es wäre schön, wenn Safari diesen kleinen Makel entfernen könnte.

1398voto

Cᴏʀʏ Punkte 101076

In Ihrem Fall sollten Sie es versuchen:

input.middle:focus {
    outline-width: 0;
}

Oder ganz allgemein, um alle grundlegenden Formularelemente zu beeinflussen:

input:focus,
select:focus,
textarea:focus,
button:focus {
    outline: none;
}

In den Kommentaren, Noah Whitmore schlug vor, noch weiter zu gehen und Elemente zu unterstützen, die die contenteditable Attribut gesetzt auf true (was sie effektiv zu einer Art Eingabeelement macht). Das Folgende sollte auch auf diese abzielen (in CSS3-fähigen Browsern):

[contenteditable="true"]:focus {
    outline: none;
}

Ich würde es zwar nicht empfehlen, aber der Vollständigkeit halber könnten Sie den Fokusumriss auf alles damit:

*:focus {
    outline: none;
}

Denken Sie daran, dass der Fokusumriss eine Funktion der Zugänglichkeit und Benutzerfreundlichkeit ist; er gibt dem Benutzer Hinweise darauf, welches Element gerade fokussiert ist.

11 Stimmen

Danke Cory, toller Tipp. Sie müssen auch die CSS zu textarea zuweisen, um alle Eingabefelder zu decken. input:focus, textarea:focus {outline: none;}

7 Stimmen

Vergessen Sie nicht auch Select select:focus {outline:none;}

2 Stimmen

Außerdem gibt es die <button> Tag, der unter anderem von jQuery UI und Twitter Bootstrap verwendet wird, also würde ich hinzufügen button: focus der Vollständigkeit halber in die Liste aufzunehmen.

83voto

marcjae Punkte 1324

So entfernen Sie es aus allen Eingaben

input {
 outline:none;
}

51voto

Rikard Askelöf Punkte 2439

Das verwirrte mich eine Zeit lang, bis ich entdeckte, dass die Linie weder ein Rand noch ein Umriss war, sondern ein Schatten. Um ihn zu entfernen, musste ich also dies verwenden:

input:focus, input.form-control:focus {

    outline:none !important;
    outline-width: 0 !important;
    box-shadow: none;
    -moz-box-shadow: none;
    -webkit-box-shadow: none;
}

39voto

Boaz Punkte 18890

Dies ist ein altes Thema, aber als Referenz ist es wichtig zu wissen, dass die Deaktivierung des Umrisses eines Eingabeelements nicht empfohlen wird, da es die Barrierefreiheit behindert.

Die Outline-Eigenschaft ist aus einem bestimmten Grund da - um den Benutzern einen klaren Hinweis auf den Tastaturfokus zu geben. Für weitere Lektüre und zusätzliche Quellen zu diesem Thema siehe http://outlinenone.com/

1 Stimmen

Boaz, FYI input.middle{outline: none} wird immer noch ermöglichen es Ihnen, durch die Elemente (einschließlich input.middle) zu bewegen. Durch Drücken der Tabulatortaste wird der Fokus auf das Eingabe-Tag als gut. Die einzige Sache ist, dass Sie nicht in der Lage sein, den Fokus (Umriss Fokus) auf sie zu sehen. Es ist also nicht so schädlich, es zu benutzen : )

13 Stimmen

@AnishNair Only thing is that you won't be able to see the focus(outline focus) on it - und genau das ist mein Punkt. Das Entfernen des Umrisses deaktiviert die visuelle Anzeige des Fokusereignisses, nicht des eigentlichen Ereignisses. Das Entfernen der visuellen Anzeige bedeutet, dass Sie es Menschen mit Behinderungen, die auf diese Anzeige angewiesen sind, erschweren.

2 Stimmen

Manchmal müssen wir Kompromisse eingehen, um etwas zu erreichen : )

31voto

I haz kode Punkte 1504

Dies ist eine häufige Sorge.

Der Standard Skizze die von Browsern wiedergegeben werden, sind hässlich.

Siehe zum Beispiel dies:

form,
label {
  margin: 1em auto;
}

label {
  display: block;
}

<form>
  <label>Click to see the input below to see the outline</label>
  <input type="text" placeholder="placeholder text" />
</form>

Die häufigste "Lösung", die die meisten empfehlen, ist outline:none - was bei falscher Anwendung eine Katastrophe für die Zugänglichkeit ist.


Wozu ist die Gliederung überhaupt gut?

Es gibt eine sehr trocken gestaltete Website die ich gefunden habe und die alles gut erklärt.

Es bietet visuelles Feedback für Links, die den "Fokus" haben, wenn Navigation in einem Webdokument mit der TAB-Taste (oder einer gleichwertigen Taste). Dies ist besonders nützlich für Leute, die keine Maus benutzen können oder eine Sehschwäche haben. Beeinträchtigung haben. Wenn Sie die Gliederung entfernen, machen Sie Ihre Website für diese Menschen unzugänglich.

Ok, probieren wir es aus, gleiches Beispiel wie oben, jetzt verwenden wir die TAB Taste zu navigieren.

form,
label {
  margin: 1em auto;
}

label {
  display: block;
}

<form>
  <label>Click on this text and then use the TAB key to naviagte inside the snippet.</label>
  <input type="text" placeholder="placeholder text" />
</form>

Haben Sie bemerkt, dass Sie erkennen können, wo der Fokus liegt, auch ohne auf die Eingabe zu klicken?

Versuchen wir nun outline:none auf unserem zuverlässigen <input>

Verwenden Sie also auch hier die TAB Taste, um nach dem Anklicken des Textes zu navigieren und zu sehen, was passiert.

form,
label {
  margin: 1em auto;
}

label {
  display: block;
}

input {
  outline: none;
}

<form>
  <label>Click on this text and then use the TAB key to naviagte inside the snippet.</label>
  <input type="text" placeholder="placeholder text" />
</form>

Sehen Sie, wie schwierig es ist, herauszufinden, wo der Schwerpunkt liegt? Das einzige Anzeichen dafür ist das Blinken des Cursors. Mein obiges Beispiel ist zu stark vereinfacht. In der Praxis würden Sie nicht nur ein einziges Element auf der Seite haben. Eher etwas in der Art wie hier.

.wrapper {
  width: 500px;
  max-width: 100%;
  margin: 0 auto;
}

form,
label {
  margin: 1em auto;
}

label {
  display: block;
}

input {
  outline: none;
}

<div class="wrapper">

  <form>
    <label>Click on this text and then use the TAB key to naviagte inside the snippet.</label>
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
  </form>

  <form>
    First name:<br>
    <input type="text" name="firstname"><br> Last name:<br>
    <input type="text" name="lastname">
  </form>

  <form>
    <input type="radio" name="gender" value="male" checked> Male<br>
    <input type="radio" name="gender" value="female"> Female<br>
    <input type="radio" name="gender" value="other"> Other
  </form>

  <form>
    <label for="GET-name">Name:</label>
    <input id="GET-name" type="text" name="name">
  </form>

  <form>
    <label for="POST-name">Name:</label>
    <input id="POST-name" type="text" name="name">
  </form>

  <form>
    <fieldset>
      <legend>Title</legend>
      <input type="radio" name="radio" id="radio">
      <label for="radio">Click me</label>
    </fieldset>
  </form>

</div>

Vergleichen Sie dies nun mit der gleichen Vorlage, wenn wir die Gliederung beibehalten:

.wrapper {
  width: 500px;
  max-width: 100%;
  margin: 0 auto;
}

form,
label {
  margin: 1em auto;
}

label {
  display: block;
}

<div class="wrapper">

  <form>
    <label>Click on this text and then use the TAB key to naviagte inside the snippet.</label>
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
  </form>

  <form>
    First name:<br>
    <input type="text" name="firstname"><br> Last name:<br>
    <input type="text" name="lastname">
  </form>

  <form>
    <input type="radio" name="gender" value="male" checked> Male<br>
    <input type="radio" name="gender" value="female"> Female<br>
    <input type="radio" name="gender" value="other"> Other
  </form>

  <form>
    <label for="GET-name">Name:</label>
    <input id="GET-name" type="text" name="name">
  </form>

  <form>
    <label for="POST-name">Name:</label>
    <input id="POST-name" type="text" name="name">
  </form>

  <form>
    <fieldset>
      <legend>Title</legend>
      <input type="radio" name="radio" id="radio">
      <label for="radio">Click me</label>
    </fieldset>
  </form>

</div>

Wir haben also Folgendes festgestellt

  1. Umrisse sind hässlich
  2. Ihre Beseitigung macht das Leben schwieriger.

Wie lautet also die Antwort?

Entfernen Sie den hässlichen Umriss und fügen Sie Ihre eigenen visuellen Hinweise hinzu, um den Fokus anzuzeigen.

Hier ist ein sehr einfaches Beispiel für das, was ich meine.

Ich entferne den Umriss und füge einen unteren Rand an :focus y :aktiv . Ich entferne auch die Standardränder an der oberen, linken und rechten Seite, indem ich sie auf transparent einstelle :focus y :aktiv (persönliche Vorliebe)

form,
label {
  margin: 1em auto;
}

label {
  display: block;
}

input {
  outline: none
}

input:focus,
input:active {
  border-color: transparent;
  border-bottom: 2px solid red
}

<form>
  <label>Click to see the input below to see the outline</label>
  <input type="text" placeholder="placeholder text" />
</form>

Versuchen wir also den obigen Ansatz mit unserem "realen" Beispiel von vorhin:

.wrapper {
  width: 500px;
  max-width: 100%;
  margin: 0 auto;
}

form,
label {
  margin: 1em auto;
}

label {
  display: block;
}

input {
  outline: none
}

input:focus,
input:active {
  border-color: transparent;
  border-bottom: 2px solid red
}

<div class="wrapper">

  <form>
    <label>Click on this text and then use the TAB key to naviagte inside the snippet.</label>
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
    <input type="text" placeholder="placeholder text" />
  </form>

  <form>
    First name:<br>
    <input type="text" name="firstname"><br> Last name:<br>
    <input type="text" name="lastname">
  </form>

  <form>
    <input type="radio" name="gender" value="male" checked> Male<br>
    <input type="radio" name="gender" value="female"> Female<br>
    <input type="radio" name="gender" value="other"> Other
  </form>

  <form>
    <label for="GET-name">Name:</label>
    <input id="GET-name" type="text" name="name">
  </form>

  <form>
    <label for="POST-name">Name:</label>
    <input id="POST-name" type="text" name="name">
  </form>

  <form>
    <fieldset>
      <legend>Title</legend>
      <input type="radio" name="radio" id="radio">
      <label for="radio">Click me</label>
    </fieldset>
  </form>

</div>

Dies kann durch die Verwendung externer Bibliotheken weiter ausgebaut werden, die auf der Idee aufbauen, den "Umriss" zu modifizieren, anstatt ihn ganz zu entfernen, wie Materialisieren

Sie können mit sehr wenig Aufwand etwas schaffen, das nicht hässlich ist und funktioniert.

body {
  background: #444
}

.wrapper {
  padding: 2em;
  width: 400px;
  max-width: 100%;
  text-align: center;
  margin: 2em auto;
  border: 1px solid #555
}

button,
.wrapper {
  border-radius: 3px;
}

button {
  padding: .25em 1em;
}

input,
label {
  color: white !important;
}

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.1/css/materialize.min.css" />

<div class="wrapper">
  <form>
    <input type="text" placeholder="Enter Username" name="uname" required>
    <input type="password" placeholder="Enter Password" name="psw" required>
    <button type="submit">Login</button>
  </form>
</div>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X