Autor Zpráva
DEF
Profil *
Hledal jsem doufám poctivě, ale nenašel odpověď, zda je možné odstranit následující:
Obrázek jako odkaz, který se mění při onmouse, respktive onmosedown ale přes něj napozicovaný text (a je mi jedno, jestli se bude text chovat také jako odkaz či nikoli) - mělo to být menu. Vše funguje jen do doby, než myší najedu na text přes obrázek, v tu chvíli se projeví příkaz onmouseout a vrátí se původní obrázek, do doby, než zase myší sjedu z textu. Kód jsem ořezal jen pro tento dotaz, tak mě prosím nekamenujte. Předem íky za vysvětlení, zda to takto vůbec může fungovat a pokud ano, kde dělám chybu?
   
<table>
<tr><td>
<a HREF='2011/australie.html'><img  src='stuj.jpg'  onmouseover="this.src = 'priprav.jpg'" onmouseout="this.src = 'stuj.jpg'" onmousedown="this.src = 'jed.jpg'" alt='strom'></a><div style='position: relative; left: 40%; top: -50%'>australie</div>
</td></tr>
</table>
vospunt
Profil
já osobně bych použil jquery na obrázek i text použil mouseleave
jak je uvedeno na příkladě zde : http://api.jquery.com/mouseleave/ (dole vpravo to žluté ...)
takto chceš aby to fungovalo ... zlutý jako text a světle zelený jako obrázek ... vyzkoušej si to a uvidíš ;) pokud chceš ještě pomoct s implementací jQuery řekni
jenikkozak
Profil
DEF:
Kvůli menu bych nestahoval javascriptovou knihovnu.
Nebude lepší použít obrázek na pozadí odkazu a měnit jej pomocí pseudotřídy hover? (Povídání je na stránce Jak zdokonalit odkazy.)
vospunt
Profil
nebo využít tohle :
<a href="někam.html"
onmouseover="document['obrazek'].src = 'druhy.gif' ;"
onmouseout="document['obrazek'].src = 'prvni.gif' ;">
    <img src="prvni.gif" name="obrazek">
</a>


ale já se přikláním k jQuery ... protože když se s tím naučíš využeješ např. jednoduchou stavbu AJAXu + nespočetné množství pluginů ... grafy, tabulky, slidery, dialogy atd atd ... pokud vytváříš nový web a chceš ho mít "IN" je opravdu postupovat s dobou a nepoužívat zastarelé metody jako je např iframe atd ....
vospunt
Profil
Oprava kódu

<a href="někam.html"
onmouseover="document['obrazek'].src = 'druhy.gif' ;"
onmouseout="document['obrazek'].src = 'prvni.gif' ;">
    <img onmouseover="this.src = 'druhy.gif' ;"
onmouseout="this.src = 'prvni.gif' ;" src="prvni.gif" name="obrazek">
</a>
jenikkozak
Profil
vospunt:
ale já se přikláním k jQuery
Prosím. Proč dělat věci jednoduše, když to jde složitě?
vospunt
Profil
jQuery je jednoduchý na použití a proč nevyužít jeho funkcí k vývoji dalších aplikací na webu když to usnadní práci
pcmanik
Profil
vospunt:
Zase vznika dalsi flame... Ak ma jQuery velke vyuztie v projekte, je spravne ho pouzit, ale na takto trivialne veci, ako je par efektov a par eventov sa skutocne neoplati tahat cely framework.
vospunt
Profil
proto jsem poslal skript kterým by šlo vyřešit tento problém ale že jsem řekl svůj názor ...
_es
Profil
DEF:
Možno by stačilo dať ten div do vnútra toho odkazu.
Síce nastane aj tak nežiadúca udalosť, no to sa dá vyriešiť časovaním podobne ako tu alebo tu.
joe
Profil
vospunt:
jQuery je jednoduchý na použití a proč nevyužít jeho funkcí k vývoji dalších aplikací na webu když to usnadní práci
Usnadní, pokud se používá rozumně.

DEF:
Na to nepotřebuješ JavaScript.

HTML
<a href="2011/australie.html">australie</a>


CSS
a {
background: url(stuj.jpg);
}

a:hover {
background: url(priprav.jpg);
}

a:active {
background: url(jed.jpg);
}

DEF
Profil *
Děkuju všem za příspěvky, překvapila mě rychlost i rozmanitost návrhů. Zkoušel jsem způsob od joeho, ale obrázek se vykreslil jen pod textem odkazu :-( pak jsem se zkusil ponořit do jQuery, ale i když jsem našel návod v češtině, nedal jsem to (byť by to byla asi nejelegantnější cesta). Nakonec jsem vyzkoušel návrh zápisu od vospunta a to funguje, byť je zápis dlouhý a představa 20-ti položek menu je ubíjející, funguje a asi bude muset, nejméně do doby, než pochopím strukturu jQuery :-)
Pokud je někdo z jmenovaných dívka, tak se omlouvám a domyslete si správnou koncovku ;-)
Ještě jednou všem díky!!!
vospunt
Profil
ale pokud chceš pomoct s jQuery napiš mi na ICQ
DEF
Profil *
vospunt:
Děkuju za nabídku, ale nejdřív do toho musím proniknout a pak teprve žádat o pomoc.
vospunt
Profil
sem taky takovej :D prve to zkouším ... 1000x a potom se ptám ale s jQuery u mě můžeš cokoli ... jo a kámoš má web ... www.jquery-navod.cz ... český návod na jquery ;)
Bubák
Profil
DEF:
Zkoušel jsem způsob od joeho, ale obrázek se vykreslil jen pod textem odkazu
Klasika, naštěstí je pomoc jednoduchá, stačí odkaz deklarovat jako blokový a zadat mu rozměry, nejčastěji podle velikosti obrázků, případně jde využít opakování obrázků, background-repeat.
a {
display: block;
width: 120px;
height: 50px;
line-height: 50px; /* vertikální centrování textu */
background: red url(stuj.jpg);
}

a:hover, a:focus {
/* Co se nemeni, znova nedeklarujeme! */
background: orange url(priprav.jpg); 
}

a:active {
background: green url(jed.jpg);
}


jQuery neřeší tvůj problém s tím, že když je myš nad textem odkazu, není nad obrázkem. Problém je, že v případě využití JS, což je i jQuery, se obrázek nezmění uživatelům, kteří upřednostňují ovládání z klávesnice před myší. Další problémy nastanou při vypnutých obrázcích, při vypnutých skriptech a pri vypnutém CSS.

V případě menu doporučuji použít na změnu obrázků CSS řešení, udělat menu přístupné při vypnutých obrázcích, nebo vypnutém CSS je pro takto stavěné menu triviální.
vospunt
Profil
tady říkáš když vypnu css tak mi jQuery nebude chodit ale ty to chceš řešit přes CSS ... ježiš ... to je jasný že kdo si to vypne nepoběží jak má ale .... kolik procent lidí to dělá a kolik procent lidí je normálních uživatelů kteří ani o funkci vypnutí JS atd ani neví !! a jquery to řeší ! onmouseleave reaguje po odjetí z obrázku i když přes obrázek je text !!
pcmanik
Profil
vospunt:
jQuery nic neriesi, su to obycajne js eventy. Ale zjavne si jeden z tych, ktory ani nevedia, ze nejaky JavaScript existuje.

jo a kámoš má web ... www.jquery-navod.cz

Na ten web by som sa radsej neodvolaval, je tam tolko zlych rad a chyb az to neni mozne. Oficialna dokumentacia je ovela lepsia. A ak neovladas anglictinu, tak potom nemas v tomto obore co robit.
vospunt
Profil
angličtinu ovládám já taky hledám pouze na anglických stránkách ale tazatel nevěděl a říkal že anglicky tomu nerozumněl tak jsem poradil
a pokud ty myslíš že nic neumím a máš třeba tento dotaz :
http://diskuse.jakpsatweb.cz/?action=vthread&forum=8&topic=122271&page=-1
a nevíš si rady ... tak základním problémem bývá kodování souboru ... pokud použiješ př UTF8 a do toho dáváš cp1250 udělá to bordel ... ale dobře tvrdej nick dělá tvrdýho chlapa
pcmanik
Profil
vospunt:
Fuu neviem o com hovoris, ale nevadi. Tam bola ina chyba a to ta, ze som mal zlu verziu dreamveaweru a ulozila ten subor zle a nedalo sa s tym nic spravit. A ze myslim ze ty nic nevies, tak sa odvolavas na moju chybu? To je ako dokaz toho, ze vsetko ovladas? A zbytocne sa nenavazaj, ten nick pouzivam uz asi 6 - 7 rokov, a nie kvoli tejto diskusii.

Za to ked sa pozreme na nejaky tvoj topic Tak je jasne, ze ten js absolutne neovladas, nakolko by si vedel. Ze miesto attr staci pouzit this.href.
Chamurappi
Profil
Reaguji na vospunta:
říkáš když vypnu css tak mi jQuery nebude chodit
Neříká, Bubák by takový nesmysl nikdy nenapsal.

kolik procent lidí je normálních uživatelů
Při dobře vymyšleném návrhu je úplně jedno, kolik jich je.

pokud použiješ př UTF8 a do toho dáváš cp1250 udělá to bordel
U textu OK těžko.
Příspěvky [#15] a [#17] až [#21] smažu. Nesmyslné osobní výpady nebudou tolerovány.
Bubák
Profil
vospunt:
V prvé řadě mám neodbytný dojem, že jsi doposud nepochopil, jaký problém DEF řeší. Tak extra pro tebe znova a pomalu:
- nad obrázkem je napozicovaný text
- pokud se najede myší na text nad obrázkem, dojde k opuštění obrázku a a obrázek se změní zpět
- zmíněný problém není řešitelný tím, že se místo JavaScriptu použije JavaScriptová knihovna
- řešení problému existuje, základem je mít obrázek a text ve stjném elementu, v tomto případě bych doporučil odkaz, a měnit obrázek podle událostí onmouseover a onmouseout tohoto elementu
- odkaz, která jsi sem dal [#2], problém neřeší, protože do obrázku nemůžeš vložit žádný element

Problémový DEFův JS kód a nastínění CSS řešení:
<style>
a.css {
  display: block;
  text-align: center;
  width: 30px;
  height: 30px;
  line-height: 30px;
  background: red url(http://teststranek.kvalitne.cz/css-rollover/ano-ne.png);
  font-size: 18px;
}
a.css:hover, a.css:active, a.css:focus {
  background-color: green;
  background-position: bottom;)
}
</style>

<h1>JavaScript</h1>
<a href=#>
<img width=30 height=30 border=0
src="http://www.jakpsatweb.cz/images/druhy.gif"
onmouseover="this.src = 'http://www.jakpsatweb.cz/images/prvni.gif';"
onmouseout="this.src = 'http://www.jakpsatweb.cz/images/druhy.gif';"><br>
<span style="position: relative; top: -30px; left: 0px; font-size: 18px">text</span></a>

<h1>CSS</h1>
<a class="css" href=#>text</a>
vospunt
Profil
říkáte nerejpat to zaprvé zadruhé pochopil sem to a za třetí mouseleave to řeší protože lze použít na jakýkoli element klidně i div img atd ...
Bubák
Profil
vospunt:
mouseleave to řeší protože lze použít na jakýkoli element klidně i div img atd ...
Pochop konečně naprosto základní věc, a to, že když je myš na elementu, který je napozicovaný nad obrázek, tak je nad elementem, který je napozicován nad obrázek a proto není nad obrázkem. Pokud tvrdíš něco jiného, prosím o živou ukázku, která bude využívat mouseleave obrázku, nad obrázkem budeš mít napozicovaný text a řešení nebyde vykazovat problém, kvůli kterému DEF položil dotaz.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0