Кнопка завантаження показує синій контур при натисканні на нього


137

Я додав це, але все-таки синій контур з’являється при натисканні кнопки.

.btn:focus {
  outline: none;
}

як видалити цю некрасиву штучку?


спробуйте встановити :activeкнопку. Додатково: Щоб знайти проблему, використовуйте Інспектор у своєму браузері.
Адріан Преусс

1
Чи можете ви опублікувати свій трохи більше коду чи демонстрацію jsfiddle, щоб ми могли вам допомогти
Річа,

Не впевнений, що стосується кнопок, але завантажувальний додає поле-тінь до полів введення, які можна видалити за допомогою тіні: немає;
davidcondrey

3
FWIW, стиль фокусування важливий для навігації по клавіатурі.
Нейт Уіттакер

Зображення тут буде корисно
Курячий суп

Відповіді:


203

Можливо, ваші властивості будуть переохоплені. Спробуйте приєднати !importantдо свого коду разом із: active.

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

Також додайте поле-тінь, оскільки в іншому випадку ви все одно побачите тінь навколо кнопки.

Хоча це не є хорошою практикою використання! Важливо, я пропоную вам скористатися більш конкретним класом, а потім спробувати застосувати css із використанням! Важливо ...


@Janak Але чому це потрібно, якщо переосмислити: active?

Можу також додати, що при нуклеуванні з! Важливо, псевдокласи не потрібні

7
Якщо ви використовуєте Bootstrap 4, додайте box-shadow: none(і не забувши префікс -webkit-box-shadow: none) до цієї відповіді. Також зауважте, що Bootstrap 4 вже має .btn:focus { outline: none }у своїх класах btn.
Cooleronie

1
Візуальні підказки мають вирішальне значення, коли не пересуватися мишею. Якщо ви видалите контур, ви повинні додати ще деякі візуальні відгуки, інакше у вас буде калік вашого сайту.
Йозеф Енгельфрост

52

В останній версії Bootstrap я виявив, що видалення контуру не працює. І я мушу додати це, тому що є також тінь-бокс:

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

1
Це мені допомогло.
Вакс

Якщо ви хочете переконатися, що ви натискаєте всі свої кнопки, просто використовуйте кнопку {контур: жодне! Важливо; поле-тінь: немає! важливо; }
Дрю

52

Є вбудований клас завантаження shadow-noneдля відключення box-shadow(не outline) ( https://getbootstrap.com/docs/4.1/utilities/shadows/ ). Це видаляє тінь кнопки:

<button class='btn btn-primary shadow-none'>Example button</button>

Дуже дякую.
Микола Ценков

3
це найкраща відповідь
jmrueda

1
Це рішення, яке ви шукаєте. Це рішення, рухатися вздовж, рухатись уздовж. Завдяки цьому вирішив це для Firefox з Bootstrap 4.
swudev

Ця публікація стосується видалення контуру, а не тіні. На жаль, цей коментар вводить в оману.
Clay Records

Так, це була найкраща відповідь, але чому її не прийнято на перехресній кнопці "Оповіщення про відхилення"
Nawaraj

19

Спробуйте нижче код

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

4
Мені потрібна була лише ця частина, щоб видалити контур у chrome: button: focus {outline: none;}
TTT

13

Це сталося зі мною в Chrome (хоча не у Firefox). Я з'ясував, що outlineвласність була встановлена ​​Bootstrap як outline: 5px auto -webkit-focus-ring-color;. Вирішено шляхом заміни outlineвластивості пізніше в моєму користувацькому CSS наступним чином:

.btn.active.focus, .btn.active:focus, .btn.focus, .btn:active.focus, .btn:active:focus, .btn:focus {
    outline: 0;
}

12

це вирішить кнопку з текстом, кнопка лише піктограмою або кнопкою є посилання:

 <!--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;
}

якщо ви додасте border:none !important;

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

тоді кнопка стане меншим розміром при натисканні.



7

У Bootstrap 4 вони використовують box-shadow: 0 0 0 0px rgba(0,123,255,0);: фокус, я вирішив свою проблему

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);
}

4

Навіть після вилучення контуру з кнопки, встановивши її значення 0, все ще є смішна поведінка на кнопці при натисканні її розмір трохи скорочується. Тому я придумав оптимальне рішення:

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

Сподіваюся, це допомагає ...


3

Вам потрібно використовувати належне вкладення, а потім застосувати до нього стилі.

  • Клацніть правою кнопкою миші на кнопку та знайдіть для неї точний клас гніздування (Огляньте елемент, використовуючи firebug для firefox), (Огляньте елемент хрому).

  • Додайте стиль до всього класу класу. Тільки тоді це спрацювало б


3

Я вважав це досить корисним у своєму випадку після натискання кнопки.

$('#buttonId').blur();

3

Я вирішив просто зняти ширину межі :focus. Це видаляє некрасивий простір між контуром і закругленими кутами кнопки. Чомусь ця проблема трапляється лише на фактичних елементах кнопки, а не на <a class="btn">елементах.

button.btn:focus {
  border-width: 0;
}

3

Це може допомогти, якщо хтось все ще не вирішив це питання.

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


3

Ось моє рішення Boostrap 4 для видалення контуру кнопки

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

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

3

У мене був такий самий випуск, і для мене працював наступний код:

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

Сподіваючись, що це допоможе!


контур! да !! туза
Адам Кокс

3

Насправді в завантажувальній програмі визначаються всі змінні для всіх випадків. У вашому випадку вам просто потрібно перекрити змінну за замовчуванням '$ input-btn-focus-box-shadow' з файлу '_variables.scss'. Так: $input-btn-focus-box-shadow: none; Зауважте, що вам потрібно змінити цю змінну у власному користувальницькому "_yourCusomVarsFile.scss". І цей файл слід імпортувати в проект у першому порядку, а потім завантажувати так:

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

Завантажувальна програма vars має прапор "! Default".

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

Таким чином, у вашому файлі ви будете змінювати значення за замовчуванням. Ось ілюстрація:

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

Найперший варіант має більше пріоритету, ніж другий. Те саме стосується решти станів та випадків. Сподіваюся, це допоможе вам.

Ось файл '_variable.scss' з репо, де ви можете знайти всі початкові значення з bootstrap: https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss

Череє





1

Майте на увазі, якщо кнопка знаходиться в якорі, наприклад:

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

Додавання стилю до самої кнопки може виявитися недостатньо, можливо, вам потрібно буде додати a:focus, a:active { outline: none }правила CSS, де це доречно (це працювало для мене).



1

Іноді {outline: 0}проблему не вирішили, і ми можемо спробувати{box-shadow: none;}


1

Я використовую завантажувальний 4, ви можете використовувати контур і тінь.

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

Або якщо кнопка знаходиться всередині елемента, подібного до div, без заземлення, достатньо тіні.

#buttonId {
     box-shadow: none;
}

Приклад: https://codepen.io/techednelson/pen/XRwgRB


1

Якщо ви використовуєте версію 4.3 або вище, ваш код не працюватиме належним чином. Це те, що я використав. Це працювало для мене.

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

Ти маєш рацію. Не працює без -webkit-box-shadow: жодне! Важливо; рядок.
Емір

1

Замість того, щоб націлити на клавіші клавіш ( .btn ), тут я націлююсь на сам елемент кнопки , і він працює для мене.

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

І може використовувати shadow-noneклас для поля введення


0

Ось не-CSS метод. Використовуючи JQuery, просто видаляйте клас "фокус" щоразу, коли елемент клацається.

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

Цей метод може спричинити появу межі, а потім ненадовго відступити, що, на мою думку, не виглядає погано (схоже, це частина відповіді при натисканні кнопки).

Причиною, з якою я користувався .mousemove (), є те, що .click () та .mouseup () виявились неефективними.


2
ні. додати більше JavaScript для перемоги у CSS - це не найкраща практика. ІМХО.
Девід

0

Зміна цих значень спрацювала для мене. Я знайшов це, переглянувши Інструменти для розробників 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*/;
}

Це також зберігає тінь кнопки, вона лише змінює колір кнопки при натисканні.


0

Замініть точні заяви завантажувача:

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


0

Шлях SCSS для всіх елементів (не тільки кнопок):

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;
    }
  }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.