Tag <rp> to rzadko używany, ale bardzo przydatny element HTML, który rozwiązuje konkretny problem w wielojęzycznych treściach. Służy do zapewnienia fallbacku (alternatywnej prezentacji) dla adnotacji ruby – małych adnotacji fonetycznych, popularnych w językach takich jak japoński, chiński czy koreański.
Dzięki <rp> przeglądarki nieobsługujące ruby wyświetlą czytelne nawiasy lub inne znaki wokół adnotacji, zamiast psuć układ strony.
W epoce globalizacji treści <rp> zyskuje na znaczeniu – szczególnie na blogach edukacyjnych, w słownikach online czy serwisach o kulturze Wschodu. W tym wpisie poznasz definicję, składnię, przykłady kodu, wsparcie przeglądarek oraz praktyczne wskazówki i stylizację w CSS.
Czym jest adnotacja ruby i po co tag <rp>?
Adnotacje ruby wywodzą się z typografii japońskiej, gdzie małe znaki (furigana) umieszczane są nad lub obok kanji, podając ich wymowę lub znaczenie. W HTML ruby implementowane jest za pomocą trzech kluczowych tagów:
<ruby>– kontener nadrzędny, grupujący tekst bazowy z adnotacjami;<rt>– zawiera samą adnotację (np. wymowę);<rp>– element definiujący, co wyświetlić w przeglądarkach bez wsparcia ruby, najczęściej nawiasy( )lub( ).
Bez <rp> starsze lub uproszczone przeglądarki „wkleją” adnotację obok tekstu bazowego, co może zaburzyć layout. Tag <rp> zapewnia elegancką degradację – treść pozostaje czytelna w każdych warunkach.
Przykład: w przeglądarce bez wsparcia ruby zobaczysz zapis w stylu „漢(hàn)”, zamiast adnotacji nad znakiem.
Podstawowa składnia i struktura użycia
Tag <rp> zawsze występuje w parach wewnątrz <ruby>, otaczając <rt>. Oto standardowa struktura:
<ruby> Tekst bazowy<rp>(</rp><rt>Anotacja</rt><rp>)</rp>
</ruby>
Najważniejsze zasady pracy ze składnią wyglądają tak:
- tekst bazowy (np. kanji) to główny element,
<rp>przed i po<rt>zawiera identyczną treść fallbacku (np. nawiasy),- można zagnieżdżać wiele adnotacji w jednym
<ruby>.
<rp> obsługuje atrybuty globalne HTML (np. id, class, style, title) oraz atrybuty zdarzeń (np. onclick, onmouseover). Nie ma własnych atrybutów specyficznych.
Przykłady kodu w akcji
Przykład 1 – podstawowa adnotacja z fallbackiem (język chiński)
Poniższy kod możesz skopiować i uruchomić w CodePen lub w lokalnym pliku .html:
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Przykład tagu <rp></title>
<style>
ruby { ruby-position: over; font-size: 24px; } /* Stylizacja CSS dla ruby */
rt { font-size: 0.5em; color: #666; }
rp { color: #999; font-size: 0.8em; }
</style>
</head>
<body>
<h2>Adnotacja ruby z <rp> (wsparcie dla starych przeglądarek)</h2>
<p>Tekst chiński z wymową:</p>
<ruby>
漢<rp>(</rp><rt>hàn</rt><rp>)</rp>
</ruby>
<br><br>
<p>Kolejny przykład z grupą znaków:</p>
<ruby>
日本語<rp>(</rp><rt>にほんご</rt><rp>)</rp>
</ruby>
</body>
</html>
Efekt: w nowoczesnych przeglądarkach zobaczysz małe „hàn” nad „漢”, a w tych bez wsparcia ruby – tekst „漢(hàn)”. Właściwość CSS ruby-position: over; umieszcza adnotacje nad tekstem bazowym.
Przykład 2 – zaawansowany z wieloma adnotacjami i listą
W słowniku online warto łączyć wiele adnotacji w jednej grupie ruby, zachowując pełną semantykę list:
<ul>
<li>
<ruby>東京<rp>(</rp><rt>とうきょう</rt><rp>)</rp></ruby> – stolica Japonii.
</li>
<li>
<ruby>
電腦<rp>(</rp><rt>diànnǎo</rt><rp>)</rp>
科學<rp>(</rp><rt>kēxué</rt><rp>)</rp>
</ruby> – informatyka.
</li>
</ul>
Przykład 3 – integracja z JavaScript (dynamiczne ruby)
Dynamiczne generowanie ruby po kliknięciu przycisku wygląda tak:
<button onclick="addRuby()">Dodaj ruby</button>
<div id="container"></div>
<script>
function addRuby() {
const container = document.getElementById('container');
container.innerHTML = `
<ruby>
程式<rp>(</rp><rt>chéngshì</rt><rp>)</rp>
</ruby> – programowanie!
`;
}
</script>
W aplikacjach SPA dynamicznie wstawiany <rp> gwarantuje czytelność także bez wsparcia ruby.
Wsparcie przeglądarek i kompatybilność
Tag <rp> jest szeroko wspierany w popularnych przeglądarkach. Przykładowe wersje pełnego wsparcia wyglądają następująco:
| Przeglądarka | Wersja pełnego wsparcia |
|---|---|
| Chrome | 5.0 |
| Edge | 12.0 |
| Firefox | 38.0 |
| Safari | 5.0 |
| Opera | 15.0 |
Uwaga: starsze przeglądarki (np. IE poniżej 9) ignorują ruby, ale <rp> zapewnia czytelny fallback. Warto testować w narzędziach pokroju „Can I Use”.
Stylizacja CSS dla <rp> i ruby
Domyślnie <rp> nie ma stylów – kontrola leży po Twojej stronie. Kluczowe właściwości to:
ruby-position: over | under | inter-character;– pozycja adnotacji,ruby-align: space-around | center;– wyrównanie adnotacji,- dla
<rt>i<rp>:font-size,color,display: ruby-text.
Poniższy przykład CSS ułatwia czytelność i subtelnie wyróżnia fallback:
ruby {
ruby-position: over;
ruby-merge: separate; /* Zachowuje osobne adnotacje */
}
rp {
font-size: 0.6em;
opacity: 0.7; /* Subtelny fallback */
}
Praktyczne zastosowania i dobre praktyki
Najczęstsze zastosowania i wskazówki wdrożeniowe prezentują się tak:
- Słowniki i edukacja – idealne dla nauki języków azjatyckich oraz materiałów edukacyjnych online;
- Międzynarodowe projekty – przydatne w aplikacjach z tłumaczeniami (np. komponenty Ruby we frameworkach);
- SEO i dostępność – semantyczne tagi jak ruby mogą poprawiać doświadczenie użytkowników i czytelność dla czytników ekranu;
- Najlepsze praktyki – stosuj konsekwentną składnię i testy kompatybilności;
- Alternatywy – gdy nie używasz ruby, rozważ krótkie dopiski w nawiasach lub przypisy w tekście.
Doprecyzowując najlepsze praktyki, pamiętaj o poniższych zasadach:
- zawsze używaj
<rp>dla kompatybilności, - nie nadużywaj – długie adnotacje męczą czytelników,
- testuj w różnych przeglądarkach i z wyłączonym wsparciem ruby,
- łącz ruby z metadanymi (np. dopiskiem w tekście) dla łatwiejszej automatycznej obróbki.
Potencjalne pułapki i błędy
Podczas implementacji zwróć uwagę na najczęstsze problemy:
- Brak zamknięcia tagów –
<rp>musi być parowy, inaczej walidacja HTML5 zawiedzie; - Zbyt długie adnotacje – zawartość
<rt>nie powinna przekraczać 1–2 linii; - Brak fallbacku – pominięcie
<rp>pogorszy czytelność w przeglądarkach bez wsparcia ruby.