• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Nieprawidłowy kod JSS - header na reaguje na scroll-up/ down

Object Storage Arubacloud
0 głosów
265 wizyt
pytanie zadane 14 marca 2022 w JavaScript przez Kufel Nowicjusz (210 p.)

Panowie, mam problem z ustawieniem sekcji nawigacyjnej w sposób aby dzięki JSS na scroll-down sekcja się chowała, a scroll-up opuszczała w dół do wizerunku dla użytkownika.

Działa tylko jedna funkcja poleceń dla pojawiania się menu z prawej strony i chowania się głównej sekcji nawigacji na button.

 

Funkcja dla scrollowania nie działa. :( Uncaught SyntaxError : Unexpected Token '<'

Pomożecie ?

<!DOCTYPE html>
<html lang="pl">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css"
        integrity="sha512-YWzhKL2whUzgiheMoBFwW8CKV4qpHQAEuvilg9FAn5VJUDwKZZxkJNuGM4XkWuk94WCrrwslk8yWNGmY1EduTA=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />

    <meta name="description" content="">

    <meta name="keywords" content="">
    <title>Document</title>


    <!--FONT-->
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link
        href="https://fonts.googleapis.com/css2?family=Montserrat:wght@100;200;300;400;500;600;700;800;900&display=swap"
        rel="stylesheet">

    <!--CSS-->
    <link rel="stylesheet" href="/metabiome.css">

    <!--JAVA-->
    <script type="text/javascript" src="observers.js"> </script>

    <!--FONTAWESOME-->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css"
        integrity="sha512-YWzhKL2whUzgiheMoBFwW8CKV4qpHQAEuvilg9FAn5VJUDwKZZxkJNuGM4XkWuk94WCrrwslk8yWNGmY1EduTA=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>


<body>

    <header>
        <div class="header">
            <div class="navbar">
                <a href="index.html"><img class="logo" src="/Logo/Metagen_1.0.png"></a>
                

                <div class="menu">
                    <ul>
                        <li><a href="index.html">Start</a></li>
                        <li><a href="onas.html">O nas</a></li>
                        <li><a href="programy.html">Programy</a></li>
                        <li><a href="#badania">Laboratorium</a></li>
                        <li><a href="kontakt.html">Kontakt</a></li>
                    </ul>
                </div>

                <div class="toggle"></div>

                <div class="menu2">
                    <a href="index.html"><img class="logo3" src="/Logo/Metagen_1.0.png"></a>
                    <ul>
                        <li><a href="index.html">Start</a></li>
                        <li><a href="onas.html">O nas</a></li>
                        <li><a href="programy.html">Programy</a></li>
                        <li><a href="badania.html">Laboratorium</a></li>
                        <li><a href="kontakt.html">Kontakt</a></li>
                    </ul>
                </div>  
            </div>
        </div>
    </header>
    

    
    <script>

        const body = document.body;
            let lastscroll = 0;

            window.addEventListener('scroll' , () => {
                const currentScroll = window.pageYOffset

                if (currentScroll <= 0 {
                    body.classList.remove("scroll-up")
                }

                if (currentScroll > lastScroll && !body.classList.contains("scroll-down")) {
                    body.classList.remove("scroll-up")
                    body.classList.add("scroll-down")
                }

                if (currenScroll < lastScroll && body.classList.contains("scroll-down")){
                    body.classList.remove("sroll-up")
                    body.classList.add("sroll-down")
                }

            
                lastScroll = currentScroll;

            })
    </script>

    <script>
        
        const menuToggle = document.querySelector('.toggle')
        const menu = document.querySelector('.menu')
        const menu2 = document.querySelector('.menu2')
        const logo = document.querySelector('.logo')
        
        const innerheader = document.querySelector('.innerheader')


            menuToggle.addEventListener('click', () => {
        
            menuToggle.classList.toggle('active')
            menu.classList.toggle('active')
            menu2.classList.toggle('active')
            logo.classList.toggle('active')

        })

    </script>

   
    
</body>




</html>
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@100;200;300;400;500;600;700;800;900&display=swap');

:root{

    --primary-color:
}
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: 'Montserrat', sans-serif;

    list-style: none;
    text-decoration: none;
}

html{
    scroll-behavior: smooth;
    overflow-y: scroll;
}

body{
    height: 400vh;
    width: auto;
    overflow: hidden;
  
  background-color: green;
}

/* Header &  Menu & Logo */

.header{
    width: auto;
    height: auto;
}

.navbar{
    width: 100%;
    height: 100px;

    padding: 40px 200px;

    position: fixed;

    top: 0;
    left: 0;

    z-index: 1000;
    
    display: flex;
    align-items: center;

    transition: 0.5s;

    background-color: #012F4A;
}
.navbar a{
    height: 30.84px;

    align-items: center;
}

.menu {
    width: 550px;

    position: absolute;

    top: 40px;
    left: 352px;  
}
.menu.active {
    display: none;
}
.menu ul{
    display: flex;

    position: relative;

    justify-content: space-between;
}
.menu ul li{

    width: auto;
    height: auto;

    position: relative;
}
.menu ul li a {
    text-decoration: none;
    font-size: 1.1em;
    color: white;

    font-weight: 400;

    transition: 0.25s;

    letter-spacing: 1px;
}
.menu ul li a::before{
    content: '';
    position: absolute;
    width: 100%;
    transform: scaleX(0);
    height: 1px;
    bottom: 0;
    left: 0;
    background-color: white;
    transform-origin: middle;
    transition: transform 0.25s ease-out;
}
.menu ul li a:hover::before{
    transform: scaleX(1);
    transform-origin: middle;
}

.menu2 {

    width: 212.84px;
    height: 100vh;

    padding: 0 40px;
    position: absolute;

    top: 0px;
    right: 0px;

    display: flex;

    flex-direction: column;

    background-color: #012F4A;

    transform: translateX(212.84px);

    transition: 0.4s;
}
.menu2.active{
    transform: translateX(0px);
}
.menu2 ul{
    width: 100%;
    height: 100vh;

    flex-direction: column;

    display: flex;
    justify-content: space-between;

    padding: 325px 0px;
}
.menu2.active ul{

    width: 100%;
    flex-direction: column;

}
.menu2 ul li a {
    width: 100%;

    color: white;
    font-size: 1.2em;
    font-weight: 500;

    transition: 0.25s;
}
.menu2 ul li a:hover{
    color: #9d0208;
    font-size: 1.3em;
}

.logo{
    width: 112px;
    height: 30.84px;

    align-items: center;

    cursor: pointer;

    object-fit: cover;

    transform: scale(1);
    
    transition: 0.25s;
}
.logo:hover{
    transform: scale(1.025); 
}
.logo.active{
    display: none;
}
.logo3{

    width: 112px;
    height: 30px;

    object-fit: cover;

    position: absolute;

    top: 40px;

    transform: scale(1); 

    transition: 0.25s;

    cursor: pointer;
}
.logo3:hover{
    transform: scale(1.025); 
}

.toggle{
    width: 20px;
    height: 30.84px;

    position: absolute;

    top: 40px;
    right: 200px;

    background-color: white;
    background-repeat: no-repeat;
    background-size: 30px;
    background-position: center;

    filter: invert(1);

    cursor: pointer;
}
.toggle.active {

    background-color: white;
    background-repeat: no-repeat;
    background-size: 25px;
    background-position: center;

    right: 252.84px;

    filter: invert(1);
}

/*** scroll styles header ***/

.scroll-down header {
    transform: translate 3d (0, -100%, 0);
}

    .scroll-up header{
        filter: drop-shadow(0 -10 20px rgb(170,170,170))

    }


<script>
        
        const menuToggle = document.querySelector('.toggle')
        const menu = document.querySelector('.menu')
        const menu2 = document.querySelector('.menu2')
        const logo = document.querySelector('.logo')
        
        const innerheader = document.querySelector('.innerheader')


            menuToggle.addEventListener('click', () => {
        
            menuToggle.classList.toggle('active')
            menu.classList.toggle('active')
            menu2.classList.toggle('active')
            logo.classList.toggle('active')

        })

const body = document.body;
            let lastscroll = 0;

            window.addEventListener('scroll' , () => {
                const currentScroll = window.pageYOffset

                if (currentScroll <= 0 {
                    body.classList.remove("scroll-up")
                }

                if (currentScroll > lastScroll && !body.classList.contains("scroll-down")) {
                    body.classList.remove("scroll-up")
                    body.classList.add("scroll-down")
                }

                if (currenScroll < lastScroll && body.classList.contains("scroll-down")){
                    body.classList.remove("sroll-up")
                    body.classList.add("sroll-down")
                }

            
                lastScroll = currentScroll;

            })

    </script>

Poniżej załączam kod i link do edytora kodu online:

https://codepen.io/pen/

 

 

komentarz 14 marca 2022 przez ScriptyChris Mędrzec (190,190 p.)

 Funkcja dla scrollowania nie działa. :( Uncaught SyntaxError : Unexpected Token '<'

Do którego miejsca w kodzie odnosi się ten błąd? 

Poniżej załączam kod i link do edytora kodu online:

Link do CodePen jest "pusty".

 

komentarz 14 marca 2022 przez ScriptyChris Mędrzec (190,190 p.)

Masz trochę błędów składniowych:

  • w linii 84 brakuje nawiasu zamykającego dla if
  • w linii 79 tworzysz zmienną lastscroll, a w 88 i 93 odnosisz się do niej jako lastScroll
  • w linii 82 tworzysz zmienną currentScroll, a w 93 odnosisz się do niej jako currenScroll

Jak je naprawisz, to dopiero analizuj dlaczego kod nie działa tak, jak chcesz.

komentarz 14 marca 2022 przez Kufel Nowicjusz (210 p.)

@ScriptyChris, to był link, kod należało wpisać, nie da rady inaczej

komentarz 14 marca 2022 przez Kufel Nowicjusz (210 p.)
edycja 14 marca 2022 przez Kufel

dzięki, poprawiłem i sam jeszcze znalazłem dwa błędy mianowicie w trzecim warunku "if"

odwróciłem scroll-up na scroll-down i 

to samo niżej scroll-down na scroll-up
 

if (currentScroll < lastScroll && body.classList.contains("scroll-down")){

                    body.classList.remove("scroll-down")

                    body.classList.add("scroll-up")

 

Niestety w dalszym ciągu nie działa, załączam update poprawek. Ewidentnie klasa z CSS
scroll-up/down jest już przypisywana jednak w dalszym ciągu nic się niedziała :(

<script>

        const body = document.body;
            let lastScroll = 0;

            window.addEventListener('scroll' , () => {
                const currentScroll = window.pageYOffset

                if (currentScroll <= 0) {
                    body.classList.remove("scroll-up")
                }

                if (currentScroll > lastScroll && !body.classList.contains("scroll-down")) {
                    body.classList.remove("scroll-up")
                    body.classList.add("scroll-down")
                }

                if (currentScroll < lastScroll && body.classList.contains("scroll-down")){
                    body.classList.remove("sroll-down")
                    body.classList.add("sroll-up")
                }

            
                lastScroll = currentScroll;

            })
    </script>

    <script>
        
        const menuToggle = document.querySelector('.toggle')
        const menu = document.querySelector('.menu')
        const menu2 = document.querySelector('.menu2')
        const logo = document.querySelector('.logo')
        
        menuToggle.addEventListener('click', () => {
        
            menuToggle.classList.toggle('active')
            menu.classList.toggle('active')
            menu2.classList.toggle('active')
            logo.classList.toggle('active')
    
        })

    </script>

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 265 wizyt
pytanie zadane 8 października 2020 w JavaScript przez napoludniestad.pl Użytkownik (960 p.)
0 głosów
0 odpowiedzi 213 wizyt
0 głosów
2 odpowiedzi 332 wizyt
pytanie zadane 20 lutego 2018 w JavaScript przez Vromix Początkujący (410 p.)

92,615 zapytań

141,465 odpowiedzi

319,779 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...