0

*{
            margin:0;
            padding: 0;
            box-sizing: border-box;
        }
        body{
            background-color: burlywood;
        }
        header{
            width: 100%;
            background-color: azure;
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 0 3%;
            box-shadow: 0 2px 4px rgba(0, 0, 0, .1), 0 8px 16px rgba(0, 0, 0, .1);
        }
        header .logo{
            font-size: 24px;
            font-weight: bolder;
            font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif;
            text-decoration: none;
            color: aquamarine;
            margin-left: 20px;
            animation-name: tuhin;
            animation-duration: 3s;
            animation-iteration-count: infinite;
        
        }
        @keyframes tuhin {
            from{
                color: chartreuse;
            }
            to{
                color: cadetblue;
            }
        }
        header nav ul{
            list-style: none;
        }
        header nav ul li{
            
            float: left;
            position: relative;
    
            
        }
        header nav ul li a{
            text-decoration: none;
            padding: 18px 40px;
            display: block;
            font-size: 18px;
            font-weight: bold;
            color: rgb(17, 115, 180);
            font-family: monospace;
            /* text-align: center; */
            transition: background-color .22s ease, color .22s ease;


        }
        header nav ul li:hover > a{
            background-color: #333;
            color: darkgrey;
        }
        header nav ul li ul{
            position: absolute;
            left: 0;
            width: 200px;
            background-color: honeydew;
            display: none;
            opacity: 0;
            visibility: hidden;
            transition: 0.3s;
    
        }
        header nav ul li ul li{
            width: 100%;
            border: 1px solid #333;
        }
        header nav ul li ul li ul{
            left: 200px;
            top: 0;
        }
        header nav ul li:hover > ul{
            display: initial;
            opacity: 1;
            visibility: visible;
        }
        #menu{
            display: none;
        }
        header label {
            font-size: 28px;
            font-weight: 500;
            font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
            color: rgb(8, 8, 8);
            display: none;
            cursor: pointer;
        }
        @media (max-width:800px){
            header{
                padding: 20px;
                position: relative;
            }
            header label{
                display: initial;
            }
            header nav{
                position: absolute;
                top: 100%;
                left: 0;
                right: 0;
                background-color: honeydew;
                /* display: none; */
                opacity: 0;
                visibility: hidden;
                transition: 0.3s;
                height: calc(100vh - 80px);
            }
            header nav ul li{
                width: 100%;
            }
            header nav ul li ul{
                position: relative;
                width: 100%;
                
            }
            header nav ul li ul li{
                background-color: lavender;
            }
            header nav ul li ul li ul{
                width: 100%;
                left: 0;
            }
            #menu:checked ~ nav{
                /* display: initial; */
                opacity: 1; 
                visibility: visible; 
                
            }
        }
<header>
        <a href="#" class="logo">LOGO</a>
        <input type="checkbox" id="menu">
        <label for="menu"><i class="fas fa-bars"></i></label>
        <nav>
            <ul>
                <li><a href="#">Home</a></li>
                <li><a href="#">Home+</a>
                <ul>
                    <li><a href="#">Web development</a></li>
                    <li><a href="#">Web development</a></li>
                    <li><a href="#">Web development+</a>
                        <ul>
                            <li><a href="#">HTML</a></li>
                            <li><a href="#">CSS</a></li>
                            <li><a href="#">JavaScript</a></li>
                        </ul>
                    </li>
                </ul>
                </li>
                <li><a href="#">Home</a>
                <ul>
                    <li><a href="#">Flex Gallery</a></li>
                    <li><a href="#">Flex Gallery</a></li>
                </ul>
            </li>
                <li><a href="#">Home</a></li>
            </ul>
            
        </nav>
    </header>

enter image description here In the first pic I have used visibility:hidden and in the second one display:none.

I only have one question here,if you see the 2 pictures you will see a weird vertical gap between 2nd and 3rd home menu and here I have used visibility:hidden property.Display:none property fixes this problem but I really want to use the visibility:hidden property to add some fluid transition,how can I fix the vertical gap issue then.

Jan Kees
  • 185
  • 11
Md Shohan
  • 3
  • 3

2 Answers2

0

OK, you mentioned display: none fixed your problem but visibility: hidden doesn't. It happens because display: none is basically like removing the element from the flow of the page. but visibility keeps the element position it's just hidden but it actually there that's why you get your result like this.

read this answer visibility:hidden vs display:none

aekit
  • 405
  • 4
  • 14
0

where you add given visibility:hidden than add font-size:0px; to give like display none effect

With visibility:hidden the object still takes up vertical height on the page. With display:none it is completely removed. If you have text beneath an image and you do display:none, that text will shift up to fill the space where the image was. If you do visibility:hidden the text will remain in the same location.

Monika Virmani
  • 431
  • 2
  • 10
  • hey @monika, you can use markdown texts for adding codes in your texts ;), google for `markdown cheatsheet` – Emad Baqeri Dec 17 '21 at 11:55
  • 2
    Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Dec 17 '21 at 11:55