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

question-closed Hamburger menu - linki w pojawiającym się menu nie są klikalne

Object Storage Arubacloud
0 głosów
631 wizyt
pytanie zadane 11 października 2016 w HTML i CSS przez mizeriowy Użytkownik (650 p.)
zamknięte 12 października 2016 przez mizeriowy

Witam. Pierwszy raz robię hamburger menu i mam problem z linkami. W wersji mobilnej mam chowane menu , które pokazuje się po kliknięciu. To działa, ale linki w tym menu są nieklikalne, jak spróbuję w nie kliknąć to menu znika. Pokapowałem się jak ustawiłem, że home ma nas przenieść na dół(tak żeby sprawdzić czy działa)

Czy struktura HTML do tego menu jest w ogóle dobra? Zwykłe rozwijane menu zrobię, ale  takie "podmieniane" przy mniejszej rozdzielczości już nie :(. Nie mam pojęcia co powoduje, że te linki nie działają.

PS: Robiłem to na wzór mobilnego menu z tej stronki http://thenetninja.co.uk/
 

<!DOCTYPE HTML>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Strona</title>
        <link rel="stylesheet" href="styles.css">
        <link href="https://fonts.googleapis.com/css?family=Open+Sans|Taviraj" rel="stylesheet">
    </head>
    <body>
        <nav>
            <img class="logo" src="images/logo.svg" alt="Logo">
            <a class="burger-menu" href="#">
                <span>MENU</span>
                <img src="images/hamburger.svg" alt="MENU">
            </a>
            <ul class="main-nav clearfix">
                <li><a href="#bot" class="menu-item">Home</a></li>
                <li><a href="#" class="menu-item">About</a></li>
                <li> <a href="#" class="menu-item">Work</a></li>
                <li><a href="#" class="menu-item">Contact</a></li>
            </ul>
        </nav>

        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vero fugiat cum doloremque neque ducimus laudantium qui maiores, accusantium, magni obcaecati, nesciunt aliquid et facilis exercitationem tenetur inventore facere. Inventore animi modi reiciendis a saepe odio dolores quos minus ut officia dolorem labore esse laudantium, provident deleniti quaerat iure non? Magnam facilis deserunt culpa libero velit rerum repudiandae minima quia consequatur itaque omnis molestiae, provident, architecto, odio atque. Quos deleniti praesentium alias iure vero corporis et soluta dicta, saepe eligendi fugiat laudantium magni accusantium, quod, fuga quis autem laboriosam beatae tenetur. Adipisci amet ipsum nulla dolor recusandae delectus maxime aut necessitatibus repudiandae tempore asperiores animi, facere eaque cupiditate fugit voluptatum a, odit eius, dicta voluptas corporis ab! Ipsam quis, est tenetur corporis deserunt mollitia enim. Eligendi repellendus alias deleniti beatae at quam blanditiis, error ipsum hic ipsa placeat minima impedit amet maxime fugiat ducimus! Nesciunt voluptates distinctio corporis porro iure cupiditate, itaque debitis, quis veritatis tenetur incidunt nostrum facere, dolorem expedita consectetur deserunt deleniti sint sed consequuntur eaque hic quibusdam quasi fuga tempora. Vitae officiis dolorem minima laborum consequatur asperiores at rem nulla ab illum voluptatem sint maiores ea ex illo totam, voluptatum deleniti repellat excepturi blanditiis, beatae dignissimos tempore repudiandae. Provident unde voluptatum qui? Neque accusamus sequi enim nobis iste, facere molestiae magni quae rerum commodi laudantium temporibus placeat nihil autem cumque doloremque dicta quaerat quidem ab. Dolorem minus consectetur quibusdam velit, consequatur optio molestiae soluta porro, enim ut impedit repellat quisquam sint sunt, expedita cupiditate. Voluptatum, assumenda. Odit eos, voluptas quaerat! Impedit nisi dolorum consectetur officiis magnam debitis pariatur est, hic fugit quisquam deleniti, perspiciatis distinctio explicabo aliquid enim eum natus quasi voluptatem laboriosam veritatis sint dolores voluptatibus nihil molestias. Est sunt unde, nostrum blanditiis, vero natus, laboriosam praesentium optio quidem aperiam ducimus nisi harum dolorem velit autem eum! Natus tempore ad assumenda quos quaerat distinctio placeat, provident fuga, laudantium reiciendis molestiae culpa fugit totam, atque temporibus libero tempora laboriosam voluptatibus quod consectetur omnis facilis? Sit quos optio similique accusamus, labore necessitatibus totam obcaecati distinctio, cumque quod quaerat. Ducimus aspernatur accusamus animi, maxime autem eum, ad consectetur aperiam quae cum deserunt fugiat illum nemo repellendus. Ut vero modi in sint ea deserunt ullam ipsam, aliquam tempora cumque possimus, expedita iusto 
        <h2 id="bot"></h2>
    </body>
</html>
body,h1{
    margin: 0;
    padding: 0;
}

body{
    font-family: 'Trirong', serif;
}

h1, h2, h3, h4, nav{
    font-family: 'Open Sans', sans-serif;
}

a{
    text-decoration: none;
}

ul{
    list-style-type: none;
    margin: 0;
    padding: 0;
}

nav{
    width: 100%;
    background: #222;
    }

.logo{
    float: left;
    height: 70px;
    padding: 15px 50px 15px 120px;
    background: #222;
}

.main-nav{
    padding-right: 80px;
}

.main-nav > li{
    float: right;
}

.main-nav a{
    display: block;
    padding: 15px 20px;
    color: #ccc;
    line-height: 70px;
}

.main-nav a:hover{
    background: #444;
}

.burger-menu{
    display: none;
    color: #ccc;
    background: #272727;
    text-align: left;
    line-height: 30px;
    width: 100%;
}

.burger-menu span{
    padding-left: 15px;
}

.burger-menu img{
    height: 30px;
    float: right;
    padding-right: 15px;
}

.clearfix:after{
    content:'';
    display:block;
    clear:right;
}



@media screen and (max-width: 670px){

    nav{
        text-align:center;
    }    
    .logo{
        float: none;
        padding: 0;
        margin: 0 auto
    }

    .burger-menu{
        display: block;
    }

    .burger-menu:hover{
        background: #333;
    }

    .main-nav{
        float: none;
        background: #272727;
        padding: 0;
        display: none;
    }

    .burger-menu:focus ~ .main-nav{
        display: block;
    }

     .main-nav li{
        float: none;
    }

    .main-nav a{
        line-height: 30px;
        font-size: 0.9rem;
        }

}

Edit. Navbar przed użyciem display: none działa

, a po ukryciu i ponownym wyświetleniu już nie.

komentarz zamknięcia: Problem rozwiązany.

2 odpowiedzi

+1 głos
odpowiedź 12 października 2016 przez pablop76 VIP (123,120 p.)
wybrane 12 października 2016 przez mizeriowy
 
Najlepsza

Problem jest w tym, że po wciśnięciu na link przywracany jest display: none; dla .main-nav

    .main-nav{
        float: none;
        background: #272727;
        padding: 0;
        display: none;
    }
    .burger-menu:focus ~ .main-nav{
        display: block;
    }

Użyj jquery.. Ale menu będzie już cały czas na wierzchu. Potraktuj to jako wskazówkę. Wskazanie problemu :)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function(){
    $(".burger-menu").click(function(){
        $(".main-nav").css("display", "block");
    });
});
</script>

więc należy dodać jeszcze

<script>
$(document).ready(function(){
    $(".burger-menu").click(function(){
        $(".main-nav").css("display", "block");
    });
	$(".main-nav, p").click(function(){
        $(".main-nav").css("display", "none");
    });
});
</script>
1
komentarz 12 października 2016 przez pablop76 VIP (123,120 p.)
Niestety błędy pojawiają się w pełnym wymiarze strony !!!
1
komentarz 12 października 2016 przez pablop76 VIP (123,120 p.)

Inne rozwiązanie to posłużenie się wysokością

.main-nav a{
        float: none;
		color: white;
        background: #272727;
        padding: 0;
		height: 0px;
		transition: all 1s;
    }
 
    .burger-menu:focus ~ .main-nav a{
        height: 50px;
		 color: #ccc;
    }

zamiast

.main-nav{
        float: none;
        background: #272727;
        padding: 0;
        display: none;
    }
 
    .burger-menu:focus ~ .main-nav{
        display: block;
    }

 

komentarz 12 października 2016 przez mizeriowy Użytkownik (650 p.)
edycja 12 października 2016 przez mizeriowy

Trick z wysokością i transition daje radę. Tylko musiałem poprawić kilka rzeczy, bo psuł się wygląd nawigacji. Dodałem overflow:hidden, bo tekst był widoczny przy zerowej wysokości przycisków i .main-nav width:100%, żeby linki były na całą szerokość, usunąłem jeszcze float:none, bo linki u mnie nie floatują, do tego parę kosmetycznych zmian.

 

Edit: poprawiony padding.

.main-nav{
        padding-right: 0;
    }
    .main-nav a{
        padding: 0;
        height: 0px;
        transition: all 0.5s;
        overflow: hidden;
    }

    .burger-menu:focus ~ .main-nav a{
        height: 50px;
        display: block
    }
     .main-nav li{
        float: none;
    }

    .main-nav a{
        line-height: 50px;
        font-size: 0.9rem;
    }

Teraz wygląda to tak.

http://codepen.io/mizeriowy/full/mAKbAO/


Dzięki za obie odpowiedzi, z jQuery też na pewno spróbuję.

1
komentarz 12 października 2016 przez pablop76 VIP (123,120 p.)
Fajnie, że mogłem pomóc. Jeszcze pojawia się scroll w szerokości strony. Ale widzę, że dajesz radę więc sobie poradzisz.
komentarz 12 października 2016 przez mizeriowy Użytkownik (650 p.)
Nie zauważyłem. Padding-right w .main-nav trzeba był usunąć..
–1 głos
odpowiedź 11 października 2016 przez Kfiotek Początkujący (370 p.)
https://kursbootstrap.pl/gorne-menu-strony/

To jest link do fajnej stronki, która w prosty sposób i bardzo dobrze wyjaśniony opisuje różne kwestie dotyczące pisania kodu menu i nav-baru  i myślę, że może Ci pomóc. ;)

Podobne pytania

0 głosów
1 odpowiedź 259 wizyt
–1 głos
1 odpowiedź 173 wizyt
0 głosów
2 odpowiedzi 1,055 wizyt
pytanie zadane 29 lipca 2019 w HTML i CSS przez pietia213 Dyskutant (8,110 p.)

92,555 zapytań

141,402 odpowiedzi

319,553 komentarzy

61,939 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!

...