Czy pamiętasz te frustrujące chwile gdy aby podświetlić tekst na stronie musiałeś dodawać tagi takie jak mark i dodawać do nich style CSS?
Było to uciążliwe ponieważ wymuszało na Tobie cięcie tekstu i zmiany w treści.
A może miałeś problemy jako użytkownik jakiejś aplikacji? W sytuacji, gdy np Twój edytor tekstu wkleił w Twój dokument zbędne tagi i style.
Z odsieczą przychodzi CSS Custom Highlight API, które pozwoli Ci programistycznie określić zakres tego co chcemy podświetlić a potem ostylować to w CSS.
Zbuduj ze mną demo zawierające 2 sekcje:
Sekcja pierwsza, z podstawowym przykładem podświetlania
Sekcja druga, z przykładem który wnosi już rzeczywistą funkcjonalność
Jeśli zainteresuje Cię pełny kod implementacji – dostępne będzie zarówno repo na Github jak i działająca wersja na Github Pages
Tak będzie ono wyglądać:
CSS Custom Highlight API – wygląd przykładu
Jak to działa? CSS Custom Highlight API krok po kroku
By podświetlić fragment tekstu, potrzebujesz stworzyć obiekt Range.
Chcemy pokolorować tekst „Check pink box to make me pink” na różowo lub „check blue box to make me blue” na niebiesko.
Dzięki stylowaniu po zarejestrowanej nazwie podświetlenia, nie kolidują one ze sobą.
CSS Custom Highlight API – przykład z życia wzięty
Gdy wiesz już jak działa CSS Custom Highlight API, możesz zbudować coś co bardziej przyda się w prawdziwym życiu.
Powiedzmy, że potrzebujesz przefiltrować tabelę. Dobrze byłoby podświetlić miejsce w którym występuje szukany tekst, by łatwiej odnaleźć kontekst w jakim się on pojawia.
API pozwala zarejestrować wiele podświetlonym zakresów pod jedną nazwą, dzięki czemu da się podświetlić wiele wystąpień danego tekstu na raz.
Na potrzeby przypadku stwórzmy prostą tablicę zarządzaną z poziomu JS:
Tablica do filtrowania
Dane do tablicy są zahardkodowane a funkcja wyświetlająca tablice wygląda tak:
Tabelka będzie filtrowana danymi z pola – użytkownik pojawi się na liście tylko wtedy gdy w jednym z pól które obiekt posiada znajduje się szukany fragment:
Dzięki CSS Custom Highlight API możesz efektywniej oznaczać tekst na stronach.
Dla Ciebie to brak zabawy z modyfikacją zawartości tekstowej przy podświetlaniu, dla użytkownika mniej problemów w codziennych sytuacjach gdy kopiuje fragmenty tekstu.
Co prawda póki co brak wsparcia poza przeglądarkami Chromium, ale pozytywny feedback od użytkowników zmotywuje innych vendorów do implementacji tego API u siebie.