Autor Zpráva
Mufna
Profil
Zdravím Vás. Řeším záležitost, kde mi možná (!?) může pomoci javascript. Jde jednoduše o to, že mám v HTML dva <div>y, levý s různými odkazy (klasika) a pravý s hlavním obsahem. Oba jsou floatované (left, right). V HTML kódu je nejprve zařazen pravý s hlavním obsahem, za ním pak levý s odkazy (takto to chci, kvůli logice stránky, resp. jejímu zobrazení s vypnutými CSS styly). Problém je ten, že když je hlavní obsah příliš dlouhý (obecně objemný či jinak složitý), tak mi při načítání jednotlivých stránek nezůstane levý <div> takzvaně "stát" (je to samozřejmě logický, když je v kódu až jako druhý). Moc se mi to ale nelíbí, tedy to, že se zobrazí až s určitou prodlevou. Šlo by nějak javascriptem zařídit, aby se vždy nejprve načetl a zobrazil levý <div>, a to i za situace, kdy je v kódu uveden až za pravým <div>em ? Prosím poraďte mi, stačí nějaký odkaz na možné řešení nebo alespoň nějaké "nakopnutí". Předem díky.
Radek9
Profil
Mufna:
Já jsem teda toho názoru, že by mělo být menu první. Prostě jako navigace. Normálně bych ho dal před obsah a na javascript se vykašlal.
Ale pokud si za tím stojíte, tak pomocí JS nastavte divu s obsahem display: none; a poté třeba za desetinu vteřiny mu nastavte display: block;.
Mufna
Profil
Radek9
jsem ... toho názoru, že by mělo být menu první
V tom bloku s odkazy není menu (resp. nedá se to přímo nazvat menu ve smyslu hlavního menu celé webové stránky). Jsou tam odkazy na "doplňková" témata, články atd.

nastavte divu s obsahem display: none; a poté třeba za desetinu vteřiny mu nastavte display: block;
díky za nápad pro řešení, no tohle mi ale nepřipadá moc šikovný ... nejde to nějak jinak, přes nějaké onload v tagu <body> ? Že by ten skript projel strukturu HTML a pak to podle nastaveného pravidla zobrazil v požadovaném pořadí ?
Bubák
Profil
Mufna:
Že by ten skript projel strukturu HTML
A jak ji má projet, když se stránka teprve načítá?

při načítání jednotlivých stránek nezůstane levý <div> takzvaně "stát"
Nevím, co máš na mysli. Zkus to vysvětlit a možná se najde řešení.
Je možné, že by pomohl odkaz na některou ze stránek s dlouhým obsahem.
sysel
Profil
Inu nevím, zda nenavrhuji něco příliš triviální, ale snad by šlo nejprve načíst obsah <div>ů do nějakého řetězce či polí a pak je v požadovaném pořadí, třebas právě na popud událost onLoad, vyplnit. Čili něco jako:

<html>
<head>
....
<script>
var div_levy="něco vlevo";
var div_pravy="něco vpravo";
function vypln() 
{ document.getElementById("levo").innerHTML= div_levy;
  document.getElementById("pravo").innerHTML= div_pravy;
}
</script >
</head>
<body onLoad="vypln()">
<div id="levo"></div><div id="pravo"></div>
</body>
</html>


Nesnažím se napsat fungující vzor, jen se pokouším nastínit javascriptové řešení.
Mufna
Profil
sysel
Nesnažím se napsat fungující vzor, jen se pokouším nastínit javascriptové řešení.

díky za nápad, pokusím se to třeba nějak takto dát dohromady. Jinak jsem samozřejmě ani nečekal, že by mi tu někdo dal perfektní hotové a fungující řešení, chtěl jsem jen, aby mě k tomu někdo nějak nakopnul.

Bubák
pomohl by odkaz na některou ze stránek s dlouhým obsahem

Tak třeba na tomto webu je to řešené tak, jak myslím - tzn. obsah celého levého sloupce, tzn. všech těch boxů vlevo, je až za obsahem hlavního bloku (řekněme třeba, že je teda dlouhý). Při procházení webem pak nevzniká žádná prodleva mezi načítáním hlavního bloku a levých boxů, alespoň na mém kompu se to načte všechno najednou. Takto jsem myslel to, že levý sloupec "zůstane stát" (tzn. nezobrazují se jednotlivé prvky stránky nějak postupně s mírnými prodlevami, ale prostě se to zobrazí pěkně všechno najednou). A myslím, že toho se dá dosáhnout pouze nějakým javascriptem, nevím jak by se tohle dalo řešit jinak (třeba přes samotné PHP).

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