Je mnoho způsobů, jak na webu zobrazit písňové texty i s akordy. Často se používá PRE-formátovaný text, který akordy na správném místě nad textem udržuje prostřednictvím neproporčního písma.
English-only | Jenom česky | Bilingual/Dvojjazyčně
Řešení CSS: Formátování akordů
Yesterday F Emi A7 Dmi Dmi/C Yesterday all my troubles seemed so far away Bb C F now it looks as though they're here to stay C/E Dmi G7 Bb F oh I believe in yesterday.
Ale občas můžeme potřebovat i nějaké lépe vypadající řešení, abychom mohli text s akordy zobrazit proporčním písmem. Nabízím jeden z možných způsobů, jak to lze udělat.
Úsek textu, ke kterému patří akord, je vždy označen jako span. Akordy jsou umístěny přímo v textu a jsou označené jako strong. Hranaté závorky jsem navíc označil jako span, aby se mohly s CSS skrýt.
<div class="chordline">
<span><strong><span>[</span>F<span>]</span></strong>Yesterday</span>
<span><strong><span>[</span>Emi<span>]</span></strong>all my</span>
<span><strong><span>[</span>A7<span>]</span></strong>troubles seemed so</span>
<span><strong><span>[</span>Dmi<span>]</span></strong>far away</span>
<span><strong><span>[</span>Dmi/C<span>]</span></strong> </span>
</div>
...
Takto vypadá text písně bez formátování:
Yesterday
Úsek textu s akordem, označený jako span, má nastaveno relativní pozicování (to zajistí, že prvky uvnitř mohou být vůči němu absolutně pozicovány). Část tvořící text akordu je potom absolutně pozicována (z textu je vyjmuta, takže po ní nezbude prázdné místo) a posunuta na souřadnice 1em nad levý horní roh úseku textu. CSS, které dělá to, co potřebujeme, vypadá takto:
.chordline {
line-height:2.5
}
.chordline span {
position:relative;
}
.chordline span strong {
position:absolute;
top:-1em; left:0;
font:bold 75%/1 sans-serif;
color:green;
}
.chordline span strong span {
display:none;
}
Úsek textu s akordem musí kromě akordové značky obsahovat ještě alespoň jeden znak — po vyjmutí akordu na pozicování by jinak zůstal prázdný a pozicování pak (bůhvíproč) funguje jen v MSIE. Pokud je zde alespoň jeden znak, bude to fungovat všude.
A takto vypadá stejný kód s použitím CSS:
Yesterday
S CSS formátováním funguje zalamování textu na nové řádky, text se dá označit a kopírovat, velikost písma lze libovolně zvětšovat a zmenšovat. Akordy budou přitom stále umístěny na určené pozici nad textem.
Testoval jsem to v MSIE/Win, Gecko-browserech (Mozilla, Firefox, Camino), Opeře a Safari. Pochopitelně je možné text zformátovat tisícem dalších způsobů — princip ale zůstane stejný. Pro podrobnosti viz zdrojový kód.