Hrvatski

Otključajte napredno stiliziranje odabranog teksta pomoću CSS Custom Highlight API-ja. Naučite kako prilagoditi iskustvo odabira za bolji angažman korisnika.

CSS Custom Highlight API: Ovladavanje stiliziranjem odabranog teksta

Skromna radnja odabira teksta na web stranici nešto je što većina korisnika izvodi bez razmišljanja. Međutim, kao programeri, često nastojimo poboljšati čak i najsuptilnije interakcije. CSS Custom Highlight API omogućuje nam da revolucionariziramo iskustvo odabira teksta, nudeći neviđenu kontrolu nad izgledom odabranog teksta. Ova mogućnost nadilazi jednostavne promjene boje pozadine i teksta, dopuštajući složena i privlačna korisnička sučelja.

Što je CSS Custom Highlight API?

CSS Custom Highlight API je moderni web standard koji pruža način za stiliziranje izgleda odabira teksta (i drugih istaknutih raspona) pomoću CSS-a. Uvodi pseudo-element ::highlight(), koji cilja specifične raspone teksta na temelju kriterija koje definiraju programeri. Ovaj API prevladava ograničenja tradicionalnog pseudo-elementa ::selection, koji nudi vrlo osnovne opcije stiliziranja. S Custom Highlight API-jem možete stvoriti visoko prilagođene i kontekstualno svjesne stilove odabira teksta.

Zašto koristiti CSS Custom Highlight API?

Custom Highlight API nudi nekoliko prednosti u odnosu na tradicionalne metode stiliziranja odabira teksta:

Razumijevanje ključnih koncepata

Prije nego što zaronimo u primjere koda, ključno je razumjeti osnovne koncepte CSS Custom Highlight API-ja:

1. Registracija isticanja

Proces započinje registracijom prilagođenog naziva isticanja pomoću JavaScripta. Taj će se naziv zatim koristiti u CSS-u za ciljanje specifičnih odabira teksta.

2. Rasponi isticanja

Rasponi isticanja definiraju specifične dijelove teksta koji će se stilizirati. Ovi se rasponi stvaraju programski pomoću Highlight i StaticRange ili Range API-ja. Oni određuju početne i završne točke teksta koji treba istaknuti.

3. Pseudo-element ::highlight()

Ovaj pseudo-element koristi se u CSS-u za primjenu stilova na registrirane nazive isticanja. Djeluje kao selektor, ciljajući dijelove teksta definirane rasponima isticanja.

Praktični primjeri: Implementacija CSS Custom Highlight API-ja

Istražimo nekoliko praktičnih primjera kako bismo ilustrirali kako koristiti CSS Custom Highlight API.

Primjer 1: Osnovno stiliziranje odabranog teksta

Ovaj primjer pokazuje kako promijeniti boju pozadine i teksta odabranog teksta.

HTML:

<p id="myText">Ovo je neki tekst koji se može odabrati.</p>

JavaScript:

const myText = document.getElementById('myText');
const highlight = new Highlight();

// Odabir cijelog odlomka.
highlight.add(new Range(myText.firstChild, 0, myText.firstChild, myText.firstChild.length));

CSS.highlights.set('myHighlight', highlight);

CSS:

::highlight(myHighlight) {
  background-color: #ff0;
  color: #000;
}

Objašnjenje:

Primjer 2: Isticanje određenih riječi

Ovaj primjer pokazuje kako istaknuti određene riječi unutar odlomka.

HTML:

<p id="myText">Ovo je odlomak s riječju istaknuti koju želimo istaknuti.</p>

JavaScript:

const myText = document.getElementById('myText');
const highlight = new Highlight();
const textContent = myText.textContent;
const wordsToHighlight = ['istaknuti'];

wordsToHighlight.forEach(word => {
  let index = textContent.indexOf(word);
  while (index !== -1) {
    highlight.add(new Range(myText.firstChild, index, myText.firstChild, index + word.length));
    index = textContent.indexOf(word, index + 1);
  }
});

CSS.highlights.set('keywordHighlight', highlight);

CSS:

::highlight(keywordHighlight) {
  background-color: lightgreen;
  font-weight: bold;
}

Objašnjenje:

Primjer 3: Dinamičko isticanje na temelju korisničkog unosa

Ovaj primjer pokazuje kako dinamički istaknuti tekst na temelju korisničkog unosa u polje za pretraživanje.

HTML:

<input type="text" id="searchInput" placeholder="Unesite tekst za isticanje">
<p id="myText">Ovo je neki tekst koji će biti dinamički istaknut na temelju korisničkog unosa.</p>

JavaScript:

const searchInput = document.getElementById('searchInput');
const myText = document.getElementById('myText');
const highlight = new Highlight();

searchInput.addEventListener('input', () => {
  const searchTerm = searchInput.value;
  highlight.clear(); // Očisti prethodna isticanja

  if (searchTerm) {
    const textContent = myText.textContent;
    let index = textContent.indexOf(searchTerm);
    while (index !== -1) {
      highlight.add(new Range(myText.firstChild, index, myText.firstChild, index + searchTerm.length));
      index = textContent.indexOf(searchTerm, index + 1);
    }
  }

  CSS.highlights.set('searchHighlight', highlight);
});

CSS:

::highlight(searchHighlight) {
  background-color: yellow;
  color: black;
}

Objašnjenje:

Primjer 4: Prilagodba izgleda isticanja pomoću ::highlight()

Snaga Custom Highlight API-ja leži u njegovoj sposobnosti prilagodbe izgleda i dojma istaknutog teksta. Evo kako možete primijeniti sjene, gradijente i druge vizualne efekte.

HTML:

<p id="customText">Odaberite ovaj tekst da biste vidjeli prilagođeni efekt isticanja.</p>

JavaScript:

const customText = document.getElementById('customText');
const highlight = new Highlight();
highlight.add(new Range(customText.firstChild, 0, customText.firstChild, customText.firstChild.length));
CSS.highlights.set('fancyHighlight', highlight);

CSS:

::highlight(fancyHighlight) {
  background: linear-gradient(to right, #4CAF50, #8BC34A);
  color: white;
  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
  border-radius: 5px;
  padding: 2px 5px;
}

Objašnjenje:

Razmatranja o pristupačnosti

Iako je poboljšanje vizualnog izgleda odabira teksta važno, pristupačnost bi uvijek trebala biti primarna briga. Evo nekoliko smjernica kako biste osigurali da su vaši prilagođeni stilovi isticanja pristupačni:

Kompatibilnost s preglednicima

CSS Custom Highlight API je relativno novi web standard, a kompatibilnost s preglednicima može varirati. Krajem 2023. / početkom 2024. podrška raste, ali nije univerzalno implementirana. Trenutni status podrške preglednika možete provjeriti na web stranicama poput "Can I use..." kako biste bili informirani o ažuriranjima kompatibilnosti.

Razmislite o korištenju detekcije značajki kako biste pružili zamjenske (fallback) stilove za preglednike koji još ne podržavaju API.

if ('CSS' in window && 'highlights' in CSS) {
  // Koristi Custom Highlight API
} else {
  // Pruži zamjenske stilove koristeći ::selection
}

Primjeri upotrebe u stvarnom svijetu

CSS Custom Highlight API ima brojne primjene u stvarnom svijetu, uključujući:

Najbolje prakse i savjeti

Napredne tehnike

1. Kombiniranje više isticanja

Možete kombinirati više isticanja kako biste stvorili složenije efekte stiliziranja. Na primjer, možda želite istaknuti i ključne riječi i tekst koji je odabrao korisnik s različitim stilovima.

2. Korištenje događaja za ažuriranje isticanja

Možete koristiti JavaScript događaje, kao što su mouseover ili click, za dinamičko ažuriranje raspona isticanja na temelju interakcija korisnika.

3. Integracija s bibliotekama trećih strana

Možete integrirati Custom Highlight API s bibliotekama trećih strana kako biste stvorili sofisticiranija rješenja za isticanje. Na primjer, mogli biste koristiti biblioteku za obradu prirodnog jezika (NLP) za automatsko identificiranje i isticanje ključnih pojmova u dokumentu.

Budućnost stiliziranja odabranog teksta

CSS Custom Highlight API predstavlja značajan napredak u stiliziranju odabranog teksta. Omogućuje programerima stvaranje privlačnijih, pristupačnijih i kontekstualno svjesnih korisničkih sučelja. Kako podrška preglednika nastavlja rasti, Custom Highlight API postat će nezaobilazan alat za web programere diljem svijeta.

Zaključak

CSS Custom Highlight API otključava svijet mogućnosti za prilagodbu iskustva odabira teksta. Razumijevanjem ključnih koncepata, istraživanjem praktičnih primjera i uzimanjem u obzir smjernica za pristupačnost, možete iskoristiti ovaj moćni API za stvaranje doista izvanrednih korisničkih sučelja. Prihvatite Custom Highlight API i podignite svoje web razvojne projekte na novu razinu.

Eksperimentirajte s pruženim primjerima, prilagodite ih svojim specifičnim potrebama i istražite puni potencijal CSS Custom Highlight API-ja. Vaši će korisnici cijeniti posvećenost detaljima i poboljšano korisničko iskustvo.