Reputation: 41
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
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
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