On mobile and desktop, when clicking 'SERVICES' drop down menu, it selects the 'Rail' option automatically

Viewed 46

I have been trying to make my header responsive and am really struggling with the 'SERVICES' dropdown section when it is in the collapsible menu. Not only does it look terrible with the 'static' position but I cant figure out another way of doing it.

I also am having an issue that when you click the 'SERVICES' button while below 768px it is automatically selecting the first option ('RAIL').

I hope this makes sense. I have linked the codepen below.

enter code here Codepen

header {
    background: linear-gradient(to right, #212529 0%, #495057 100%);
    display: inline-flex;
    justify-content: space-between;
    align-items: center;
    position: sticky;
    width: 100%;
    height: 80px;
    padding: 10px 2% 10px 2%;
    margin: 0;
    box-shadow: rgba(0, 0, 0, 0.3) 0px 19px 38px, rgba(0, 0, 0, 0.22) 0px 15px 12px;
    z-index: 100;
}

header ul {
    margin-block-end: 0;
}


header li, a {
    font-weight: 300;
    font-size: 1em;
    color:#ced4da;
    text-decoration: none;
    
}


.logo-header {
    max-height: 50px;
    cursor: pointer;
    padding: 0 15px;
}


.nav-links {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.nav-links li {
    display: inline-block;
    padding: 0px 40px;
}

.nav-links li a {
    transition: all 0.3s ease 0s;
}

.nav-links li a:hover,
.nav-links li a:active {
    font-weight: 500;
    transition: all 0.3s ease 0s;
    color: #f8f9fa;
    text-decoration: underline;
    text-underline-offset: 5px;
}

.social-icons {
    display: inline-block;
    padding: 0px 15px;
    
}

.social-icons a {
    margin: 0px 20px;   
    transition: all 0.3s ease 0s;


}

.social-icons a:hover {
    transition: all 0.3s ease 0s;
    color:#f8f9fa;
}

.sticky {
    position: fixed;
    top: 0;
    width: 100%;
    z-index: 100;
  
}

.sticky + .services-title h1 {
    padding-top: 80px;
}

.sticky + .main-home {
    padding-top: 80px;
}

.sticky + .container-contact {
    padding-top: 80px;
}

.dropbtn {
    background-color: inherit;
    color: #ced4da;
    padding: 0 40px;
    font-size: 16px;
    border: none;
    cursor: pointer;
    height: 80px;

  }

  .dropbtn:hover{
    font-weight: 500;
    transition: all 0.3s ease 0s;
    color: #f8f9fa;
    text-decoration: underline;
    text-underline-offset: 5px;
  }

  .dropdown:hover .dropdown-content {
      display: block;
  }

  .dropdown-content {
    position: absolute;
    background:#343a40;
    min-width: 160px;
    overflow: auto;
    box-shadow: rgba(0, 0, 0, 0.3) 0px 19px 38px, rgba(0, 0, 0, 0.22) 0px 15px 12px;
    text-align: center;
    display: none;

  }
  
  .dropdown-content a {
    padding: 12px 16px;
    display: block;
    font-weight: 300;
    font-size: 1em;
    color:#ced4da;
    text-decoration: none;
  }
  
  .dropdown-content a:hover {
    font-weight: 500;
    transition: all 0.3s ease 0s;
    color: #f8f9fa;
    text-decoration: underline;
    text-underline-offset: 5px;
}

#home-header {
    position: fixed;
    top: 0;
    left: 0;
}

#nav-toggle {
    position: absolute;
    top: -100px;
}

nav .icon-burger {
    display: none;
    position: absolute;
    right: 5%;
    top: 50%;
    transform: translateY(-50%);
}

nav .icon-burger .line {
    width: 30px;
    height: 5px;
    background: #fff;
    margin: 5px;
}

/*=====media queries=======*/

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

  
    .nav-links {
        justify-content: space-evenly;
        float: none;
        position: fixed;
        z-index: 9;
        left: 0;
        right: 0;
        top: 80px;
        bottom: 100%;
        width: 100%;
        max-height: 200px;
        flex-direction: column;
        background-color: rgba(0, 0, 0, 0.7);
        overflow: hidden;
        transition: all .5s ease-in-out;
    }

    header :checked ~ .nav-links {
        bottom: 0;
    }

    .nav-links .dropbtn {
        padding: 0;
        width: 100%;
        height: 20px;
      
    }

    

  .dropdown-content {
      position: static;
      width: 100%;
      background-color: rgba(0, 0, 0, 0);
  }

    nav .icon-burger {
        display: block;
    }

    nav :checked ~ .icon-burger .line:nth-child(1) {
            transform: translateY(10px) rotate(225deg);
            transition: all .5s ease-in-out;
        }

    nav :checked ~ .icon-burger .line:nth-child(3) {
            transform: translateY(-10px) rotate(-225deg);
            transition: all .5s ease-in-out;
        }
    nav :checked ~ .icon-burger .line:nth-child(2) {
            opacity: 0;
            transition: all .5s ease-in-out;
        }
}

/* Medium devices (landscape tablets, 769px to 1024px) */
@media only screen and (max-width: 1024px) {

    header {
     padding-right: 0;
    }

    #social-icons-header a {
        display:none;
    }    
}
<header id="home-header" class="main-header-fixed">
        <img class="logo-header" src="Images/Logo grey Transparent.png" alt="Kompact Production Logo">
        <nav class="main-nav">
            <input id="nav-toggle" type="checkbox">
            <ul class=" nav-links">
                <li><a href="Kompact Home.html">HOME</a></li>
                <div class="dropdown">
                    <button class="dropbtn">SERVICES</button>
                    <div class="dropdown-content">
                        <a href="Kompact Rail Services.html">RAIL</a>
                        <a href="Kompact Event Services.html">EVENTS</a>
                    </div>
                </div>
                <li><a href="Kompact Portfolio.html">PORTFOLIO</a></li>
                <li><a href="Kompact Contact Us.html">CONTACT US</a></li>
            </ul>
            <label for="nav-toggle" class="icon-burger">
                <div class="line"></div>
                <div class="line"></div>
                <div class="line"></div>
            </label>

        </nav>
        <div class="social-icons" id="social-icons-header">
            <a href="#"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
                    class="bi bi-facebook" viewBox="0 0 16 16">
                    <path
                        d="M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951z" />
                </svg></a>
            <a href="#"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
                    class="bi bi-instagram" viewBox="0 0 16 16">
                    <path
                        d="M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.917 3.917 0 0 0-1.417.923A3.927 3.927 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.916 3.916 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.926 3.926 0 0 0-.923-1.417A3.911 3.911 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0h.003zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599.28.28.453.546.598.92.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.47 2.47 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.478 2.478 0 0 1-.92-.598 2.48 2.48 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233 0-2.136.008-2.388.046-3.231.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92.28-.28.546-.453.92-.598.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045v.002zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92zm-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217zm0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334z" />
                </svg></a>
            <a href="#"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
                    class="bi bi-linkedin" viewBox="0 0 16 16">
                    <path
                        d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854V1.146zm4.943 12.248V6.169H2.542v7.225h2.401zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248-.822 0-1.359.54-1.359 1.248 0 .694.521 1.248 1.327 1.248h.016zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016a5.54 5.54 0 0 1 .016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225h2.4z" />
                </svg></a>
        </div>
</header>

2 Answers

You can do the following:

When the dropdown is hidden, the height of the element including "Rail" and "Events" is set to 0. When hovering "Services", you can increase the height of the element. To have a smooth transition you can add transition property to the element, so the animation from 0 to full height is smooth.

I guess "Rail" is selected in the mobile view due to the fact that the cursor points to its section when opening the dropdown.

thanks for that but I do understand the reason why it is happening and understand I can put a transition property o the element but what I would ideally love to happen would be for the 'RAIL' and 'EVENT' to come down as 100% block elements and push 'PORTFOLIO' down.

I want this to happen with the drop down menu when it is under 768px.

In relation to the 'RAIL' being selected in mobile view, again, I understand what is happening but am seeking advise on how to work around this and make it more user friendly

Related