Jak usunąć podświetlenie obramowania na wprowadzanym elemencie tekstowym

Gdy element html jest "focused" (aktualnie zaznaczony/z zakładkami w to), wiele przeglądarek (przynajmniej Safari i Chrome) będzie umieszczać wokół niego niebieską ramkę.

Dla układu, nad którym pracuję, to rozprasza i nie wygląda dobrze.

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

FireFox nie wydaje się tego robić, a przynajmniej pozwoli mi kontrolować go za pomocą

border: x;
Gdyby ktoś mógł mi powiedzieć jak działa IE, byłbym ciekaw. [[2]}ale namówienie Safari do usunięcia tej małej flary byłoby nieźle.
Author: TylerH, 2009-09-22

14 answers

W Twoim przypadku spróbuj:

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

Lub ogólnie, aby oddziaływać na wszystkie podstawowe elementy formy:

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

W komentarzach, Noah Whitmore zasugerował, aby jeszcze bardziej poprzeć elementy, które mają atrybut contenteditable ustawiony na true (faktycznie czyniąc je typem elementu wejściowego). Poniżej powinny być kierowane do tych, jak również (w przeglądarkach obsługujących CSS3):

[contenteditable="true"]:focus {
    outline: none;
}
Chociaż nie polecam, ze względu na kompletność, zawsze można wyłączyć fokus zarys na Wszystko z tym:
*:focus {
    outline: none;
}

Należy pamiętać, że zarys ostrości jest funkcją dostępności i użyteczności; podpowiada użytkownikowi, który element jest obecnie skupiony.

 894
Author: Cᴏʀʏ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:45

Aby usunąć go ze wszystkich wejść

input {
 outline:none;
}
 53
Author: marcjae,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-14 20:23:00

Jest to stary wątek, ale w celach informacyjnych ważne jest, aby pamiętać, że wyłączenie konturu elementu wejściowego nie jest zalecane, ponieważ utrudnia to dostępność.

Właściwość outline istnieje nie bez powodu-zapewnia użytkownikom wyraźne wskazanie ostrości klawiatury. Więcej informacji i dodatkowe źródła na ten temat można znaleźć w http://outlinenone.com/

 20
Author: Boaz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-30 13:29:50

Użyj tego kodu:

input:focus {
    outline: 0;
}
 6
Author: Touhid Rahman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-22 20:35:46

Możesz użyć CSS, aby to wyłączyć! Jest to kod, którego używam do wyłączania niebieskiej ramki:

*:focus {
outline: none;
}

To usunie niebieską obwódkę!

Oto działający przykład: JSfiddle.net

Mam nadzieję, że to pomoże!
 6
Author: 1010,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-23 01:38:40

Jest to częsty problem.

Domyślny kontur renderowany przez przeglądarki jest brzydki.

Zobacz na przykład:

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>

Najczęstszą "poprawką", którą najbardziej polecam, jest outline:none - która jeśli zostanie użyta nieprawidłowo - jest katastrofą dla dostępności.


Więc...jaki jest pożytek z obrysu?

Jestbardzo sucha Strona znalazłem, który wyjaśnia wszystko dobrze.

It zapewnia wizualną informację zwrotną dla linków, które mają "focus", gdy poruszanie się po dokumencie Internetowym za pomocą klawisza TAB (lub równoważnego). To jest szczególnie przydatne dla osób, które nie mogą korzystać z myszy lub mają wizualny / align = "left" / Jeśli usuniesz kontur, który tworzysz na swojej stronie niedostępne dla tych ludzi.

Ok, wypróbujmy ten sam przykład jak powyżej, Teraz użyj klawisza TAB do nawigacji.

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>

Zauważ, jak możesz stwierdzić, gdzie ostrość jest nawet bez klikania wejścia?

Teraz spróbujmy outline:none na naszej zaufanej <input>

Więc jeszcze raz użyj klawisza TAB, aby nawigować po kliknięciu tekstu i zobaczyć, co się stanie.

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>

Widzisz, jak trudniej jest zorientować się, gdzie jest ostrość? Jedynym znakiem mówiącym jest miganie kursora. Mój przykład powyżej jest zbyt uproszczony. W realnych sytuacjach nie miałbyś tylko jednego elementu na stronie. Coś więcej na ten temat to.

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

Teraz porównaj to z tym samym szablonem, jeśli zachowamy kontur:

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

Więc ustaliliśmy następujące

  1. kontury są brzydkie
  2. Usunięcie ich utrudnia życie.

Więc jaka jest odpowiedź?

Usuń brzydki kontur i dodaj własne wskazówki wizualne, aby wskazać ostrość.

Oto bardzo prosty przykład o co mi chodzi.

Usuwam kontur i dodaję dolną ramkę na : focus i : active. Usuwam również domyślne obramowania z górnej, lewej i prawej strony, ustawiając je na przezroczyste na :focus i :active (osobiste preferencje)

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>
Tak więc, spróbujemy podejścia powyżej z naszym" rzeczywistym świecie " przykład z poprzedniego: [26]}

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

Można to jeszcze rozszerzyć o korzystanie z zewnętrznych bibliotek, które opierają się na idei modyfikowania "konturu", a nie usuwania go całkowicie tak, jak Materialize {26]}

Możesz skończyć z czymś, co nie jest brzydkie i działa z bardzo małym wysiłkiem

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>
 6
Author: I haz kode,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-24 11:45:54

Możesz spróbować również

input[type="text"] {
outline-style: none;
}

Lub

.classname input{
outline-style: none;
}
 3
Author: Santosh Khalse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-16 06:17:54

Usuń kontur, gdy fokus jest na elemencie, używając poniższej właściwości CSS:

input:focus {
    outline: 0;
}

Ta właściwość CSS usuwa kontur dla wszystkich pól wejściowych na fokusie lub używa pseudo klasy, aby usunąć kontur elementu za pomocą poniższej właściwości CSS.

.className input:focus {
    outline: 0;
} 

Ta właściwość usuwa obrys wybranego elementu.

 2
Author: Shailesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-20 07:20:52

Usuwanie wszystkich stylów ostrości jest złe dla użytkowników dostępności i klawiatury w ogóle. Ale kontury są brzydkie, a zapewnienie niestandardowego, skoncentrowanego stylu dla każdego elementu interaktywnego może być prawdziwym bólem.

Więc najlepszym kompromisem, jaki znalazłem, jest pokazanie stylów konturu tylko wtedy, gdy wykryjemy, że użytkownik używa klawiatury do nawigacji. Zasadniczo, jeśli użytkownik naciśnie TAB, pokazujemy kontury, a jeśli użyje myszki, ukrywamy je.

To nie powstrzymuje cię od pisania niestandardowych style ostrości dla niektórych elementów, ale przynajmniej zapewnia dobrą domyślną.

Tak to robię:

// detect keyboard users

const keyboardUserCssClass = "keyboardUser";

function setIsKeyboardUser(isKeyboard) {
  const { body } = document;
  if (isKeyboard) {
   body.classList.contains(keyboardUserCssClass) || body.classList.add(keyboardUserCssClass);
  } else {
   body.classList.remove(keyboardUserCssClass);
  }
}

// This is a quick hack to activate focus styles only when the user is
// navigating with TAB key. This is the best compromise we've found to
// keep nice design without sacrifying accessibility.
document.addEventListener("keydown", e => {
  if (e.key === "Tab") {
   setIsKeyboardUser(true);
  }
});
document.addEventListener("click", e => {
  // Pressing ENTER on buttons triggers a click event with coordinates to 0
  setIsKeyboardUser(!e.screenX && !e.screenY);
});

document.addEventListener("mousedown", e => {
  setIsKeyboardUser(false);
});
body:not(.keyboardUser) *:focus {
  outline: none;
}
<p>By default, you'll see no outline. But press TAB key and you'll see focussed element</p>
<button>This is a button</button>
<a href="#">This is anchor link</a>
<input type="checkbox" />
<textarea>textarea</textarea>
<select/>
 2
Author: Tom Esterez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-01 21:50:58

Próbowałem wszystkich odpowiedzi i nadal nie mogłem dostać moje do pracy na Mobile , dopóki nie znalazłem -webkit-tap-highlight-color.

Więc to, co dla mnie zadziałało, to...
* { -webkit-tap-highlight-color: transparent; }
 2
Author: Oneezy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-05 09:44:43

To było mylące mnie przez jakiś czas, dopóki nie odkryłem, że linia nie jest ani granicą, ani konturem, to był cień. Więc aby go usunąć musiałem użyć tego:

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

    outline:none !important;
    outline-width: 0 !important;
    box-shadow: none;
    -moz-box-shadow: none;
    -webkit-box-shadow: none;
}
 2
Author: Rikard Askelöf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-24 08:10:36

Spróbuj również

.form-group input {

  display: block;
  background: none;
  padding: 0.175rem 0.175rem 0.0875rem;
  font-size: 1.4rem;
  border-width: 0;
  border-color: transparent;
  line-height: 1.9;
  width: 100%;
  color: #ccc;
  transition: all 0.28s ease;
  box-shadow: none;

}
 1
Author: Kondal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-06 04:52:09

Żadne z rozwiązań nie działało u mnie w Firefoksie.

Poniższe rozwiązanie zmienia styl obramowania dla Firefoksa i ustawia kontur na brak dla innych przeglądarek.

Skutecznie zmieniłem obramowanie ostrości z niebieskiego blasku 3px na styl obramowania pasujący do obramowania obszaru tekstowego. Oto kilka stylów obramowania:

Przerywana granica (border 2px przerywana czerwona): Przerywana granica. border 2px dashed red

Nie ma granicy! (border 0px):
Nie ma granicy. border: 0px

Textarea border (border 1px solid gray): Textarea border. border 1px solid gray

Oto kod:

input:focus, textarea:focus {
    outline: none; /** For Safari, etc **/
    border:1px solid gray; /** For Firefox **/
}

#textarea  {
  position:absolute;
  top:10px;
  left:10px;
  right:10px;
  width:calc(100% - 20px);
  height:160px;
  display:inline-block;
  margin-top:-0.2em;
}
<textarea id="textarea">yo</textarea>
 1
Author: 1.21 gigawatts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-11 21:01:01

Możesz usunąć pomarańczową lub niebieską obramowanie (obramowanie) wokół pól tekstowych / wejściowych, używając: obramowanie: none

input {
    background-color: transparent;
    border: 0px solid;
    height: 20px;
    width: 160px;
    color: #CCC;
    outline:none !important;
}
 0
Author: Rizo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-27 20:08:28