Autor Zpráva
Radim24
Profil *
Ahoj, prosím jestli by mi někdo mohl pomoct s funkcí pro zabalování menu.

Zde mám hotové menu:

onmouseout="hide('smenu1')";

Jenom mi to nejde zabalit, když vyjedu myší z rozbalovacího menu.
Připravil jsem si fnc hide(); a tu jsem původně načítal z

<dd> nebo zkoušel jsem taky z <ul>

jenže v takovém případě submenu zmizí ihned, po najetí myši na submenu.
Radim24
Profil *
toto je testovací adresa:
http://krestan.cz/menu/
peta
Profil
Radim24
jestli je to v ie, tak zkus nulovat marginy a ramecky
Radim24
Profil *
No, ono to celé blbne i v Mozille, potřebuju zjistit proč se to skrývá, když bych aktivoval tu fnc hide() na dd nebo ul nebo jak to vyřešit.

Marginy jsou nulované:

dl, dt, dd, ul, li {
margin: 0;
padding: 0;
list-style-type: none;
}
peta
Profil
Radim24
aha, to je trosku jiny problem... marginy resi ten problem, kdyz se menu skryva samo a neda se najet na polozku. Margin zpusobi posunuti a presne v tom miste pak nejsi ani na menu, ani na rozbalenem.

V mozille ti to roluje kamsi silene nahoru. To je ale problem CSS ne JS.
Skryvani je akce onmouseout, tu tam nikde nevidim. jestli to treba nebude ten problem.
Kolem zabal bych si dal dvojity cerveny ramecek, at vis, kde se ti oblest zabaleni prave nachazi.

Dalsi problem je tam treba michani float a position do jednoho. Kombinace obou se v kazdem prohlizeci projevuji jinymi chybami.

onmouseover="show(3)";
ten strednik ma byt pred " nebo vubec

<-- dd {position: relative; left: 150; }
dl {float: left;}
dd#smenu1 { top: -40; }
dd#smenu2 { top: -40; }
dd#smenu3 { top: -40; }
dd#smenu4 { top: -40; }
dd#smenu5 { top: -40; }
dd#smenu6 { top: -40; }
dd#smenu7 { top: -40; }
dd#smenu8 { top: -60; }
dd#smenu9 { top: -80; }
dd#smenu10 { top: -100; }
dd#smenu11 { top: -120; }
dd#smenu12 { top: -140; }
dd#smenu13 { top: -160; }
-->
a toto je co? takhle se pise CSS komentar?
Pod to jsem napsal
div.zabal {
float:none;
clear:both;
width:1000px !important;
height:1000px !important;
border-style: solid;
border-width: 20px;
border:20px solid #f00 !important;
padding:20px;
}
a zazrak, zabaleni zacalo fungovat. Takze neco pred tim ovlivnuje divy.
peta
Profil
a chybova konzola ve FF pise:
Varování: Očekáván selektor. Sada pravidel ignorována kvůli špatnému selektoru.
Zdrojový soubor: http://krestan.cz/menu/
Řádek: 66
Varování: Očekáván selektor. Sada pravidel ignorována kvůli špatnému selektoru.
Zdrojový soubor: http://krestan.cz/menu/
Řádek: 21
coz budou zrejme ty chyby

mimochodem
<-- neni ani html ani css komentar
V prvni rade ti html validator musi rici, ze je stranka validni. Pak ma smysl hledat problem v js / css
Radim24
Profil *
Ahoj Peto,
pouzil jsem nejprve:

1. Je tam třináct položek menu a dlouhý seznam položek submenu. Někde od 8. položky menu to normálně šlo dolů - celé rozbalené menu. Chtěl jsem aby to nepřečnívalo dolu, ale šlo to nahoru. Když jsem použil position relative top -čislo tak pak nešl najet na položky submenu, to se zabalilo.

2. zkoušel jsem relative position left ... cca 150 px protože menu se rozbalovalo původně směrem dolů. Tedy chtěl jsem dát submenu doprava. jenže to ti nechá obrovský blok vpravo, tj. prostor, ze kterého se to rozbalené menu přesunulo. Mým hlavním cílem je mít všechny položky menu na jedné stránce.

3. zkoušel jsem position absolute, viz současná situace

Jestli chceš nakopíruju všechny tři chybové řešení + řešení originálu, které funguje, ale ne pro 13 položek aby zůstali všechny na jedné stránce včetně submenu

Toto řešení menu se mi líbí kvůli jendoduchosti a chtěl bych ho rozjet
Radim24
Profil *
Ja mam FF Firebug - ale nevím jak mám dát kontrolu te validity.

Pokud hledáš odkud volám fnc hide():

<DIV class=zabal onmouseover="hide();">
</DIV>

Vpravo od menu je DIV zabal.

Ja na to mrknu.
Radim24
Profil *
S tím komentarem to jsem pekne zvoral, bral jsem to jako html...

Zkousel jsem to tvoje reseni, ale vidim ten obrovsky DIV dole pod menu, tim si chtěl dokázat co? Předpokládám, že jsi ho chtěl mít někde nahoře...
Radim24
Profil *
Menu mi jede, ale ten DIV mám zatím dole... Ale i tak tomu říkám velký pokrok. Akorád nevím co jsi to tam napsal za instrukce, můžeš mi to prosím vysvětlit? Dík

??
width:1000px !important; /* ?? */
height:1000px !important; /* ?? */
border-style: solid;
border-width: 20px;
border:20px solid #f00 !important; /* ?? */
Radim24
Profil *
Oprava: Menu jede jak má pouze na IE, ale FF ne. V FF není design menu, takže se nakonec nevejde na obrazovku.
peta
Profil
Radim24
Temi velkymi hodnotami jsem se znazil dopatrat, kam se ti podela oblast pro zabaleni menu. Upravoval jsem to puvodne nahore, kde jsem nic nedocilil. Pak jsem to presunul dole a hele, ta oblast se objevila.
Jinou schovavaci cast tam nemas.

Menu jsem nehodnotil, podle mne je uplne na 2 veci, protoze ve ff ti spodni polozky rozbali menu kamsi nedostupne nahoru. Pak tam mas kombinovane float a position, coz jsou 2 opacne vlastnosti a jestlize se navzajem pobiji, tak muze byt vysledkem nahodile chovani.

Vubec, 10x10 polozek nema, co delat v menu. Zrovna tam muzes dat rozbalovaci select. serazeny abecedne se vsemi 100 polozkami.
Menu ma byt jednoduche a prehledne. Napriklad v pripade univerzity bys do menu dal veskere obsazene stranky? A to ti neva, ze kazda fakulta ma vlastni studijni, uci 70 predmetu a ke kazdemu predmetu jsou nejake materialy. Fakult byva tak 5. To menu by melo 1000 polozek :)
Radim24
Profil *
Já tomu říkám menu, ale ono to vlastně není menu. Ale jak jinak mam tomu rikat? V tom menu by meli byt nejake kategorie na roztrideni clanku a diskusi a v submenu budou nejctenejsi diskuse, nejdiskutovanejsi, nove clanky, nove komentare a tak. Melo by byt umistene na prave strane. Kdybych chtel udelat prvek select se vsemi diskusemi tak by to bylo hrozne dlouhe a clovek by v tom tezko hledal. Kompletni vypisy clanku a diskusi budou samostatne. Tohle ma byt takove menu ktere umozni uzivateli se rychle dostat k tem nejaktualnejsim vecem.

To s tim position absolute byl jen pokus, vsak jsem to uz vcera v noci na te adrese aktualizoval, nevim jestli sis toho vsiml. Je to odkomentarovane /* */...

Ale ted se zas divam, ze to nedela styly ani v IE, tak nekde mam chybu a tu ted musim opravit, at vidim jestli to funguje. Ozvu se ještě pozdeji...
Radim24
Profil *
Jo a napis co znamena to !important; ?? to neznam
Radim24
Profil *
Zjistil jsem, že html kit, tedy ta moje stara verze klidne ignoruje nespravne definovanou hlavičku, takže se neni co divit, že mi html kit ukzaoval styly ale prohlizece ne. Tak jsem to uploadnul a vypadá to, že to funguje, akorá d budu muset něco vymyslet s tím divem, aby se ukazoval vedle toho menu. Díky moc za pomoc, snad už zbytek zvládnu...
peta
Profil
Radim24
google.com important css
CSS je o moc bohatsi nez jen important. Ale otazka je, co z nej prohlizece podporuji.

important je konkretne oznaceni pro prebiti veskerych vlastnosti
b {color:x}
a b {color:y}
c b {color:z}
<a> <c> <b> ...
a kdyz das nezo z toho !important, tak by to melo prebit ty ostatni. Pokud tam das ale id, tak ma tusim prednost. Important bych pouzival pouze pro ladeni a to vetsinou zrejme resis tim, ze pridas kolem prvku ramecek, abys videl, ze s nim opravdu pracujes, ale barvu pisma ti prebiji neco jineho. Kdyz se nezobrazi ani ramecek, a nikde ramecky nepouzivas, pak nejsi v danem prvku nebo jej prebiji jiny externi styl.
V takovem pripade je nejlepsi zacit od posledni pozice, kde to jeste reaguje na zmenu. Cili treba mas
a.vybrane {...}
a je to v tabulce
table a {color:#f00;}
barva se zmeni, pak je to ok. barva se nezmeni, tak treba
body a {color:#f00;}
Radim24
Profil *
No, je to zajimavé. Ale prosím tě ještě o jednu věc.

Napadlo mě skvělé řešení, vložit celé menu do DIV zabal, jen budu muset upravit ty dvě funkce aby s spolu spolupracovali. V PHP se nastavuje proměnná global, abych mohl pracovat s proměnnou mimo fnc. Ale jak se to dělá u js?
Radim24
Profil *
Podl php by to bylo takto:

function show(id) {
global $pom;
$pom = 1;
....
}

function hide(id) {
global $pom;
if (pom==1) $return;
...
}

dat do do js
Radim24
Profil *
Asi to takhle nepujde, tak zkusim to menu "obalit" divama typu zabal. Tak to neřeš.
Radim24
Profil *
Peťo, promiň, že tě zase otrvavuju, ale chtěl bych tě poprosit snad o poslední věc... Já vím, je to trapné, učím se ty blokové prvky takovou dobu a stále mi to nejde. Chtěl bych dodělat to menu, ale mám problém s tím, že mi ty nejdou dát tři prvky na jednu lajnu. Vytvořil jsem jakoby tabulku na tři řádky a prostřední řádek má tři sloupce. Horní a dolní řádek má mít výšku 1 px, a šířku menu. Levý a pravý okraj má mít šířku 1px a výšku menu. Ten druhý řádek, tj. buňky 2,3,4, kde ve 3 je umístěné menu, nejdou na jedno menu. No, nevím co s tím... Prosím poraď, ať už to konečně dokončím. Dík
Radim24
Profil *
Tak menu jsem po dléouhé době vyřešil. Nakonec mě příšlo jako Šalomounské řešení místo abych definiční list vkládal do dalšího definičního listu ... tak jsem to prostě vložil do tabulky. Sice jsem se zavázal, že už tabulky nebudu používat, ale zde se to krásně hodí. Pár řádku navíc a funguje to.

www.krestan.cz/pokus

Vím, ještě to chce trochu vyladit css, ale to už dnes nemám čas řešit.
Radim24
Profil *
Jo a ještě poznámka. Ještě se občas stane, že při pokusu rozbalit menu a najet na něj, submenu zmizí. Napadá vás jak to ošetřit? Také Když zajedu myší hodně doprava, mimo submenu, menu se neschová - nějaký nápad jak to vyřešit?

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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

0