przycisk bootstrap pokazuje niebieski kontur po kliknięciu

142

Dodałem to, ale nadal pojawia się niebieski kontur po kliknięciu przycisku.

.btn:focus {
  outline: none;
}

jak usunąć tę brzydką rzecz?

user3522457
źródło
spróbuj ustawić :activedla przycisku. Dodatkowe: użyj Inspektora w przeglądarce, aby znaleźć problem.
Adrian Preuss
1
Czy możesz opublikować swój nieco więcej kodu lub demo jsfiddle, abyśmy mogli Ci pomóc
Richa
Nie jestem pewien co do przycisków, ale bootstrap dodaje box-shadow do pól wejściowych, które można usunąć za pomocą box-shadow: none;
davidcondrey
3
FWIW, stylizacja fokusa jest ważna dla nawigacji za pomocą klawiatury.
Nate Whittaker
Przydałoby się

Odpowiedzi:

210

Być może Twoje właściwości zostaną zastąpione. Spróbuj dołączyć !importantdo swojego kodu wraz z: active.

.btn:focus,.btn:active {
   outline: none !important;
   box-shadow: none;
}

Dodaj także cień pola, ponieważ w przeciwnym razie nadal będziesz widzieć cień wokół przycisku.

Chociaż nie jest to dobra praktyka w użyciu! Important, sugeruję użycie bardziej specyficznej klasy, a następnie spróbuj zastosować css z użyciem! Important ...

Janak
źródło
@Janak Ale dlaczego jest to konieczne przy zastępowaniu: active?
Mogę również dodać, że podczas nukowania z! Important, pseudoklasy nie są potrzebne
7
Jeśli używasz Bootstrap 4, dodaj box-shadow: none(i nie zapomnij prefiksu -webkit-box-shadow: none) do tej odpowiedzi. Zauważ również, że Bootstrap 4 ma już .btn:focus { outline: none }w swoich klasach btn.
Cooleronie,
1
W przypadku braku nawigacji za pomocą myszy kluczowe znaczenie mają wskazówki wizualne. Jeśli usuniesz kontur, musisz dodać inne wizualne informacje zwrotne, w przeciwnym razie Twoja witryna ulegnie uszkodzeniu.
Josef Engelfrost
62

Istnieją wbudowane klasy boostrap shadow-nonedo wyłączania box-shadow(nie outline) ( https://getbootstrap.com/docs/4.1/utilities/shadows/ ). To usuwa cień przycisku:

<button class='btn btn-primary shadow-none'>Example button</button>
Rinat
źródło
Dziękuję bardzo.
Nikolay Tsenkov
5
to najlepsza odpowiedź
jmrueda,
2
To jest rozwiązanie, którego szukasz. To jest rozwiązanie, idź dalej, idź dalej. Dzięki temu rozwiązałem to dla Firefoksa z Bootstrap 4.
swudev
Ten post dotyczy usuwania konturu, a nie cienia. Niestety, ten komentarz jest mylący.
Clay Records
Tak, to była najlepsza odpowiedź, ale dlaczego nie jest akceptowana na przycisku krzyżowym Alert
Dismissing
54

W najnowszej wersji Bootstrap odkryłem, że samo usuwanie konturu nie działa. I muszę to dodać, ponieważ jest też box-shadow:

.btn:focus, .btn:active {
  outline: none !important;
  box-shadow: none !important;
}
Chang
źródło
1
To mi pomogło.
Vahx
Jeśli chcesz się upewnić, że naciskasz wszystkie przyciski, po prostu użyj button {outline: none! box-shadow: brak! ważne; }
Drew
19

Spróbuj poniżej kodu

.button:active, 
 button:active,
.button:focus, 
 button:focus,
.button:hover, 
 button:hover{
    border:none !important;
    outline:none !important;
}
Piaszczysty
źródło
4
Potrzebowałem tylko tej części, aby usunąć kontur w chrome: button: focus {outline: none;}
TTT
13

Przydarzyło mi się to w przeglądarce Chrome (choć nie w przeglądarce Firefox). Dowiedziałem się, że outlinewłaściwość jest ustawiana przez Bootstrap jako outline: 5px auto -webkit-focus-ring-color;. Rozwiązany przez nadpisanie outlinewłaściwości później w moim niestandardowym CSS w następujący sposób:

.btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus {
    outline: 0;
}
barburakka
źródło
12

to rozwiąże przycisk z tekstem, przycisk tylko z ikoną lub przycisk to link:

 <!--1. button with a text -->
 <button type="button" class="btn btn-success" id="newWord">Save</button>

 <!--2. button only with a close icon -->
 <button type="button" class="close"></button>

 <!--3. button is a link -->
 <a class="btn btn-success btn-xs" href="#">Save</a>



button,
button:active,
button:focus, 
button:hover,
.btn,
.btn:active, 
.btn:focus, 
.btn:hover{   
    outline:none !important;
}

jeśli dodasz border:none !important;

{
    border:none !important;
    outline:none !important;
}

wtedy przycisk stanie się mniejszy po kliknięciu.

Wir
źródło
8

Spróbuj tego

.btn
{
    box-shadow: none;
    outline: none;
}
Subodh Sharma
źródło
7

W Bootstrap 4 używają box-shadow: 0 0 0 0px rgba(0,123,255,0);on: focus, si i rozwiązałem mój problem

a.active.focus,
a.active:focus,
a.focus,
a:active.focus,
a:active:focus,
a:focus,
button.active.focus,
button.active:focus,
button.focus,
button:active.focus,
button:active:focus,
button:focus,
.btn.active.focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn:active:focus,
.btn:focus {
    outline: 0;
    outline-color: transparent;
    outline-width: 0;
    outline-style: none;
    box-shadow: 0 0 0 0 rgba(0,123,255,0);
}
Slobodan Kovacevic
źródło
4

Może to pomóc, jeśli ktoś nadal ma nierozwiązane pytanie.

(function() {
  $('button').on('click', function() {
    $("#action").html("button was clicked");
    console.log("the button was clicked");
  });
})();
.btn-clear {
  background-color: transparent !important;
  border-style: none !important;
  cursor: pointer;
}

.btn-clear:active,
.btn-clear:focus {
  outline-style: none !important;
  outline-color: transparent;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!-- this button has default style -->
<button>Action</button>
<!-- this button is clear of style -->
<button class="btn-clear">Action</button>

<label id="action"></label>

Gaby Evangelista
źródło
4

Właśnie miałem ten sam problem i działał dla mnie następujący kod:

.btn:active, .btn:focus, .btn:active:focus, .btn.active:focus {
    outline: none !important;
}

.btn {
  margin:32px;
}
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript -->




<button type="button" class="btn btn-default">Button</button>

Mam nadzieję, że to pomoże!

Paweł
źródło
zarys! doh !! thud
Adam Cox
4

Nawet po usunięciu konturu z przycisku poprzez ustawienie jego wartości na 0, przycisk nadal zachowuje się dziwnie po kliknięciu, jego rozmiar nieco się zmniejsza. Wymyśliłem więc optymalne rozwiązanie:

.btn:focus {
   outline: none !important;
   box-shadow: 0 0 0 0;
}

Mam nadzieję że to pomoże...

hoodboy007
źródło
3

Musisz użyć odpowiedniego zagnieżdżenia, a następnie zastosować do niego style.

  • Kliknij prawym przyciskiem myszy przycisk i znajdź dokładne zagnieżdżenie klas za pomocą (Sprawdź element za pomocą firebuga dla firefoxa), (sprawdź element pod kątem chrome).

  • Dodaj styl całej klasie. Tylko wtedy to zadziała

Orahmax
źródło
3

Znalazłem to całkiem przydatne w moim przypadku po kliknięciu przycisku.

$('#buttonId').blur();
Danny Cullen
źródło
3

Zdecydowałem się po prostu usunąć szerokość obramowania :focus. To usuwa brzydką przestrzeń między konturem a zaokrąglonymi rogami przycisku. Z jakiegoś powodu ten problem występuje tylko w przypadku rzeczywistych elementów przycisku, a nie <a class="btn">elementów.

button.btn:focus {
  border-width: 0;
}
Jason
źródło
3

Oto moje rozwiązanie Boostrap 4, aby usunąć kontur przycisku

/*
* Boostrap 4
* Remove blue outline from button
*/

.btn:focus,
.btn:active {
  box-shadow: none;
}
0x1ad2
źródło
3

Właściwie w bootstrapie są zdefiniowane wszystkie zmienne dla wszystkich przypadków. W twoim przypadku wystarczy zastąpić domyślną zmienną „$ input-btn-focus-box-shadow” z pliku „_variables.scss”. Na przykład: $input-btn-focus-box-shadow: none; pamiętaj, że musisz nadpisać tę zmienną we własnym niestandardowym pliku „_yourCusomVarsFile.scss”. I ten plik należy zaimportować do projektu w pierwszej kolejności, a następnie załadować w następujący sposób:

@import "yourCusomVarsFile";
@import "bootstrap/scss/bootstrap";
@import "someOther";

Zmienne bootstraps są oznaczone flagą '! Default'.

$input-focus-box-shadow: $input-btn-focus-box-shadow !default;

Więc w swoim pliku zastąpisz wartości domyślne. Oto ilustracja:

$input-focus-box-shadow: none;
$input-focus-box-shadow: $input-btn-focus-box-shadow !default;

Pierwsza zmienna ma wyższy priorytet niż druga. To samo dotyczy pozostałych stanów i przypadków. Mam nadzieję, że to ci pomoże.

Oto plik „_variable.scss” z repozytorium, w którym można znaleźć wszystkie wartości inicjałów z bootstrap: https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss

Chears

Tsurule Vol
źródło
2
a:focus {
  outline: none;
}

to działa dla mnie na BS3

Alex LH
źródło
2

Czasami {outline: 0}nie rozwiązaliśmy problemu i możemy spróbować{box-shadow: none;}

xhunter
źródło
2

Ten działał dla mnie w Bootstrap 4:

.btn {border-color: transparent;}

Steffo Dimfelt
źródło
2

Próbować

.btn-primary:focus { 
  box-shadow: none !important; 
}
Punitkumar Kulli
źródło
1

Pamiętaj, jeśli przycisk znajduje się wewnątrz kotwicy, na przykład:

<a href='some_link'>
    <button class='btn'>Button</button>
</a>

Dodanie stylu do samego przycisku może nie wystarczyć, może być konieczne dodanie a:focus, a:active { outline: none }reguł CSS tam, gdzie jest to konieczne (to zadziałało).

RyanT
źródło
1

Wypróbuj poniższe

.bootstrap-select .dropdown-toggle:focus 
 {
          outline: 0 !important;
 }
Iryna Koshynska
źródło
1

Używam bootstrap 4, możesz użyć konturu i cienia pola.

#buttonId {
    box-shadow: none;
    outline: none;
}

Lub jeśli przycisk jest wewnątrz elementu takiego jak div bez tła, wystarczy box-shadow.

#buttonId {
     box-shadow: none;
}

Przykład: https://codepen.io/techednelson/pen/XRwgRB

webtechnelson
źródło
1

Jeśli używasz wersji 4.3 lub nowszej, kod nie będzie działał poprawnie. To jest to, czego użyłem. U mnie to zadziałało.

.btn:focus, .btn:active {
    outline: none !important;
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
}
Vaibhav Singh
źródło
Masz rację. Nie działa bez -webkit-box-shadow: none! linia.
Emir
1

Zamiast kierować na klasę przycisku ( .btn ), tutaj kieruję się na sam element przycisku i to działa dla mnie.

        button:focus {
          outline:none !important;
          box-shadow:none !important;
        }

I może użyć shadow-noneklasy jako pola wejściowego

Nawaraj
źródło
1

Sposób SCSS dla wszystkich elementów (nie tylko przycisków):

body {
  * {
    &:focus, &.focus,
    &:active, &.active {
      outline: transparent none 0 !important;
      box-shadow: 0 0 0 0 rgba(0,123,255,0) !important;
      -webkit-box-shadow: none !important;
    }
  }
}
gildniy
źródło
0

Oto metoda inna niż CSS. Korzystając z JQuery, po prostu usuń klasę „focus” po każdym kliknięciu elementu.

$(".btn").mousemove(function(element) { $(this).removeClass("focus"); });

Ta metoda może spowodować, że obramowanie pojawi się, a następnie na krótko wycofa, co moim zdaniem nie wygląda źle (wygląda jak część odpowiedzi po kliknięciu przycisku).

Powodem, dla którego użyłem .mousemove () jest to, że .click () i .mouseup () okazały się nieskuteczne.

Wesley Kelly
źródło
2
neh. dodanie więcej javascript, aby pokonać CSS nie jest najlepszą praktyką. MOIM ZDANIEM.
David
0

Zmiana tych wartości działała na mnie. Znalazłem to, patrząc na narzędzia programistyczne Chrome

.btn-primary:not(:disabled):not(.disabled).active,
.btn-primary:not(:disabled):not(.disabled):active,
.show>.btn-primary.dropdown-toggle {
    color: #fff;
    background-color: /*Change This*/;
    border-color: /*Change This*/;
}

To również zachowuje cień przycisku, zmienia kolor przycisku tylko po kliknięciu.

Ivan Aldwin A. Cristobal
źródło
0

Zastąp dokładne instrukcje bootstrap:

.btn-primary.focus, .btn-primary:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{
 box-shadow: none;
}
ZEF
źródło
0

Zmień kolor obramowania z powrotem na szary

.btn:focus,
.btn:active{
 border: 1px solid #ced4da !important;
}
Aransiola Oluwaseun
źródło