Jest to wspólny problem.
Domyślny zarys 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óra najbardziej poleca, jest outline:none
- która przy nieprawidłowym użyciu - katastrofa z powodu dostępności.
Więc ... jaki użytek ma zresztą zarys?
Jest bardzo sucho strona cięcie znalazłem który wyjaśnia wszystko dobrze.
Zapewnia wizualną informację zwrotną dla linków, które mają „fokus” podczas poruszania się po dokumencie internetowym za pomocą klawisza TAB (lub odpowiednika). Jest to szczególnie przydatne dla osób, które nie mogą używać myszy lub mają zaburzenia widzenia. Jeśli usuniesz kontur, Twoja witryna będzie niedostępna dla tych osób.
Ok, wypróbujmy ten sam przykład jak powyżej, teraz użyj TAB
klawisza 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 rozpoznać, gdzie jest fokus, bez klikania danych wejściowych?
A teraz spróbujmy outline:none
naszych zaufanych<input>
Po raz kolejny użyj TAB
klawisza do nawigacji po kliknięciu tekstu i zobacz, 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 ustalić, na czym koncentruje się? Jedynym znamiennym znakiem jest miganie kursora. Mój przykład powyżej jest zbyt uproszczony. W rzeczywistych sytuacjach na stronie nie ma tylko jednego elementu. Coś więcej w tym zakresie.
.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>
Porównajmy 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, co następuje
- Kontury są brzydkie
- Ich usunięcie utrudnia życie.
Więc jaka jest odpowiedź?
Usuń brzydki kontur i dodaj własne wizualne wskazówki wskazujące na skupienie.
Oto bardzo prosty przykład tego, co mam na myśli.
Usuwam kontur i dodam dolną ramkę na : focus i : active . Usuwam również domyślne obramowania u góry, po lewej i prawej stronie, ustawiając je jako przezroczyste na : focus i : active (preferencje osobiste)
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 próbujemy powyższego podejścia na naszym przykładzie „z prawdziwego świata” z wcześniejszego okresu:
.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 dodatkowo rozszerzyć, stosując biblioteki zewnętrzne, które opierają się na idei modyfikacji „konturu” w przeciwieństwie do usuwania go całkowicie jak w Materialise
Możesz skończyć z czymś, co nie jest brzydkie i działa przy niewielkim wysiłku
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>
input:focus, textarea:focus {outline: none;}