Удалить Safari / Chrome textinput / textarea glow

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


person Alec Smart    schedule 01.06.2009    source источник
comment
@Steve, еще одна причина отключить его - если вы хотите, чтобы эффект свечения работал во всех браузерах, используя: focus вместо плохо поддерживаемого стиля контура.   -  person Langdon    schedule 09.03.2010
comment
Действительно раздражает, когда люди начинают философский разговор о том, правильно ли что-то делать, когда вопрос носит технический характер.   -  person tim    schedule 22.03.2013
comment
Я делаю электронную таблицу, Стив, так что она мне подходит. Это зависит от обстоятельств, но если это простая форма, вы должны оставить схему как есть.   -  person william44isme    schedule 12.08.2013
comment
Я думаю, что вполне нормально отключить его и создать эффект custom: focus с помощью css ...   -  person ithil    schedule 30.10.2013
comment
Кроме того, знание того, как что-то отключить, не означает, что это необратимо. Любой, кто работает с любым клиентом, знает, что он может захотеть увидеть что-то, отрендеренное одним способом, а затем переключить его обратно на исходный / стандартный способ. Чтение им лекций о доступности не изменит этого желания и не сделает кого-либо счастливым.   -  person Giacomo1968    schedule 12.02.2018
comment
@tim Это так забавно, потому что, если вы говорите что-то вроде, в этом нет двусмысленности, люди в основном перестают это делать. Но затем ОП сказал, что мне интересно, если ... вместо того, как я могу ...   -  person Nathan    schedule 22.04.2018


Ответы (12)


Изменить (11 лет спустя): не делайте этого, если только вы не собираетесь предоставить запасной вариант, чтобы указать, какой элемент активен. В противном случае это вредит доступности, поскольку по существу удаляет указание, показывающее, какой элемент в документе имеет фокус. Представьте, что вы пользуетесь клавиатурой и не знаете, с каким элементом вы можете взаимодействовать. Пусть здесь доступность превыше эстетики.

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

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

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

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

person ajm    schedule 01.06.2009
comment
Отлично, большое спасибо. Также интересно, могу ли я также удалить параметр изменения размера текстового поля (в правом нижнем углу текстового поля)? - person Alec Smart; 01.06.2009
comment
+1 за предостережение; пожалуйста старайтесь избегать любых действий, которые нарушают ожидания пользователя относительно работы их платформы; вы действительно можете снизить их производительность и затруднить использование вашего веб-сайта. - person Rob; 01.06.2009
comment
Да, установите максимальную высоту и максимальную ширину. - person Tyler Rash; 01.06.2009
comment
и @ajm, спасибо! Я не знал этого, я думал, что он здесь, чтобы остаться без возможности исправить это. - person marcgg; 01.06.2009
comment
Удалите мою опцию изменения размера текстового поля chrome / safari на свой страх и риск! Я нахожу это действительно полезным, незаменимым даже на некоторых сайтах. - person JeeBee; 01.06.2009
comment
Не удаляю опцию изменения размера, но подумал, что на всякий случай стоит знать :) - person Alec Smart; 01.06.2009
comment
@Marc G: Здесь это не имеет значения. Вопрос касался отключения функции изменения размера текстового поля в Safari и Chrome - функции, которой нет в IE. - person Tyler Rash; 01.06.2009
comment
Очень интересно, что это общее правило CSS, кажется, используется очень мало. - person Liam; 16.12.2009
comment
это не подходит для css2.1, есть ли другой способ? - person ; 16.01.2011
comment
для избавления от ручки изменения размера: resize: none; - person Daniel; 15.02.2012
comment
Это не полностью работает в chrome (textarea). Вам также нужно установить box-shadow:none; ... это становится кошмаром. - person Cory Mawhorter; 26.05.2013
comment
Это отличное решение для опытных веб-разработчиков, просто убедитесь, что вы реализуете другой способ четко видеть, какой элемент в настоящее время находится в фокусе. - person Micah; 23.01.2015
comment
Я использую это для нажатых кнопок, но я должен поставить! Important, чтобы он работал в моем приложении node-webkit (на основе хрома). кнопка {схема: нет! важно; } - person TKoL; 29.03.2015
comment
Мне также пришлось установить border:none; box-shadow:none в моем случае для затронутой текстовой области. - person mz2; 05.08.2015
comment
Ничего из вышеперечисленного у меня не сработало. Использование Chrome version 45.0.2454.101 m - person J86; 04.10.2015
comment
Вы пропустили "выбор" textarea, input, button, select { outline: none; } - person Haje; 22.12.2017

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

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

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

#mydiv {
  outline-color: transparent;
  outline-style: none;
}
person Carl W    schedule 21.07.2011
comment
Это работает, например, для <button> элементов, которые не особо выигрывают от свечения в фокусе, поскольку в большинстве случаев вы все равно щелкаете по нему. - person kasimir; 28.11.2013
comment
Принятый ответ не сработал для меня в Chrome на OSX. Это решение сделало свою работу. - person Bart; 12.05.2014
comment
Также, используя эту технику, вы можете сохранить фокус, но переопределить значение контура, чтобы он был сплошным цветом по вашему выбору и т. Д., Чтобы соответствовать стилю вашего сайта, если его полное удаление не является полностью удовлетворительным. - person Neil Monroe; 04.02.2015
comment
Не работает у меня на последней версии Chrome 45.0.2454.101 m - person J86; 04.10.2015
comment
Этот ответ от @ Carl-W нельзя упускать из виду! - Это было полезно при использовании jQuery для ссылки на привязку, которая была div. Я перезагружал iframe в div, а затем вручную переходил к привязке без перезагрузки. Он прокручивал страницу вниз до привязки, но весь div имел синее внешнее свечение. Добавил этот CSS в элемент div, и это сработало! - ПРИМЕЧАНИЕ: я не использовал :focus для селектора, я просто поместил outline-color и outline-style в CSS моего div. - person Wade; 01.09.2017

При изменении размера текстового поля в браузерах на основе webkit:

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

resize: none;

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

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

-webkit-appearance: none;
person Thomas Maas    schedule 02.06.2009
comment
Также возможно разрешить изменение размера только в одном направлении, что может исправить его взаимодействие с некоторыми макетами, не отключая его полностью: возможные значения для изменения размера: none, both, horizontal, vertical и inherit. - person Boann; 28.07.2012
comment
Мне нравится предлагаемое здесь решение с '-webkit-appearance: none;' - удаляет ВСЕ стили из элементов ввода, чтобы вы могли стилизовать их по своему усмотрению. Спасибо! - person hanazair; 15.10.2014
comment
Я не знаю, почему у него так много голосов, это вообще не ответ на вопрос. - person paddotk; 14.09.2017

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

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

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

person Michael    schedule 20.11.2015

Карл В.:

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

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

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

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

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

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

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

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

person Wim Mostmans    schedule 28.06.2016

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

.btn:focus, .btn:active:focus, .btn.active:focus{
  outline-color: transparent;
  outline-style: none;
}
person Kyle S    schedule 26.06.2014
comment
Спасибо. .btn:active:focus необходимо было убрать свечение, удерживая кнопку нажатой. - person homerjam; 15.01.2015

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

input:focus {
    outline: none !important;
    box-shadow: none !important;
}
person Harsh Prajapati    schedule 19.11.2019

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

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

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

input.slidingdoorbutton:focus { outline: none;}
person Rich Finelli    schedule 19.02.2014

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

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

    }

Проверено в Firefox и Chrome.

person Martyn Shutt    schedule 03.08.2015

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

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

И

 *{
     outline: none;   
   }
person Santosh Khalse    schedule 25.01.2017