Удалить текстовый ввод Safari / Chrome / текстовое свечение


337

Мне интересно, возможно ли убрать стандартное сине-желтое свечение, когда я нажимаю на область ввода текста / текста с помощью CSS?


6
@ Steve, еще одна причина отключить его, если вы хотите, чтобы эффект свечения работал во всех браузерах, используя: focus вместо плохо поддерживаемого стиля контура.
Langdon

90
Это действительно раздражает, когда люди начинают философский разговор о том, является ли что-то «правильным», когда вопрос технический.
Тим

2
Я делаю электронную таблицу в Интернете, Стив, так что она подойдет для моего использования. Это зависит, но если это просто простая форма, вы должны оставить схему как есть.
william44isme

4
Я думаю, что вполне нормально отключить его и сделать кастом: эффект фокуса с помощью css ...
ithil

Кроме того, знание того, как что-то отключить, не означает, что это необратимо. Любой, кто работает с любым клиентом, знает, что он может захотеть увидеть что-то визуализированное одним способом, а затем переключить его обратно на оригинальный / стандартный способ. Их лекция о доступности не изменит это желание и не сделает кого-либо счастливым.
JakeGould

Ответы:


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

Несмотря на то, что утверждается, что сохранение свечения / контура на самом деле выгодно для доступности, поскольку это может помочь пользователям увидеть, какой элемент в данный момент сфокусирован.

Вы также можете использовать псевдоэлемент ': focus' для нацеливания на входы только тогда, когда пользователь выбрал их.

Демо: https://jsfiddle.net/JohnnyWalkerDesign/xm3zu0cf/


2
Отлично, большое спасибо. Также интересно, могу ли я удалить опцию изменения размера текстовой области (в правом нижнем углу текстовой области)?
Алек Смарт

3
+1 за осторожность; пожалуйста, постарайтесь избегать любых действий, которые нарушают ожидания пользователя относительно работы его платформы; вы можете нанести вред их производительности и сделать ваш веб-сайт более сложным в использовании.
Роб

6
Удалите мою опцию изменения размера chrome / safari textarea на свой страх и риск! Я считаю это действительно полезным, незаменимым даже на некоторых сайтах.
JeeBee

5
для избавления от ручки изменения размера: resize: нет;
Даниэль

22
нет коробка-тень: нет;
стикс

92

Этот эффект может возникать и на не входных элементах. Я нашел следующие работы в качестве более общего решения

:focus {
  outline-color: transparent;
  outline-style: none;
}

Обновление: возможно, вам не придется использовать :focusселектор. Если у вас есть элемент, скажем <div id="mydiv">stuff</div>, и вы получили внешнее свечение от этого элемента div, просто примените как обычно:

#mydiv {
  outline-color: transparent;
  outline-style: none;
}

Это работает, например, для <button>элементов, которые не особенно выигрывают от свечения на фокусе, так как в основном вы все равно нажимаете на него.
Касимир

1
Принятый ответ не работал для меня на Chrome на OSX. Это решение сделало свою работу.
Барт

Кроме того, используя эту технику, вы можете сохранить фокус, но переопределите значение контура, чтобы оно было сплошным цветом по вашему выбору и т. Д., Чтобы соответствовать стилю вашего сайта, если его удаление полностью не является удовлетворительным.
Нил Монро

1
У меня не работала последняя версия chrome45.0.2454.101 m
J86

Этот ответ от @ Carl-W не следует упускать из виду! - Это было полезно при использовании jQuery для ссылки на якорь, который был div. Я перезагружал iframe в div, затем вручную переходил на якорь без перезагрузки. Это прокрутило бы страницу вниз до якоря, но у всего div было синее внешнее свечение. Добавил этот CSS в элемент div, и это сработало! - ПРИМЕЧАНИЕ: я не использовал :focusдля селектора, я просто поставил outline-colorи outline-styleна моем диве css.
Уэйд

13

Изменение размера текстовой области в браузерах на основе webkit:

Установка max-height и max-width на textarea не приведет к удалению визуального маркера изменения размера. Пытаться:

resize: none;

(и да, я согласен с «стараться избегать любых действий, которые нарушают ожидания пользователя», но иногда это имеет смысл, например, в контексте веб-приложения)

Чтобы настроить внешний вид элементов формы webkit с нуля:

-webkit-appearance: none;

3
Кроме того , можно разрешить изменение размеров только в одном направлении, что может исправить его взаимодействие с некоторой разметкой без отключения его полностью: возможные значения для изменения размера являются none, both, horizontal, verticalи inherit.
Boann

Мне нравится решение, предлагаемое здесь с -webkit-Appearance: none; - удаляет ВСЕ стили из элементов ввода, так что вы можете стилизовать их, как вам нужно. Спасибо!
Hanazair

Я не знаю, почему это так много голосов, это не ответ на вопрос вообще.
паддотк

7

Карл W :

Этот эффект может возникать и на не входных элементах. Я нашел следующие работы в качестве более общего решения

:focus {
  outline-color: transparent;
  outline-style: none;
}

Я объясню это:

  • :focusозначает, что это стили элементов, которые находятся в фокусе. Итак, мы разрабатываем элементы в фокусе.
  • outline-color: transparent; означает, что голубое свечение прозрачно.
  • outline-style: none; делает то же самое.

5

Я испытал это на divсобытии, у которого было событие щелчка, и после 20 некоторых поисков я нашел этот фрагмент, который спас мой день.

-webkit-tap-highlight-color: rgba(0,0,0,0);

Это отключает подсветку кнопок по умолчанию в мобильных браузерах webkit


4

Это решение для людей, которые заботятся о доступности .

Пожалуйста, не используйте outline:none; для отключения очертания фокуса. Вы убиваете доступность сети, если вы делаете это. Существует доступный способ сделать это.

Проверьте эту статью которую я написал, чтобы объяснить, как убрать границу доступным способом.

Короче говоря, идея состоит в том, чтобы показывать только контурную границу, когда мы обнаруживаем пользователя клавиатуры. Как только пользователь начинает использовать свою мышь, мы отключаем контур. В результате вы получаете лучшее из двух.


2

Если вы хотите убрать свечение от кнопок в Bootstrap (что, на мой взгляд, не обязательно плохой UX), вам понадобится следующий код:

.btn:focus, .btn:active:focus, .btn.active:focus{
  outline-color: transparent;
  outline-style: none;
}

Спасибо. .btn:active:focusнеобходимо было убрать свечение, удерживая кнопку нажатой.
Homerjam

2

Это решение сработало для меня.

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

1

иногда это происходит кнопки также затем использовать ниже, чтобы удалить внешнюю линию

input:hover
input:active, 
input:focus, 
textarea:active,
textarea:hover,
textarea:focus, 
button:focus,
button:active,
button:hover
{
    outline:0px !important;
}

0
<select class="custom-select">
        <option>option1</option>
        <option>option2</option>
        <option>option3</option>
        <option>option4</option>
</select>

<style>
.custom-select {
        display: inline-block;
        border: 2px solid #bbb;
        padding: 4px 3px 3px 5px;
        margin: 0;
        font: inherit;
        outline:none; /* remove focus ring from Webkit */
        line-height: 1.2;
        background: #f8f8f8;

        -webkit-appearance:none; /* remove the strong OSX influence from Webkit */

        -webkit-border-radius: 6px;
        -moz-border-radius: 6px;
        border-radius: 6px;
    }
    /* for Webkit's CSS-only solution */
    @media screen and (-webkit-min-device-pixel-ratio:0) { 
        .custom-select {
            padding-right:30px;    
        }
    }

    /* Since we removed the default focus styles, we have to add our own */
    .custom-select:focus {
        -webkit-box-shadow: 0 0 3px 1px #c00;
        -moz-box-shadow: 0 0 3px 1px #c00;
        box-shadow: 0 0 3px 1px #c00;
    }

    /* Select arrow styling */
    .custom-select:after {
        content: "▼";
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        font-size: 60%;
        line-height: 30px;
        padding: 0 7px;
        background: #bbb;
        color: white;

        pointer-events:none;

        -webkit-border-radius: 0 6px 6px 0;
        -moz-border-radius: 0 6px 6px 0;
        border-radius: 0 6px 6px 0;
    }
</style>

0

Я нашел полезным удалить контур на кнопке ввода типа «раздвижная дверь», потому что контур не закрывает правую «шапку» изображения раздвижной двери, делая состояние фокусировки немного шатким.

input.slidingdoorbutton:focus { outline: none;}

0

Мне просто нужно было удалить этот эффект из моих полей ввода текста, и я не мог заставить другие методы работать правильно, но это то, что работает для меня;

input[type="text"], input[type="text"]:focus{
            outline: 0;
            border:none;
            box-shadow:none;

    }

Протестировано в Firefox и в Chrome.


0

Конечно! Вы также можете удалить синюю рамку со всех элементов HTML, используя *

*{
    outline-color: transparent;
    outline-style: none;
  }

И

 *{
     outline: none;   
   }
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.