Autor Zpráva
Hapipo
Profil
Ahoj,
mám na webu script na změnu loga při scrollování. Vše funguje naprosto v pořádku, až na to, že když jsem např. v polovině stránky a dám refresh, tak se barva dá opět do základní barvy, dokud zase mírně se stránkou nepohnu.

Tady je stávající script
        <script>
            $(function(){
                $(window).scroll(function(){
                    if($(this).scrollTop()>50){
                        $(".site-logo").attr("src","img/logo_color.svg");
                    }

                    else{
                        $(".site-logo").attr("src","img/logo_white.svg");
                    }
                })
            })
        </script>

Prosím o radu, jak tento problém fixnout.

Díky
Keeehi
Profil
Těch způsobů je spousta. Všechny spočívají v tom, že je to prostě potřeba spustit i při načtení stránky, ne jen při scrollu. Jedna z možností je to vyčlenit do funkce a tu prostě zavolat.
        <script>
            $(function(){
                var logo = $(".site-logo");
                var j_window = $(window);
            
                function logoChanger() {
                    if(j_window.scrollTop()>50){
                        logo.attr("src","img/logo_color.svg");
                    }
                    else{
                        logo.attr("src","img/logo_white.svg");
                    }
                }
            
                logoChanger();
                j_window.scroll(logoChanger);
            })
        </script>

+ přidal jsem tam lehkou optimalizaci, ať se ten element s logem nemusí hledat při každém otočení kolečkem. Pokud se ale manipuluje nějak s DOMem v okolí loga, může se stát, že to pak nebude fungovat. V takovém případě je ta optimalizace potřeba vrátit zpět. To ale nemění nic na způsobu řešení toho původního dotazu.
Kcko
Profil
Případně

$(window).scroll(function(){
                    if($(this).scrollTop()>50){
                        $(".site-logo").attr("src","img/logo_color.svg");
                    }
 
                    else{
                        $(".site-logo").attr("src","img/logo_white.svg");
                    }
                }).trigger('scroll');
Hapipo
Profil
Děkuji, funguje

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