Robert Kollar
Robert Kollar

Reputation: 41

How to make a dropdown menu responsive to smartphone screen size?

I would like to make my drop down menu responsive for smartphone screen size @media screen and (max-width: 360px) Can someone please tell me how this is possible My current html5 markup for the menu is this:

<div id="menu" >
<nav id="primary_nav_wrap">
<ul>
<li class="currentmenuitem"><a href="#">Home</a></li>
<li><a href="aboutus.html">about us</a></li>
<li><a href="#">day course</a>
<ul>
  <li class="submenu"><a href="threedaycourse.html">3 Day Course
  </a></li>
  <li class="submenu"><a href="#">6 Day Course</a></li>
  </ul></li>
  <li><a href="#">short course</a>
  <ul>
  <li class="submenu"><a href="#">Pasta course</a></li>
  <li class="submenu"><a href="#">Pizza course</a></li>
  <li class="submenu"><a href="#">Fettucine course</a></li>
  </ul></li>
  <li><a href="#">Tours</a></li>
  <li><a href="#">recipes</a></li>
  <li><a href="#">reviews</a></li>
  <li><a href="contact.html">Contact Us</a></li>
  <li class="last"><a href="location.html">Location</a></li>
  </ul>
  </nav></div>

The css style is the following:

 #menu{
    width:960px;
    margin-left:auto;
    margin-right:auto;
    text-align:center;
    position: relative;
    z-index:1;}
    #primary_nav_wrap{
    margin-left:auto;
    margin-right:auto;
    margin-top:5px;
    text-align:center;
    /*margin-left:50px; */}

    #primary_nav_wrap ul{
    list-style:none;
    position:relative;
    /*float:left;*/
    text-align: center;
    margin:0;
    padding:0;}


    #primary_nav_wrap ul a{
    /*display:block;*/
    color:#333;
    text-decoration:none;
    font-weight:500;
    font-size:14px;
    text-transform: uppercase;
    line-height:32px;
    padding-top:10px;
    font-family:'Raleway',sans-serif; 
    display: inline-block;}

    #primary_nav_wrap ul li{
    display:inline-block;
    position:relative;
    /*float:left;*/
    margin:0px;
    padding:0px;}

     #primary_nav_wrap ul li:after{
     margin-left: 10px;
     margin-right: 10px;
     content: " | ";}

     #primary_nav_wrap ul li.last:after{content: none !important;}


    #primary_nav_wrap ul li li.submenu:after{content: none !important;}

    #primary_nav_wrap ul li a:hover{
    background:#efefef;}

    #primary_nav_wrap ul ul{
    display:none;
    position:absolute;
    top:100%;
    left:0;
    background:#fff;
    opacity: .8;
    padding:0;}

    #primary_nav_wrap ul ul li{
    float:none;
    text-align: left;
    width:200px;}

    #primary_nav_wrap ul ul a{
    line-height:120%;
    padding:10px 15px;}

    #primary_nav_wrap ul ul ul{
    top:0;
    left:100%;}

    #primary_nav_wrap ul li:hover ul{
    display:inline-block;}

Upvotes: 3

Views: 1391

Answers (2)

JSouthward
JSouthward

Reputation: 102

Using a media query that triggers when page width < 360px and changing the appearance in the query. Giving the #menu a width:100%; will make it more responsive

@media screen and (max-width: 360px) {
   .  .  .
}

click run the code snippet and full page then resize to see the changes

 #menu{
    width:100%;
    margin-left:auto;
    margin-right:auto;
    text-align:center;
    position: relative;
    z-index:1;}
    #primary_nav_wrap{
    margin-left:auto;
    margin-right:auto;
    margin-top:5px;
    text-align:center;
    /*margin-left:50px; */}

    #primary_nav_wrap ul{
    list-style:none;
    position:relative;
    /*float:left;*/
    text-align: center;
    margin:0;
    padding:0;}


    #primary_nav_wrap ul a{
    /*display:block;*/
    color:#333;
    text-decoration:none;
    font-weight:500;
    font-size:14px;
    text-transform: uppercase;
    line-height:32px;
    padding-top:10px;
    font-family:'Raleway',sans-serif; 
    display: inline-block;}

    #primary_nav_wrap ul li{
    display:inline-block;
    position:relative;
    /*float:left;*/
    margin:0px;
    padding:0px;}

     #primary_nav_wrap ul li:after{
     margin-left: 10px;
     margin-right: 10px;
     content: " | ";}

     #primary_nav_wrap ul li.last:after{content: none !important;}


    #primary_nav_wrap ul li li.submenu:after{content: none !important;}

    #primary_nav_wrap ul li a:hover{
    background:#efefef;}

    #primary_nav_wrap ul ul{
    display:none;
    position:absolute;
    top:100%;
    left:0;
    background:#fff;
    opacity: .8;
    padding:0;}

    #primary_nav_wrap ul ul li{
    float:none;
    text-align: left;
    width:200px;}

    #primary_nav_wrap ul ul a{
    line-height:120%;
    padding:10px 15px;}

    #primary_nav_wrap ul ul ul{
    top:0;
    left:100%;}

    #primary_nav_wrap ul li:hover ul{
    display:inline-block;}

    #nav-toggle{
      position: fixed;
      margin: 0;
      padding: 10px;
      z-index: 99999;
      background: darkgrey;
      color: white;
      cursor: pointer;
      display: none;
    }

@media screen and (max-width: 360px) {
  
  nav{
  display: none;
  }
  
  input[type=checkbox]:checked ~ nav {
  display: block;
  }
  
  nav ul{
    width: 100%;
  }
  
  #nav-toggle{
   padding: 20px; 
   display: block;
  }
  
  nav{
    padding-top: 60px;
    width: 100%;
  }
  
  #primary_nav_wrap ul li:after{
     display: none;
  }
 
  #primary_nav_wrap ul li{
    width: 100%;
  }

}
<div id="menu" >
  <input type="checkbox" id="nav-toggle"><label for="nav-toggle"><div id="nav-toggle">Menu</div></label>

  <nav id="primary_nav_wrap">
    <ul>
      <li class="currentmenuitem"><a href="#">Home</a></li>
      <li><a href="aboutus.html">about us</a></li>
      <li><a href="#">day course</a>
    <ul>
      <li class="submenu"><a href="threedaycourse.html">3 Day Course</a></li>
      <li class="submenu"><a href="#">6 Day Course</a></li>
    </ul></li>
      <li><a href="#">short course</a>
    <ul>
      <li class="submenu"><a href="#">Pasta course</a></li>
      <li class="submenu"><a href="#">Pizza course</a></li>
      <li class="submenu"><a href="#">Fettucine course</a></li>
    </ul></li>
      <li><a href="#">Tours</a></li>
      <li><a href="#">recipes</a></li>
      <li><a href="#">reviews</a></li>
      <li><a href="contact.html">Contact Us</a></li>
      <li class="last"><a href="location.html">Location</a></li>
    </ul>
  </nav>
</div>

Upvotes: 0

Jamsheed Mistri
Jamsheed Mistri

Reputation: 419

You could check the width of the screen, and if it's less than a certain amount (in this case, 500px), then change the CSS (you can also do this with height)

@media screen and (max-width: 500px) {
    // Change element CSS here
}

Upvotes: 1

Related Questions