Jestli děláte pro svou stránku šablony, jistě víte, že součástí šablony jsou často i různé grafiky, ikony a obrázky.
Pokud je stránka správně udělaná a připravená, není to problém, protože většina grafiky bude dělaná přes background-image a ikony přes sprity.
Co ale dělat v případě, že na stránce je natvrdo napsaný IMG s obrázkem, který potřebujete změnit?
Přímo obrázek změnit nejde, s tím nic nenaděláte, ale ve většině případů lze pomocí CSS změnit stránku tak, aby se dala ikona nebo grafika doplnit (a původní obrázek skrýt).
Nejlepší případ je, když je ikona v odkazu:
<a id="support" href="support.html"> <img src="help.png" alt="Support" /> </a>
Zde se řešení přímo nabízí – schovat obrázek a místo něj zobrazit pozadí odkazu:
#support > img { display: none; } #support { display: block; /*nebo inline-block */ width: 1em; height: 1em; background-image: url('theme/help.png'); background-size: 1em 1em; }
Pokud nejde o klikací ikonu, ale pořád je obalena nějakým prvkem, můžete ho využít stejně:
<div id="textBlock"> <span class="icon"> <img src="text-icon.png" /> </span> Tady je text k ikoně. </div>
#textBlock > .icon > img { display: none; } #textBlock > .icon { display: inline-block; width: 1em; height: 1em; background-image: url('theme/text.png'); background-size: 1em 1em; }
Pokud nemá ikona svůj vlastní obalovací prvek, nebude to již tak jednoduché, ale pořád se dá ikona vyměnit pomocí pozicování pozadí:
<div id="textBlock"> <img src="text-icon.png" /> Tady je text k ikoně. </div>
#textBlock > img { display: none; } #textBlock { text-indent: 1.5em; /* místo pro ikonu */ background-image: url('theme/text.png'); background-size: 1em 1em; background-position: left top; }
Podobně se dá příslušný blok omezit pomocí marginu nebo paddingu.
Je prostě potřeba se na konkrétní případ podívat a zkusit se ze stávající HTML struktury vytěžit maximum.
A také zkuste zapřemýšlet, jestli je navrhovaná šablona opravdu nutná tak, jak je navržená. Např. posun ikony trochu doleva/nahoru/apod. nemusí mít vliv na celkový vzhled šablony, ale může výrazně usnadnit umístění ikony pomocí CSS.
A samozřejmě pokud můžete při psaný CSS šablony i mírně pozměnit HTML (nebo JS), není nad čím přemýšlet:
//přidá prázdný blok pro vlastní ikonu $('#textBlock').prepend( $('<span>').addClass('theme-icon').hide(); );
#textBlock > img { display: none; } #textBlock > .theme-icon { display: inline-block !important; /* přepíše hide(); */ width: 1em; height: 1em; background-image: url('theme/text.png'); background-size: 1em 1em; }