Click here to Skip to main content
15,888,454 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi there I want to reverse my sidemenu so that when I come to my page that the menu is already expanded instead of expanding it myself

css:

#menuToggle {
  display: block;
  position: relative;
  top: -10px;
  left: 10px;
  z-index: 1;
  -webkit-user-select: none;
  user-select: none;
}
#menuToggle a {
  text-decoration: none;
  color: #7e7e7e;
  font-family: 'Microsoft Yahei';
  transition: color 0.3s ease;
}

#menuToggle a:hover {
  color: white;
}

#menuToggle input{
  display: block;
  width: 40px;
  height: 32px;
  position: absolute;
  top: -7px;
  left: 2px;
  cursor: pointer;
  opacity: 0;
  z-index: 2;
  -webkit-touch-callout: none;
}

#menuToggle span {
  display: block;
  width: 33px;
  height: 4px;
  margin-bottom: 5px;
  position: relative;
  background: #cdcdcd;
  border-radius: 3px;
  z-index: 1;
  transform-origin: 4px 0px;
  transition: transform 0.5s cubic-bezier(0.77, 0.2, 0.05, 1.0), background 0.5s cubic-bezier(0.77, 0.2, 0.05, 1.0), opacity 0.55s ease;
}

#menuToggle span:first-child {
  transform-origin: 0% 0%;
}

#menuToggle span:nth-last-child(2) {
  transform-origin: 0% 100%;
}

#menuToggle input:checked~span {
  opacity: 1;
  transform: rotate(45deg) translate(-2px, -1px);
  background: #FCFCFC;
}

#menuToggle input:checked~span:nth-last-child(3) {
  opacity: 0;
  transform: rotate(0deg) scale(0.2, 0.2);
}

#menuToggle input:checked~span:nth-last-child(2) {
  transform: rotate(-45deg) translate(0, -1px);
}

#menu{
  position: fixed;
  width: fit-content;
  background-color: #161618;
  margin: -100px 0 0 -50px;
  padding: 50px;
  box-shadow: 0 -2px 15px rgb(5, 5, 5);
  height: 1400px;
  padding-top: 125px;
  list-style-type: none;
  -webkit-font-smoothing: antialiased;
  transform-origin: 0% 0%;
  transform: translate(-100%, 0);
  transition: transform 0.5s cubic-bezier(0.77, 0.2, 0.05, 1.0);
}
#menu li {
  padding: 10px 0;
  font-size: 22px;
}

#menuToggle input:checked~ul {
  transform: none;
}
.welcome-text {
  position: relative;
  color: #8AB4F8;
  font-size: 60px;
  top: 320px;
  left: 290px;
  text-align: center;
  font-weight: 700;
  font-family: 'Lato';
}
.welcome-text::before {
  position: absolute;
  content: "";
  display: block;
  width: 72%;
  height: 4px;
  margin-top: 66px;
  margin-left: 5px;
  background-color: #8AB4F8;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.3s ease;
}


html:

<nav role="navigation">
      <div id="menuToggle">
        <input type="checkbox" />

        <span></span>
        <span></span>
        <span></span>
        <ul id="menu">
          <a href="home.html">
            <li class="home">Home     </li>
          </a>
          <a href="#">
            <li>About</li>
          </a>
          <a href="index.html">
            <li>Info</li>
          </a>
          <a href="#">
            <li>Contact</li>
          </a>
            <a>
              <li style="color: white;">Qing</li>
            </a>


What I have tried:

changing the input to another css element
Posted
Updated 28-Jul-21 22:34pm

I don't know how serious your code is. If I were you, assuming I must deliver it in a hurry, I would simply emulate a click to expand the menu at the end of the page, as the last action after the page has been fully loaded. If there's a home-grown framework behind the scenes, please by all means use the designated location to place all your last actions. It's the same code you put in the onclick event for menu toggling. By the way, how dare you skip your JavaScript part of the code in the question?
 
Share this answer
 
Comments
Toph Beifong 29-Jul-21 12:54pm    
there is no js in my code lol
Code Fan 29-Jul-21 13:18pm    
I didn't realize you could do this in CSS: "#menuToggle input:checked". Nice! I've learned something today. However, isn't that ugly, I mean, a separate checkbox controlling a menu on or off? You can try Solution 2 then. That may work.
Since your menu is only using CSS, you simply need to have the checkbox checked when the page loads.

Instead of:
HTML
<input type="checkbox" />
use:
HTML
<input type="checkbox" checked />
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900