sclass HHamburgerIcon { S moreContent = ""; S css() { ret [[ .hamburger-menu { cursor: pointer; position: absolute; right: 10px; top: 10px; } .hamburger-menu .bar1, .hamburger-menu .bar2, .hamburger-menu .bar3 { width: 35px; height: 5px; background-color: #333; margin: 6px 0; transition: 0.4s; /* glowing outline? */ border: 2px solid #dadada; border-radius: 5px; } .hamburger-menu-open .bar1 { -webkit-transform: rotate(-45deg) translate(-9px, 6px); transform: rotate(-45deg) translate(-9px, 6px); } .hamburger-menu-open .bar2 {opacity: 0;} .hamburger-menu-open .bar3 { -webkit-transform: rotate(45deg) translate(-13px, -13px); transform: rotate(45deg) translate(-13px, -13px); } ]]; } S html() { ret hcss(css()) + htmlOnly(); } S htmlOnly() { ret div( inner(), class := "hamburger-menu", onclick := onclick()); } swappable S inner() { ret emptydiv(class := "bar1") + emptydiv(class := "bar2") + emptydiv(class := "bar3") + moreContent; } swappable S onclick() { ret [[this.classList.toggle("hamburger-menu-open");]]; } }