簡體   English   中英

CSS漢堡菜單不適合頁面也沒有滾動

[英]css hamburger menu doesn't fit the page neither scroll

我正在嘗試為手機開發CSS菜單。 我想要一個菜單​​,該菜單在打開時覆蓋所有頁面。 如果需要,它也可以在其中包含滾動條。 我的模型類似於cnn.com漢堡菜單。

我試圖更改為header{position: fixed}並更改.menu-btn:checked ~ .menu高度,但是沒有結果,即使我認為這是更改代碼的正確方法....

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" type="text/css" href="mystyle.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    </head>
        <body>
            <header class="header">
                <nav>
                    <input class="menu-btn" type="checkbox" id="menu-btn">
                    <label class="menu-icon" for="menu-btn"><span class="navicon"></span></label>
                    <ul class="menu">
                        <li><a href="#">Company</a></li>
                        <li><a class="open-submenu" href="#">Services   +</a>           
                            <ul class="submenu">
                                <li><a href="#">Serv1</a></li>
                                <li><a href="#">Serv2</a></li>
                                <li><a href="#">Serv3</a></li>
                            </ul>
                        </li>
                        <li><a href="#">About</a></li>
                        <li><a class="open-submenu" href="#">Contacts   +</a>
                            <ul class="submenu">
                                <li><a href="#">Cont1</a></li>
                                <li><a href="#">Cont2</a></li>
                            </ul>
                        </li>
                    </ul>
                </nav>
            </header>

    <script type="text/javascript">
            $(document).ready(function() {                  

            $('.open-submenu').click(function(e){                   
                var childMenu = e.target.parentNode.children[1];
                var nodes = e.target.parentNode.parentNode.childNodes;

                if($(childMenu).hasClass('visible')){
                    $(childMenu).removeClass('visible');
                } else {
                    $(childMenu).addClass('visible');
                }   
            }); 

        });
    </script>

                    <main>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Qui dicta minus molestiae vel beatae natus eveniet ratione temporibus aperiam harum alias officiis assumenda officia quibusdam deleniti eos cupiditate dolore doloribus!</p>
<p>Ad dolore dignissimos asperiores dicta facere optio quod commodi nam tempore recusandae. Rerum sed nulla eum vero expedita ex delectus voluptates rem at neque quos facere sequi unde optio aliquam!</p>
<p>Tenetur quod quidem in voluptatem corporis dolorum dicta sit pariatur porro quaerat autem ipsam odit quam beatae tempora quibusdam illum! Modi velit odio nam nulla unde amet odit pariatur at!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Qui dicta minus molestiae vel beatae natus eveniet ratione temporibus aperiam harum alias officiis assumenda officia quibusdam deleniti eos cupiditate dolore doloribus!</p>
<p>Ad dolore dignissimos asperiores dicta facere optio quod commodi nam tempore recusandae. Rerum sed nulla eum vero expedita ex delectus voluptates rem at neque quos facere sequi unde optio aliquam!</p>
<p>Tenetur quod quidem in voluptatem corporis dolorum dicta sit pariatur porro quaerat autem ipsam odit quam beatae tempora quibusdam illum! Modi velit odio nam nulla unde amet odit pariatur at!</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Qui dicta minus molestiae vel beatae natus eveniet ratione temporibus aperiam harum alias officiis assumenda officia quibusdam deleniti eos cupiditate dolore doloribus!</p>
<p>Ad dolore dignissimos asperiores dicta facere optio quod commodi nam tempore recusandae. Rerum sed nulla eum vero expedita ex delectus voluptates rem at neque quos facere sequi unde optio aliquam!</p>
<p>Tenetur quod quidem in voluptatem corporis dolorum dicta sit pariatur porro quaerat autem ipsam odit quam beatae tempora quibusdam illum! Modi velit odio nam nulla unde amet odit pariatur at!</p>


</main> 

</body>
</html>

mystyle.css是:

.header {
  background-color: #333;
  position: absolute;  
  width: 100%;
}

.header ul {
  margin: 0;
  padding: 0;
  list-style: none;
  overflow: hidden;
  background-color: #333;
}

.header li a {
  display: block;
  padding: 20px 20px;
  color: white;
}

.menu {
  clear: both;
  max-height: 0;
}

/* Next we need to style the menu icon for the dropdown. */

.menu-icon {
  cursor: pointer;
  display: inline-block;
  float: right;
  padding: 28px 20px;
  position: relative;
  user-select: none;
}

/* The graphics of the menu button */ 

.navicon {   
  background: #fff;
  display: block;
  position: relative;
  width: 18px;
  height: 2px;
}


/* Now we can add the icon when the checkbox is clicked */


.menu-btn {
  display: none;
}

.menu-btn:checked ~ .menu {
  max-height: 100%;
}


/* submenu */

.submenu{
 display: none;
}

.visible {
 display: block;
}

增加height: 100vh; 到.header ul。 jsfiddle在這里:

https://jsfiddle.net/r7yeeyeL/

.header ul {
  margin: 0;
  padding: 0;
  list-style: none;
  overflow: hidden;
  background-color: #333;
  height: 100vh;
}

編輯:

或者,(可能更好)JQuery解決方案:

https://jsfiddle.net/r7yeeyeL/1/

CSS

html {
  max-height: 100%;
  height:100%;
}
body {
  height: 100%;
}

.blabla {
  height:100%;
  max-height:100%;
}

JQuery的

$(".menu-btn").click(function(){

    if(!$(".header").hasClass("blabla"))
    {
        $(".header").addClass("blabla");
    } else {
    $(".header").removeClass("blabla");
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM