Autor Zpráva
doby
Profil *
Dobrý den,

chci se zeptat, jak pomocí JS mohu vypočítat celou výšku webu a jak kontrolovat scroll, abych v určitém bodě scrollu mohl udělat nějakou akci?

Děkuji za reakce. :)
RastyAmateur
Profil
doby:
Vytvořil jsem živou ukázku, kde je to asi dobře vidět...

Celou výšku stránky vypočteš pomocí $(document).height()
$(dosument).scrollTop() ti vrátí, kde aktuálně jsi.
Scroll kontroluješ pomocí funkce scroll()

Jak je vidět, používám jQuery!
doby
Profil *
až takhle to je triviální :)) děkuji mnohokrát :)
RastyAmateur
Profil
doby:
Věřím, že problémy přijdou při řešení konkrétních detailů, uvidíš :) Jinak samozřejmě není zač!
doby
Profil *
Svůj účel to splnilo jak jsem chtěl :) jen mi přijde, že mám celý ten chod takový zasekaný... koukni prosím na in1.prostor.as - MENU, přes telefon a porovnej to s menu co mají na avast.cz, jinak napadá tě jak zobrazovat menu zprava doleva?

jQuery

// Mobile MENU
    jQuery(".side_menu_button, .close").click(function() {
        var mobileMenu = jQuery(".mobile_menu");
        var menuHeight = jQuery(document).height();

        if(mobileMenu.hasClass('active')){
            mobileMenu.animate({
               width: "0%"
            }, 250).removeClass('active').addClass('inactive');
        }else{
            mobileMenu.animate({
                width: "100%"
            }, 250).removeClass('inactive').addClass('active');

            mobileMenu.css({
                "min-height": menuHeight
            });
        }
    });

    jQuery(document).scroll(function(){
        var mobileMenu = jQuery(".mobile_menu");

        if(mobileMenu.hasClass('active'), jQuery(document).scrollTop() > 550){
            mobileMenu.animate({
                width: "0%"
            }, 250).removeClass('active').addClass('inactive');
        }

    });
RastyAmateur
Profil
doby:
Mně se to neseká. Jen občas se mi to vysune dýl... Netuším, co s tím... Ovšem stále to jde plynule.
Čárku v podmínce vidím poprvé. Nemůže to být tím? Ale nevím, s tím opravdu nemám žádnou zkušenost.
doby
Profil *
Jak by jsi napsal podmínku aby museli platit obě? zkoušel jsem tam dát AND a to mi nefungovalo
RastyAmateur
Profil
doby:
&&
doby
Profil *
Tak to mě fakt nenapadlo :D vyřešilo to problém opozděného otevírání :)) byl tam problém že ta ta podmínka při scrollování furt běžela....takže to zasekalo celkový script :) teď je to už v pořádku :) jinak napadá tě způsob jak otevírat menu zprava doleva?
RastyAmateur
Profil
doby:
Nevím, kde to máš zarovnané? Pokud to máš vlevo, zkus to zarovnávat doprava... Jinak netuším. Je to opravdu tak důležité? :)
Chamurappi
Profil
Reaguji na dobyho:
Proč necháváš při každém rolování prohledat celý dokument a najít element s třídou mobile_menu? Ono snad to, co se najde, může být proměnlivé?
Proč schováváš menu o pěti položkách za rozklik? Ono snad není žádoucí, aby ho lidi používali?
Pokud si otevřu menu, které mi překryje celý obsah, a pak zmáčknu prohlížečové zpět, protože ho chci zavřít (což nemalá část lidí dělá), co se stane?

jQuery(document).scrollTop() > 550
Proč zrovna 550? Ty víš, jak je vysoký obsah menu? Nevíš, obsahuje text => může mít různou velikost.
Když uživatel odroloval pod položky menu, je jisté, že chce vidět odrolovaný obsah? Co když přejel omylem, to musí zase vyjet nahoru, aby si mohl menu zpátky rozbalit? Přijde mi to celé takové divné.

jinak napadá tě jak zobrazovat menu zprava doleva?
Stačí trochu upravit CSS. Teď nastavuješ left: 0, nastavuj right: 0. I to rozbalování jde udělat skoro bez JS… (rozhodně bez jQuery)

Jak by jsi napsal podmínku aby museli platit obě? zkoušel jsem tam dát AND a to mi nefungovalo
Zeptat se vyhledávače, jak se píše AND v JavaScriptu, tě nenapadlo? Ve kterém programovacím jazyce funguje čárka jako AND?


Reaguji na RastyAmateura:
Čárku v podmínce vidím poprvé.
Čárka ve výrazu funguje jako operátor zapomnění. Vyhodnotí se nejprve první část, výsledek se zahodí, pak se vyhodnotí druhá část a její výsledek je výsledek toho celého výrazu.
Výsledkem 4, 7 je 7, výsledkem 7, 4 > 7 je false atd. (to sis mohl klidně vyzkoušet, jak to funguje)
doby
Profil *
Reaguji na Chamurappi:

Proč necháváš při každém rolování prohledat celý dokument a najít element s třídou mobile_menu? Ono snad to, co se najde, může být proměnlivé?
Nemůže :) ale nenapadá mě jak jinak to napsat :) poradíš?

Proč schováváš menu o pěti položkách za rozklik? Ono snad není žádoucí, aby ho lidi používali?
Menu je testovací, bude obsahovat více položek ...

Pokud si otevřu menu, které mi překryje celý obsah, a pak zmáčknu prohlížečové zpět, protože ho chci zavřít (což nemalá část lidí dělá), co se stane?
Většina uživatelů, když si otevře menu, tak hledají konkrétně nějakou sekci...tudíž si většinou vyberou a přejdou na jinou stránku, kde je opět menu schované. "Co se stane?" ... vrátí se na předešlou stránku :)

Proč zrovna 550? Ty víš, jak je vysoký obsah menu? Nevíš, obsahuje text => může mít různou velikost.
Když uživatel odroloval pod položky menu, je jisté, že chce vidět odrolovaný obsah? Co když přejel omylem, to musí zase vyjet nahoru, aby si mohl menu zpátky rozbalit? Přijde mi to celé takové divné.

Je to odhad při testování, jak by jste to napsal vy?

Zeptat se vyhledávače, jak se píše AND v JavaScriptu, tě nenapadlo? Ve kterém programovacím jazyce funguje čárka jako AND?
To mě očividně nenapadlo, to by se na to jinak neptal :) co se týče čárky, tak to bylo pouze z logického usouzení...


Děkuji za radu a další případné rady :)
RastyAmateur
Profil
Reaguji na Chamurappi:
(to sis mohl klidně vyzkoušet, jak to funguje)
V tu chvíli jsem hledal v googlu něco jako "js condition ,", ale samosebou mi to nic nenašlo (ono většinou, když zadávám konkrétníá "neabecední" znaky, tak to málokdy něco najde). Přímo to vyzkoušet mě to nenapadlo a ani toho nelituji, na tento výsledek (zapomnění) bych se asi nedopracoval...

Zeptat se vyhledávače
Nic proti tobě! Tuto větu zde píše skoro každý. Já se snažím to omezit. Ale většina věcí a návodů jde najít na Googlu. Kdyby každý vše hledal na Googlu, nebyla by tato diskuse téměř zbytečná? 1 příspěvek denně, 2 uživatelé denně...
Keeehi
Profil
RastyAmateur:
ono většinou, když zadávám konkrétníá "neabecední" znaky, tak to málokdy něco najde
proto bys měl příště hledat "js condition comma"

Tuto větu zde píše skoro každý.
Protože to je lenost lidí. Místo aby hledali, nebo to na co se ptají vyzkoušeli, tak raději se tu zeptají. Zeptají na něco, co už řešil někdo před nimi a na co už existuje odpověď.

nebyla by tato diskuse téměř zbytečná?
Právě naopak, bylo by naprosto perfektní. Kdyby se ti co tu radí nemuseli zabývat již vyřešenými dotazy, měli by více času na ty nové, netriviální a zajímavé.
RastyAmateur
Profil
Keeehi:
Ovšem na to by 80% uživatelů diskuse neměli schopnosti... Zbyl bys tu akorát ty s adminama, anonymním, lionelem, apodobně :D
Chamurappi
Profil
Reaguji na dobyho:
ale nenapadá mě jak jinak to napsat :) poradíš?
Očividně si umíš nalezený element přiřadit do proměnné. Tak ho do ní přiřaď jednou a ne při každém odrolování…

Většina uživatelů, když si otevře menu, tak hledají konkrétně nějakou sekci...
A když ji v něm nenajdou, zmáčknou Zpět… čímž tvůj web třeba opustí.
I ten předpoklad, že je s cílem najít nějakou sekci napadne kliknout zrovna na ventilaci, nebude zcela neotřesitelný.

Je to odhad při testování, jak by jste to napsal vy?
Neznám skutečné zadání. Menu o pěti položkách bych naskládal do dvou řádků a žádné rozklikávání bych nedělal.
Jinak bych uvažoval o tom, že by se rozkliknutím obsah buď viditelně odsunul, nebo nahradil. Druhá možnost by šla udělat přes odkaz na kotvu a :target, rovnou by řešila i tlačítko Zpět, žádný skript by nebyl potřeba (možná krom křížku, který by měl onclick="history.back()"). Překrývání a vrstvení věcí přes sebe mi přijde většinou nepraktické…


Reaguji na RastyAmateura:
Nic proti tobě! Tuto větu zde píše skoro každý.
Ne, nepíše. Pleteš si to s příspěvky posílajícími na vyhledávač, které obvykle mažu. Ale když člověk neprojeví ani špetku iniciativy u triviální otázky, tak jsem zvědavý, co ho k tomu vede.
Nevím, proč to rozpatláváš. Já se ptám, proč položil zbytečně otázku člověku, ty si tu povídáš o tom, jestli se ho náhodou neptám zbytečně… to je fakt děsně užitečné.

V tu chvíli jsem hledal v googlu něco jako "js condition ,"
Já psal, že sis to mohl vyzkoušet, ne vyhledat. Dál to neřeš.

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: