W każdym razie, aby zapobiec niebieskiemu podświetlaniu elementów w Chrome podczas szybkiego klikania?


123

Przez większość czasu się tym nie martwię, ale mam karuzelę obrazów i jeśli szybko kliknę na następny i poprzedni element div, zostaną one podświetlone w Chrome.

Próbowałem użyć konturu: brak, ale bez efektu. Czy są jakieś rozwiązania?


Nie widzę tego efektu na aktualnej wersji Chrome
Billal Begueradj

Wiem, że Twój przypadek użycia jest inny, ale nie polecam tego robić każdemu, kto chciałby usunąć to ze wszystkich linków. Próbowałem usunąć to w PWA, ale bez wizualnej informacji zwrotnej użytkownik postrzega aplikację jako wolniejszą.
collimarco

Odpowiedzi:


170

Oprócz linku dostarczonego przez Floremin , który czyści zaznaczenie tekstu za pomocą JavaScript w celu „wyczyszczenia” zaznaczenia, możesz również użyć czystego CSS, aby to osiągnąć. CSS jest tutaj ...

.noSelect {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

Po prostu dodaj class="noSelect"atrybut do elementu, do którego chcesz zastosować tę klasę. Gorąco polecam wypróbowanie tego rozwiązania CSS. Nie ma nic złego w używaniu JavaScript, po prostu uważam, że może to być potencjalnie łatwiejsze i trochę uporządkować kod.

Chrome na Androida -webkit-tap-highlight-color: transparent; to dodatkowa reguła, z którą możesz poeksperymentować, aby uzyskać obsługę Androida.


1
Tylko w przypadku przeglądarki Chrome prawdopodobnie potrzebujesz tylko user-selecti webkit-user-select.
smts

Jest to rozwiązanie, z którego korzystam, ponieważ mam tylko problem z podświetlaniem w Chrome i działa świetnie. Dziękujemy wszystkim, którzy wzięli udział!
Smith

36
Nie udało się go uruchomić z Chrome na Androida. Musiałem skorzystać-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
Iwazaru

25
-webkit-tap-highlight-color: transparent; jest kluczową częścią w Chrome
FisNaN

Chrom na Androidzie -webkit-tap-highlight-color: przezroczysty; - Pracował dla mnie dzięki!
CK Munn

213

W przypadku przeglądarki Chrome na Androida możesz użyć właściwości CSS -webkit-tap-highlight-color :

-webkit-tap-highlight-color to niestandardowa właściwość CSS, która ustawia kolor podświetlenia, które pojawia się nad łączem, gdy jest ono dotykane. Podświetlenie wskazuje użytkownikowi, że jego dotknięcie jest pomyślnie rozpoznawane, i wskazuje, którego elementu dotyka.

Aby całkowicie usunąć podświetlenie, możesz ustawić wartość na transparent:

-webkit-tap-highlight-color: transparent;

Pamiętaj, że może to mieć wpływ na dostępność: zobacz outlinenone.com


4
Odkryłem, że na przykład po uruchomieniu na ekranie dotykowym Chrome będzie zachowywał się podobnie jak na Androidzie. Miałem <div>, który migałby na niebiesko po każdym kliknięciu w środku. Dopiero gdy użyłem tej odpowiedzi, to się skończyło. Dzięki!
Valorum

2
Żaden inny css attys tego nie zrobi. Jest to tak ważne, ponieważ podświetlenie stuknięcia zniekształca wygląd tego, co zostało kliknięte, zniekształcając język wizualny.
Dominic Cerisano

23
-webkit-tap-highlight-color: transparent;wydaje się też działać.
Bernard

1
Podobało mi się to, na imprezy dotykowe to konieczność! Ta informacja jest przydatna „poza wykresem”!
Berker Yüceer

1
To rozwiązanie, które zadziałało u mnie w 2020 roku
Blue Bot

66

Używam Chrome w wersji 60 i żadna z poprzednich odpowiedzi CSS nie działała.

Odkryłem, że Chrome dodaje niebieskie podświetlenie poprzez outlinestyl. Dodanie następującego CSS rozwiązało problem:

:focus {
    outline: none !important;
}

5
ty, sir, ratujesz życie.
beckah

2
to działa dla Chrome (wersja 61) na Androida
Stefan

Działa w nowszych wersjach Chrome. Dzięki!
CrazedCoder,

Super, zastanawiałem się, dlaczego mój zaufany user-select:nonedonikąd nie prowadzi
Sean T

Próbowałem wszystkiego, ale to działało jak urok. Dzięki za uratowanie moich włosów!
Avinash Kumar

25

Ale czasami, nawet przy włączonym user-selecti touch-calloutwyłączonym, cursor: pointer;może powodować ten efekt, więc po prostu ustaw cursor: default;i zadziała.


7
To jest prawidłowa odpowiedź, cursor: pointer;naprawdę powoduje wyróżnienie. Ale -webkit-tap-highlight-color: transparent;jest bardziej uniwersalnym rozwiązaniem.
yanot

1
@yanot: przeczytaj ostrzeżenie -webkit-tap-highlight-colorprzed oznaczeniem go jako względnie uniwersalnego rozwiązania : developer.mozilla.org/en-US/docs/Web/CSS/…
Hassan Baig

@HassanBaig Myślę, że to oczywiste, że nie chodziło mi o uniwersalną przeglądarkę internetową , ale w tym kontekście, czyli w różnych wersjach Chrome
yanot

2
dzięki - żadne inne rozwiązanie nie zadziałało. Musiałem usunąć wskaźnik kursora, aby niebieskie podświetlenie
zniknęło

3
cursor: defaultzałatwił mi sprawę, gdy nic innego nie działało.
Telarian

-2

Spróbuj utworzyć procedurę obsługi dla zdarzenia select na tych elementach, a w module obsługi możesz wyczyścić zaznaczenie.

Spójrz na to:

Wyczyść zaznaczenie tekstu za pomocą JavaScript

To przykład wyczyszczenia zaznaczenia. Wystarczy go zmodyfikować, aby działał tylko na określonym elemencie, którego potrzebujesz.


Więc nie można tego naprawić przez CSS, co? Czy mogę po prostu wyczyścić zaznaczony tekst w moim module obsługi kliknięć? EDYCJA - Dzięki za przykład. To jest do bani, że musi być obsługiwane przez JavaScript. Miałem nadzieję, że to tylko problem z CSS.
Smith

Czy będzie to miało wpływ na dostępność?
Smith

Możesz wyczyścić tekst w module obsługi kliknięć, ale spójrz na odpowiedź @smts z czystym CSS.
Floremin

-8

To działa najlepiej dla mnie:

.noSelect:hover {
  background-color: white;
}

6
To jest ZŁE i droga do pewnego przyszłego piekła. Bez obrazy.
Mike Barwick

co jeśli tło strony internetowej nie jest białe?
rideon88

Tego nie da się utrzymać. Nikt tego nie robi, proszę.
Telarian
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.