Search code examples
cssdrop-down-menumenunavsubmenu

How to get drop down menu to stay fixed in same location


I have a drop down menu in my navigation. Right now each drop down menu is dropping down under the parent element. However, I want each drop down menu to drop down in the same location. (like this menu - https://themify.me/demo/#theme=peak ). Could anyone help with any solutions? Thanks in advance.

Here is a sample jsfiddle - https://jsfiddle.net/5vedgn95/

my header.php

<?php
?>
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="profile" href="http://gmpg.org/xfn/11">
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">

<?php wp_head(); ?>
</head>

<body <?php body_class(); ?>>
<div id="ht-page">
	<header id="ht-masthead" class="ht-site-header">
		<div class="ht-container ht-clearfix">
			<div id="ht-site-branding">
				<?php 
				if ( function_exists( 'has_custom_logo' ) && has_custom_logo() ) :
					the_custom_logo();
				else : 
					if ( is_front_page() ) : ?>
						<h1 class="ht-site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
					<?php else : ?>
						<p class="ht-site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></p>
					<?php endif; ?>
					<p class="ht-site-description"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'description' ); ?></a></p>
				<?php endif; ?>
			</div><!-- .site-branding -->

			<nav id="ht-site-navigation" class="ht-main-navigation">
				<div class="toggle-bar"><span></span></div>
				<?php 
				wp_nav_menu( array( 
					'theme_location' => 'primary', 
					'container_class' => 'ht-menu ht-clearfix' ,
					'menu_class' => 'ht-clearfix',
					'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
				) ); 
				?>
			</nav><!-- #ht-site-navigation -->
		</div>
	</header><!-- #ht-masthead -->

	<div id="ht-content" class="ht-site-content ht-clearfix">

my css

/*--------------------------------------------------------------
## Header
--------------------------------------------------------------*/
#ht-masthead{
background: #FFF; 
height: 70px;
    border-bottom: 1px solid #eee;
    z-index: 99;
    transition: height 0.3s ease;
    -moz-transition: height 0.3s ease;
    -webkit-transition: height 0.3s ease;
    position: fixed;
    text-align: center;
width: 0 auto;
    margin-right:38px;
    width:100%;
}


.ht-sticky-header #ht-masthead{
position: fixed;
left: 0;
right: 0;
}

.ht-sticky#ht-masthead{
height: 74px;
}

.ht-sticky-header #ht-content{
position: relative;
z-index: 9;
padding-top: 94px;
}

#ht-site-branding{
float: left;
width: 30%;
transition: padding 0.3s ease;
-moz-transition: padding 0.3s ease;
-webkit-transition: padding 0.3s ease;
}

.ht-sticky #ht-site-branding{
padding: 5px 0;
}

#ht-site-branding img{
max-height: 60px;
width: auto;
}

.ht-main-header{
background: #f9f9f9;
padding: 45px 0;
margin-bottom: 25px;
}

.ht-main-title{
margin: 0 0 15px;
letter-spacing: 1px;
font-weight: 400;
text-transform: uppercase;
}

.ht-main-title:last-child{
margin-bottom: 0;
}

.ht-site-title{
    font-family: 'futura_tbold';
    font-size: 24px;
    text-align: left;
    text-transform: uppercase;
    letter-spacing: 6px;
    margin-left:20px;
}

.ht-site-title a{
text-decoration: none;
color: #000;
}
.ht-site-title a:hover {
text-decoration: none;
color: #000;
}

.ht-site-description{
color: #EEE;
margin: 0;
font-size: 15px;
font-style: italic;
line-height: 1;
}

.ht-site-description a{
color: #333;
}


#total-breadcrumbs,
.woocommerce .woocommerce-breadcrumb{
font-size: 15px;
margin: 0;
color: inherit;
}

.woocommerce .woocommerce-breadcrumb a,
#total-breadcrumbs a{
color: #000;
}

.woocommerce .woocommerce-breadcrumb a:hover,
#total-breadcrumbs a:hover{
color: #000;
}

.taxonomy-description,
.term-description{
margin-bottom: 15px;
}

.taxonomy-description p:last-child,
.term-description p:last-child{
margin-bottom: 0;
}

/*--------------------------------------------------------------
## General
--------------------------------------------------------------*/
.ht-section{
padding: 60px 0;
    background: #FFF;
}

.ht-section-title-tagline{
margin-bottom: 60px;
text-align: center;
}

.ht-section-title{
font-weight: 400;
    letter-spacing: 1px;
    text-transform: uppercase;
    font-size: 36px;
    width: 60%;
    margin: 0 auto 15px;
}

.ht-section-title:last-child{
margin-bottom: 0;
}

.ht-section-tagline{
font-size: 20px;
width: 70%;
margin: 0 auto;
}
#ht-page {
width: 100% !important;
margin: 0 auto;
    max-width: 100% !important;
    overflow: hidden !important;
}

/*--------------------------------------------------------------
## Menus
--------------------------------------------------------------*/
#ht-site-navigation{
position: absolute;
width: 100%;
padding: 15px 0;
transition: padding 0.3s ease;
-moz-transition: padding 0.3s ease;
-webkit-transition: padding 0.3s ease;
    float: right;
}

.ht-sticky #ht-site-navigation{
padding: 17px 0;
}

.ht-main-navigation .ht-menu{

}

.ht-main-navigation ul {
list-style: none;
margin: 0;
padding-left: 0;
    display: inline-block;
}

.ht-main-navigation li {
float: left;
position: relative;
margin-left: 30px;
}

.ht-main-navigation a {
display: block;
text-decoration: none;
color: #000;
text-transform: uppercase;
font-size: 15px;
font-family: 'Raleway', sans-serif;
line-height: 36px;
padding: 0 15px;
font-weight: 600;
    letter-spacing: 2px;
    padding-bottom: 40px;
}

.ht-main-navigation ul ul {
display: none;
position: absolute;
left: 0;
top: 100% ;
background: #FFF;
min-width: 200px;
width:900px;
z-index: 999;
padding: 8px;
margin-top: 0px;
box-shadow: 2px 2px 8px rgba(0,0,0,0.05);
}

.ht-sticky .ht-main-navigation ul ul{
margin-top: 17px;
}

.ht-main-navigation .ht-menu > ul > li:last-child > ul{
left: auto;
right: 0;
}

.ht-main-navigation ul ul ul {
left: 100%;
top: 0;
margin: 0 0 0 8px;
border-top: 0;
}

.ht-sticky .ht-main-navigation ul ul ul{
margin-top: 0
}

.ht-main-navigation ul ul a {
text-transform: none;
font-weight: 400;
color: #444;
line-height: 1.5;
padding: 10px 15px;
font-size: 14px;
}

.ht-main-navigation ul ul li {
float: none;
margin: 0 0 5px;
}

.ht-main-navigation ul ul li:last-child{
margin-bottom: 0;
}

.ht-main-navigation ul li:hover > ul {
display: block;
}

.page-template-home-template .ht-main-navigation .current_page_item > a,
.page-template-home-template .ht-main-navigation .current-menu-item > a,
.page-template-home-template .ht-main-navigation .current_page_ancestor > a,
.home.blog .ht-main-navigation .current_page_item > a,
.home.blog .ht-main-navigation .current-menu-item > a,
.home.blog .ht-main-navigation .current_page_ancestor > a{
background: none;
color: inherit;
}

.ht-main-navigation li:hover > a,
.page-template-home-template .ht-main-navigation li:hover > a,
.home.blog .ht-main-navigation li:hover > a,
.ht-main-navigation .current_page_item > a,
.ht-main-navigation .current-menu-item > a,
.ht-main-navigation .current_page_ancestor > a,
.page-template-home-template .ht-main-navigation .current > a,
.home.blog .ht-main-navigation .current > a {
color: #000;
text-decoration: none;
}

.site-main .comment-navigation,
.site-main .posts-navigation,
.site-main .post-navigation {
margin: 0 0 15px;
overflow: hidden;
}

.comment-navigation .nav-previous,
.posts-navigation .nav-previous,
.post-navigation .nav-previous {
float: left;
width: 50%;
}

.comment-navigation .nav-next,
.posts-navigation .nav-next,
.post-navigation .nav-next {
float: right;
text-align: right;
width: 50%;
}


Solution

  • Remove position: relative from the li, and add it to the ul so the sub menu is absolutely positioned 100% from the top of the ul.

    And if you want the submenu to span the entire width of the parent, remove width: 900px; from .ht-main-navigation ul ul and add right: 0 (I didn't do that tho since you didn't ask for it)

    /*--------------------------------------------------------------
    ## Header
    --------------------------------------------------------------*/
    
    #ht-masthead {
      background: #FFF;
      height: 70px;
      border-bottom: 1px solid #eee;
      z-index: 99;
      transition: height 0.3s ease;
      -moz-transition: height 0.3s ease;
      -webkit-transition: height 0.3s ease;
      position: fixed;
      text-align: center;
      width: 0 auto;
      margin-right: 38px;
      width: 100%;
    }
    
    .ht-sticky-header #ht-masthead {
      position: fixed;
      left: 0;
      right: 0;
    }
    
    .ht-sticky#ht-masthead {
      height: 74px;
    }
    
    .ht-sticky-header #ht-content {
      position: relative;
      z-index: 9;
      padding-top: 94px;
    }
    
    #ht-site-branding {
      float: left;
      width: 30%;
      transition: padding 0.3s ease;
      -moz-transition: padding 0.3s ease;
      -webkit-transition: padding 0.3s ease;
    }
    
    .ht-sticky #ht-site-branding {
      padding: 5px 0;
    }
    
    #ht-site-branding img {
      max-height: 60px;
      width: auto;
    }
    
    .ht-main-header {
      background: #f9f9f9;
      padding: 45px 0;
      margin-bottom: 25px;
    }
    
    .ht-main-title {
      margin: 0 0 15px;
      letter-spacing: 1px;
      font-weight: 400;
      text-transform: uppercase;
    }
    
    .ht-main-title:last-child {
      margin-bottom: 0;
    }
    
    .ht-site-title {
      font-family: 'futura_tbold';
      font-size: 24px;
      text-align: left;
      text-transform: uppercase;
      letter-spacing: 6px;
      margin-left: 20px;
    }
    
    .ht-site-title a {
      text-decoration: none;
      color: #000;
    }
    
    .ht-site-title a:hover {
      text-decoration: none;
      color: #000;
    }
    
    .ht-site-description {
      color: #EEE;
      margin: 0;
      font-size: 15px;
      font-style: italic;
      line-height: 1;
    }
    
    .ht-site-description a {
      color: #333;
    }
    
    #total-breadcrumbs,
    .woocommerce .woocommerce-breadcrumb {
      font-size: 15px;
      margin: 0;
      color: inherit;
    }
    
    .woocommerce .woocommerce-breadcrumb a,
    #total-breadcrumbs a {
      color: #000;
    }
    
    .woocommerce .woocommerce-breadcrumb a:hover,
    #total-breadcrumbs a:hover {
      color: #000;
    }
    
    .taxonomy-description,
    .term-description {
      margin-bottom: 15px;
    }
    
    .taxonomy-description p:last-child,
    .term-description p:last-child {
      margin-bottom: 0;
    }
    
    
    /*--------------------------------------------------------------
    ## General
    --------------------------------------------------------------*/
    
    .ht-section {
      padding: 60px 0;
      background: #FFF;
    }
    
    .ht-section-title-tagline {
      margin-bottom: 60px;
      text-align: center;
    }
    
    .ht-section-title {
      font-weight: 400;
      letter-spacing: 1px;
      text-transform: uppercase;
      font-size: 36px;
      width: 60%;
      margin: 0 auto 15px;
    }
    
    .ht-section-title:last-child {
      margin-bottom: 0;
    }
    
    .ht-section-tagline {
      font-size: 20px;
      width: 70%;
      margin: 0 auto;
    }
    
    #ht-page {
      width: 100% !important;
      margin: 0 auto;
      max-width: 100% !important;
      overflow: hidden !important;
    }
    
    
    /*--------------------------------------------------------------
    ## Menus
    --------------------------------------------------------------*/
    
    #ht-site-navigation {
      position: absolute;
      width: 100%;
      padding: 15px 0;
      transition: padding 0.3s ease;
      -moz-transition: padding 0.3s ease;
      -webkit-transition: padding 0.3s ease;
      float: right;
    }
    
    .ht-sticky #ht-site-navigation {
      padding: 17px 0;
    }
    
    .ht-main-navigation .ht-menu {}
    
    .ht-main-navigation ul {
      list-style: none;
      margin: 0;
      padding-left: 0;
      display: inline-block;
      position: relative;
    }
    
    .ht-main-navigation li {
      float: left;
      margin-left: 30px;
    }
    
    .ht-main-navigation a {
      display: block;
      text-decoration: none;
      color: #000;
      text-transform: uppercase;
      font-size: 15px;
      font-family: 'Raleway', sans-serif;
      line-height: 36px;
      padding: 0 15px;
      font-weight: 600;
      letter-spacing: 2px;
      padding-bottom: 40px;
    }
    
    .ht-main-navigation ul ul {
      display: none;
      position: absolute;
      left: 0;
      top: 100%;
      background: #FFF;
      min-width: 200px;
      width: 900px;
      z-index: 999;
      padding: 8px;
      margin-top: 0px;
      box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.05);
    }
    
    .ht-sticky .ht-main-navigation ul ul {
      margin-top: 17px;
    }
    
    .ht-main-navigation ul ul ul {
      left: 100%;
      top: 0;
      margin: 0 0 0 8px;
      border-top: 0;
    }
    
    .ht-sticky .ht-main-navigation ul ul ul {
      margin-top: 0
    }
    
    .ht-main-navigation ul ul a {
      text-transform: none;
      font-weight: 400;
      color: #444;
      line-height: 1.5;
      padding: 10px 15px;
      font-size: 14px;
    }
    
    .ht-main-navigation ul ul li {
      float: none;
      margin: 0 0 5px;
    }
    
    .ht-main-navigation ul ul li:last-child {
      margin-bottom: 0;
    }
    
    .ht-main-navigation ul li:hover > ul {
      display: block;
    }
    
    .page-template-home-template .ht-main-navigation .current_page_item > a,
    .page-template-home-template .ht-main-navigation .current-menu-item > a,
    .page-template-home-template .ht-main-navigation .current_page_ancestor > a,
    .home.blog .ht-main-navigation .current_page_item > a,
    .home.blog .ht-main-navigation .current-menu-item > a,
    .home.blog .ht-main-navigation .current_page_ancestor > a {
      background: none;
      color: inherit;
    }
    
    .ht-main-navigation li:hover > a,
    .page-template-home-template .ht-main-navigation li:hover > a,
    .home.blog .ht-main-navigation li:hover > a,
    .ht-main-navigation .current_page_item > a,
    .ht-main-navigation .current-menu-item > a,
    .ht-main-navigation .current_page_ancestor > a,
    .page-template-home-template .ht-main-navigation .current > a,
    .home.blog .ht-main-navigation .current > a {
      color: #000;
      text-decoration: none;
    }
    
    .site-main .comment-navigation,
    .site-main .posts-navigation,
    .site-main .post-navigation {
      margin: 0 0 15px;
      overflow: hidden;
    }
    
    .comment-navigation .nav-previous,
    .posts-navigation .nav-previous,
    .post-navigation .nav-previous {
      float: left;
      width: 50%;
    }
    
    .comment-navigation .nav-next,
    .posts-navigation .nav-next,
    .post-navigation .nav-next {
      float: right;
      text-align: right;
      width: 50%;
    }
    <nav id="ht-site-navigation" class="ht-main-navigation">
      <div class="toggle-bar"><span></span></div>
      <div class="ht-menu ht-clearfix">
        <ul id="menu-primary-menu-links" class="ht-clearfix">
          <li id="menu-item-129" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-129"><a href="http://localhost:8888/wordpress/fashion/">item 1</a>
            <ul class="sub-menu">
              <li id="menu-item-139" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-139"><a href="http://localhost:8888/wordpress/fashion/fashion-news/">sub item 1</a></li>
              <li id="menu-item-140" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-140"><a href="http://localhost:8888/wordpress/fashion/my-looks/">sub item 2</a></li>
              <li id="menu-item-138" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-138"><a href="http://localhost:8888/wordpress/fashion/outfit-ideas/">sub item 3</a></li>
              <li id="menu-item-137" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-137"><a href="http://localhost:8888/wordpress/fashion/shopping/">sub item 4</a></li>
            </ul>
          </li>
          <li id="menu-item-128" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-128"><a href="http://localhost:8888/wordpress/beauty/">item 2</a>
            <ul class="sub-menu">
              <li id="menu-item-142" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-142"><a href="http://localhost:8888/wordpress/beauty/hair/">sub item 1</a></li>
              <li id="menu-item-143" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-143"><a href="http://localhost:8888/wordpress/beauty/makeup/">sub item 2</a></li>
              <li id="menu-item-141" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-141"><a href="http://localhost:8888/wordpress/beauty/skincare/">sub item 3</a></li>
            </ul>
          </li>
          <li id="menu-item-132" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-132"><a href="http://localhost:8888/wordpress/living/">item 3</a></li>
          <li id="menu-item-130" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-130"><a href="http://localhost:8888/wordpress/wellness/">item 4</a></li>
          <li id="menu-item-759" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-759"><a href="http://localhost:8888/wordpress/travel/">item 5</a></li>
          <li id="menu-item-135" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-135"><a href="http://localhost:8888/wordpress/video/">item6</a></li>
          <li id="menu-item-133" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-133"><a href="http://localhost:8888/wordpress/shop/">item 7</a>
            <ul class="sub-menu">
              <li id="menu-item-150" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-150"><a href="http://localhost:8888/wordpress/shop/my-closet/">sub item 1</a></li>
              <li id="menu-item-149" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-149"><a href="http://localhost:8888/wordpress/shop/my-picks/">sub item 2</a></li>
              <li id="menu-item-148" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-148"><a href="http://localhost:8888/wordpress/shop/instagram/">sub item 3</a></li>
              <li id="menu-item-147" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-147"><a href="http://localhost:8888/wordpress/shop/snapchat/">sub item 4</a></li>
            </ul>
          </li>
          <li id="menu-item-509" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-509"><a href="http://localhost:8888/wordpress/more/">item 8</a>
            <ul class="sub-menu">
              <li id="menu-item-512" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-512"><a href="http://localhost:8888/wordpress/contact/">sub item 1</a></li>
              <li id="menu-item-510" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-510"><a href="http://localhost:8888/wordpress/about/">sub item 2</a></li>
              <li id="menu-item-513" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-513"><a href="http://localhost:8888/wordpress/faq/">sub item 3</a></li>
              <li id="menu-item-511" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-511"><a href="http://localhost:8888/wordpress/archive/">sub item 4</a></li>
            </ul>
          </li>
        </ul>
      </div>
    </nav>