Cześć! Witaj na moim blogu poświęconym programowaniu w HTML, CSS i JavaScript. Dziś zanurzymy się w świat semantycznych tagów HTML5, a konkretnie przyjrzymy się tagowi <mark>.
To nie jest zwykły element do formatowania – to narzędzie, które niesie znaczenie, poprawia dostępność i pomaga w wyszukiwaniu. Jeśli szukasz sposobu na wyróżnienie fragmentów tekstu w kontekście wyszukiwania, cytatów czy podkreślenia ważnych informacji, ten wpis jest dla Ciebie. Zaczynamy!
Co to jest tag <mark> i do czego służy?
Tag <mark> służy do wyróżniania lub podświetlania fragmentu tekstu, zazwyczaj w kontekście wyszukiwania użytkownika albo wskazania istotnych części treści. Przeglądarki renderują go domyślnie z żółtym tłem, jak zakreślacz w książce.
To element semantyczny – nie tylko zmienia wygląd, ale komunikuje znaczenie strukturalne (pomaga czytnikom ekranu i wyszukiwarkom zrozumieć, że tekst jest istotny w kontekście).
W odróżnieniu od czysto wizualnych tagów jak <b> czy neutralnego semantycznie <span>, <mark> podkreśla kontekstową istotność treści (np. pasujące frazy w wynikach wyszukiwania).
Przykład podstawowy – oto kod:
<p>Znacznik <mark>mark</mark> wyróżnia tekst.</p>
Wynik: Znacznik mark wyróżnia tekst (z żółtym tłem na „mark”). To działa od razu, bez dodatkowego CSS.
Historia i ewolucja tagu <mark>
<mark> pojawił się w HTML5 jako natywny sposób podświetlania tekstu. Wcześniej stosowano <span class="highlight"> lub inline CSS – bez semantyki. Dziś <mark> jest szeroko wspierany w nowoczesnych przeglądarkach (Chrome, Firefox, Safari, Edge) – kompatybilność potwierdzisz na Can I Use.
Podstawowe przykłady użycia <mark>
Oto minimalny dokument HTML pokazujący <mark> w akcji:
<!DOCTYPE html>
<html lang="pl-PL">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Przykład tagu <mark></title>
</head>
<body>
<h1>Wyszukaj w tekście</h1>
<p>Ten tekst zawiera słowo <mark>HTML</mark>, które jest kluczowe dla programistów.</p>
<p>Inny przykład: <mark>Ważne ostrzeżenie</mark> – nie zapomnij o semantyce!</p>
</body>
</html>
Efekt wizualny – słowa „HTML” i „Ważne ostrzeżenie” będą podświetlone na żółto. To idealne do symulacji wyników wyszukiwania na stronie.
Lista praktycznych zastosowań
Oto najczęstsze scenariusze użycia:
- Wyniki wyszukiwania – podświetl pasujące frazy w wynikach (np. we własnym silniku wyszukiwania);
- Cytaty i odniesienia – oznacz cytowane fragmenty w artykułach;
- Podkreślenie błędów – w formularzach – podświetl niepoprawne pola;
- Treści edukacyjne – w tutorialach wyróżnij kluczowe terminy;
- Dostępność – czytniki ekranu (np. NVDA) sygnalizują „oznaczony tekst”, co pomaga niewidomym użytkownikom.
Stylizacja <mark> z CSS – wyjdź poza domyślny żółty!
Domyślnie to żółte tło (background-color: yellow), ale <mark> możesz w pełni wystylizować zgodnie z identyfikacją wizualną projektu.
1. Proste, własne podświetlenie
Dodaj ten styl, aby uzyskać czytelne, miękkie podświetlenie:
mark {
background-color: #ffeb3b;
padding: 2px 4px;
border-radius: 3px;
color: #000;
}
Efekt: zaokrąglone, neonowo-żółte podświetlenie z niewielkim paddingiem – czytelne na jasnym tle.
2. Responsywny styl z animacją
Użyj gradientu i efektu hover, by podnieść atrakcyjność interakcji:
mark {
background: linear-gradient(120deg, #ffd700, #ffed4e);
padding: 0.2em 0.4em;
border-radius: 4px;
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
transition: all 0.3s ease;
}
mark:hover {
transform: scale(1.05);
box-shadow: 0 4px 8px rgba(0,0,0,0.3);
}
Użycie w HTML:
<p>Kliknij na <mark>podświetlony</mark> tekst!</p>
Efekt: gradientowe tło z subtelnym powiększeniem po najechaniu – świetne dla interaktywnych sekcji.
3. Ciemny motyw (tryb ciemny)
Wspieraj preferencje systemowe użytkownika dzięki media query:
@media (prefers-color-scheme: dark) {
mark {
background-color: #ff6b35;
color: #fff;
}
}
Efekt: kontrastowe, czytelne podświetlenie w trybie ciemnym bez nadmiernej jaskrawości.
4. Integracja z JavaScript – dynamiczne podświetlenie
Skorzystaj z JS, aby podświetlać frazy wpisane przez użytkownika w czasie rzeczywistym:
<!DOCTYPE html>
<html lang="pl-PL">
<head>
<meta charset="UTF-8">
<title>Dynamiczny mark</title>
<style>
mark { background: #ffeb3b; padding: 2px 5px; border-radius: 3px; }
</style>
</head>
<body>
<input type="text" id="search" placeholder="Wpisz frazę do wyszukania...">
<p id="tekst">HTML to język znaczników. Używaj tagów semantycznych jak mark do wyróżniania.</p>
<script>
document.getElementById('search').addEventListener('input', function(e) {
const tekst = document.getElementById('tekst');
tekst.innerHTML = tekst.textContent.replace(
new RegExp(e.target.value, 'gi'),
match => `<mark>${match}</mark>`
);
});
</script>
</body>
</html>
Jak działa: wpisz „HTML” lub „mark” – fraza zostanie dynamicznie podświetlona w akapicie.
Najlepsze praktyki i pułapki
Zanim użyjesz <mark>, pamiętaj o tych wskazówkach:
- Semantyka ponad wizualizacją – stosuj
<mark>tam, gdzie tekst jest kontekstowo ważny (do czysto dekoracyjnego efektu użyj<span>); - Dostępność (a11y) – ustaw
lang="pl-PL"w<html>, by wspierać polskie czytniki ekranu; - SEO – wyszukiwarki lepiej rozumieją semantykę; trafnie podświetlone frazy mogą podnieść CTR w wynikach;
- Unikaj nadużywania – nie oznaczaj całych akapitów, a jedynie kluczowe fragmenty;
- Testuj w przeglądarkach – domyślny wygląd bywa różny (np. Safari ma delikatniejsze tło);
- Alternatywy – dla inline styli użyj
<span>; dla innych efektów rozważ komponenty UI zamiast niestandardowych tagów jak<highlight>(niestandardowy, eksperymentalny).
Tabela porównawcza tagów wyróżniających:
| Tag | Semantyka | Domyślny styl | Użycie główne |
|---|---|---|---|
<mark> |
Podświetlenie wyszukiwania | Żółte tło | Wyniki wyszukiwania |
<strong> |
Ważność treści | Pogrubienie | Kluczowe informacje |
<em> |
Podkreślenie emocjonalne | Kursywa | Intonacja |
<b> |
Tylko wizualne pogrubienie | Pogrubienie | Dekoracja (stosuj rozważnie) |
<span> |
Brak semantyki | Brak | Custom CSS/JS |
Zaawansowane przykłady w kontekście pełnej strony
Wyobraź sobie stronę z wyszukiwarką artykułów. Oto fragment łączący <mark> z semantycznym HTML:
<article>
<h2><mark>Tagi HTML5</mark> – rewolucja semantyki</h2>
<p>Elementy jak <mark>mark</mark>, <mark>article</mark> i <mark>section</mark> poprawiają strukturę.</p>
</article>
Wskazówka: połącz to z Flexboxem lub CSS Grid, aby uzyskać responsywny układ i spójne wyróżnienia w całym interfejsie.