Autor Zpráva
Andy
Profil *
Ahoj,
pokouším se o změnu obrázku na pozadí buňky při najetí myši. Následující kód:

<table>

<tr><td background="podklad1.jpg" onMouseOver="background='podklad2.jpg'">text</td></tr>

</table>


způsobí pouze zmizení podkladu1. Jak, co nejjednodušeji, dosáhnout kýženého výsledku?
blazej44800
Profil
nemá tam byt background.src alebo daco take???
Medvídek
Profil
Andy:
Nebude lepší v CSS přes td:hover? (Nepujde v IE6)
Andy
Profil *
blazej44800:
background.src - sice na stavovém řádku to nehlásí chybu, ale podklad1 ani nezmizí

Medvídek:
A je to jednoduché?
Medvídek
Profil
Andy:
http://vallner.party-akce.cz/td.html
Andy
Profil *
Medvídek:
Tvůj příklad mi nefunguje. Čím to může být? (Mám IE8)
Chamurappi
Profil
Reaguji na Andyho:
Medvídek patrně neví, že :hover mimo odkazy funguje jen ve standardním režimu novějších Explorerů.

způsobí pouze zmizení podkladu1
Přidej onmouseout, kde nastavíš background zase na podklad1.jpg.
Bubák
Profil
Andy:
Pro jistotu se zeptám, nebude v buňce odkaz? Protože pak by to šlo udělat jednodušeji, deklarovat odkaz blokový a taky mu deklarovat výšku, deklarace šířky není třeba, bude přes celou šířku buňky.
Andy
Profil *
Chamurappi:
Onmouseout nepomohlo, je to pořád stejné: podklad1 zmizí a podklad2 se neobjeví.

Bubák:
Ne, buňka bude bez odkazu.
Bubák
Profil
Tak ser koukni na http://www.jakpsatweb.cz/css/behavior/prebarveni_0.html
Pokud měníš obrázek na pozadí tak "this.style.backgroundImage = 'url(podklad1.jpg)'", případně "this.style.background = lime 'url(podklad1.jpg)'". Zbytek už asi zvládneš sám.
Andy
Profil *
Bubák:
I s následujícím kódem je to pořád stejné:

<table>

<tr><td background="podklad1.jpg" onMouseOver="this.style.backgroundImage='url(podklad2.jpg)'" 
onMouseOut="this.style.backgroundImage='url(podklad1.jpg)'">text</td></tr>

</table>
Bubák
Profil
Samotný podklad2.jpg ti funguje?
<table>

<tr><td background="podklad2.jpg">text</td></tr>


</table>
Andy
Profil *
Ano. Už dříve jsem zkusil dát podklad1 místo podkladu2 a výsledek je stejný.
Andy
Profil *
Ještě jsem našel docela univerzální outerHTML a innerText. Následující kód by měl fungovat a také by vyřešil tento problém, ale nefunguje:
<table>

<tr><td background="podklad1.jpg" onMouseOver="this.outerHTML='<td background="podklad2.jpg">text</td>'" 
>text</td></tr>

</table>


Naproti tomu innerText funguje (ale není k ničemu):
<table

<tr><td background="podklad1.jpg" onMouseOver="this.innerText='jiny text'" 
>text</td></tr>

</table>
Bubák
Profil
Tak to je nějaké divné, že kód [#11] nefunguje. Tady pomůže jedině odkaz na živou ukázku.
Andy
Profil *
Na něco jsem přišel. Divné bylo, že http://www.jakpsatweb.cz/css/behavior/prebarveni_0.html funguje a když namísto barev dám obrázky, nefunguje to. Chyba tedy musí být v cestě, zkoušel jsem s url i bez, malá/velká písmena, vše bez úspěchu. Ale podle [#15] kód [#11] musí fungovat, zkopíroval jsem tedy (Kvůli přehlednosti jsem neuvedl plnou cestu, zacož se omlouvám, protože to je to, co nefunguje.) oba podklady z C:\Documents and Settings\User\Dokumenty\Obrázky\ k html souboru, abych kód [#11] vyzkoušel přesně písmenko od písmenka a FUNGUJE TO!
Tedy jen s
onMouseOver="this.style.backgroundImage='url(podklad2.jpg)'"

, ale s
onMouseOver="this.style.backgroundImage='url(C:\Documents and Settings\User\Dokumenty\Obrázky\podklad2.jpg)'"

stále ne. Jak zprovoznit i tu dlouhou cestu?
Bubák
Profil
Nechce se mi zkoušet, ale mohlo by fungovat něco takového:
file:///C:/Documents and Settings/Jmeno uzivatele/Plocha/obrazek.png
Máš nějaký důvod použít absolutní cestu k obrázku na disku? Pokud bude stránka na webu, stejně nebude mít k souborům na disku přístup.
Andy
Profil *
Bubák:
file:///C:/Documents and Settings/Jmeno uzivatele/Plocha/obrazek.png
funguje, je vidět, že jsi odborník.

Máš nějaký důvod použít absolutní cestu k obrázku na disku?
No, mně spíš šlo o to, že obrázek z jakéhokoliv jiného adresáře, než je html soubor, nešel načíst.

Vůbec by mě nenapadlo dát lomítka obráceně. Ještě jsem to tak různě zkoušel a cesta funguje i bez "file:///" jen s těmi dopřednými lomítky.

Moc díky, problém vyřešen.
Witiko
Profil
To protože \ se v řetězcích nepoužívá jako lomítko, ale na escapování určitých znaků. Například když chceš mít v řetězci znak ", tak před něj dáš obrácené lomítko: "\"", aby ho prohlížeč nebral jako konec řetězce, ale jako daný znak. Proto by fungovalo i
C:\Documents and Settings\User\Dokumenty\Obrázky\podklad2.jpg
, jen by se musela lomítka escapovat, takže:
C:\\Documents and Settings\\User\\Dokumenty\\Obrázky\\podklad2.jpg


A když už jsme u toho, možná, že pokud je obrázek toho pozadí malý, nezaškodilo by použít css spritů a provádět změnu obrázku jen jeho posunem, přičemž oba obrázky by se nacházely v obrázku jednom, jen by se pokaždé zobrazoval jen výřez z daného obrázku.

http://cs.spritegen.website-performance.org/section/what-are-css-sprites
Bubák
Profil
Obrácené lomítka "pochopí" jen IE a Webkit (Chrome, ...), "nepochopí" je Opera a Gecko (Firefox, ...)
Witiko
Profil
Myslíš v cestě k souboru? To je možné, já jen říkám jak to udělat, aby to vůbec bral js jako řetězec. :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0