body { background-color: #1f1f1f; } .container { display: flex; flex-wrap: wrap; gap: 16px; max-width: 768px; } .sb-menu { width: 128px; background-color: #2e2e2e; border: 1px solid #464646; border-radius: 8px; } .sb-menu__toggle { --t-duration: 0.6s; --t-linecap: butt; /*butt | square | round*/ --t-timing: ease-in-out; --t-stroke: #d6db91; stroke-linecap: var(--t-linecap); } .sb-menu__toggle path { stroke: var(--t-stroke); } /*START OF BUTTON ALPHA*/ .sb-menu__toggle--alpha > path { fill: none; stroke: #d6db91; stroke-width: 2; stroke-linecap: var(--t-linecap); transition-property: stroke-dasharray, stroke-dashoffset; transition-duration: var(--t-duration); transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); } .sb-menu__toggle--alpha > #path1 { /* stroke: #e7008c; */ stroke-dasharray: 20 56; stroke-dashoffset: 4; } .sb-menu__toggle--alpha > #path2 { /* stroke: #e79900; */ stroke-dasharray: 20 56; stroke-dashoffset: 4; } .sb-menu__toggle--alpha > #path3 { /* stroke: #4000e7; */ stroke-dasharray: 16 16; stroke-dashoffset: 32; } /*Button Active*/ .is-active .sb-menu__toggle--alpha > #path1 { stroke-dashoffset: -33.8; stroke-dasharray: 15.6 56; } .is-active .sb-menu__toggle--alpha > #path2 { stroke-dashoffset: -33.8; stroke-dasharray: 15.6 56; } .is-active .sb-menu__toggle--alpha > #path3 { stroke-dashoffset: 24; stroke-dasharray: 0 32; } /*END OF BUTTON ALPHA*/ /* START OF BUTTON BRAVO */ .sb-menu__toggle--bravo > path { fill: none; stroke: #d6db91; stroke-width: 2; stroke-linecap: var(--t-linecap); transition-property: stroke-dasharray, stroke-dashoffset, translate, rotate; transition-duration: var(--t-duration); transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); /* transform-origin: center; */ } .sb-menu__toggle--bravo > #path1 { fill: none; /* stroke: #e79900; */ translate: 0px 5px; transition-delay: 0s, 0s, var(--t-duration), 0s; transform-origin: center; } .sb-menu__toggle--bravo > #path2 { fill: none; /* stroke: #e79900; */ translate: 0px -5px; transition-delay: 0s, 0s, var(--t-duration), 0s; transform-origin: center; } .sb-menu__toggle--bravo > #path3 { fill: none; /* stroke: #4000e7; */ stroke-dasharray: 16 40; stroke-dashoffset: -37.6; transform-origin: center; transition-delay: 0s, 0s, 0s, 0s; } /*Button Bravo Active*/ .is-active .sb-menu__toggle--bravo > #path1 { translate: 0px 0px; rotate: -45deg; transition-delay: 0s, 0s, 0s, var(--t-duration); } .is-active .sb-menu__toggle--bravo > #path2 { translate: 0px 0px; rotate: 45deg; transition-delay: 0s, 0s, 0s, var(--t-duration); } .is-active .sb-menu__toggle--bravo > #path3 { rotate: 45deg; transition-delay: 0s, 0s, 0s, var(--t-duration); } /* END OF BUTTON BRAVO */ /*START OF BUTTON CHARLIE*/ .sb-menu__toggle--charlie > path { fill: none; stroke: #d6db91; stroke-width: 2; stroke-linecap: var(--t-linecap); transition-property: stroke-dasharray, stroke-dashoffset; transition-duration: var(--t-duration); transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); } .sb-menu__toggle--charlie > #path1 { /* stroke: #e7008c; */ stroke-dasharray: 16 50; stroke-dashoffset: -31.4; } .sb-menu__toggle--charlie > #path2 { /* stroke: #e79900; */ stroke-dasharray: 16 50; stroke-dashoffset: -31.4; } .sb-menu__toggle--charlie > #path3 { /* stroke: #4000e7; */ stroke-dasharray: 16 16; stroke-dashoffset: -4; } /*Button Active*/ .is-active .sb-menu__toggle--charlie > #path1 { stroke-dashoffset: 4; stroke-dasharray: 16 50; } .is-active .sb-menu__toggle--charlie > #path2 { stroke-dashoffset: 4; stroke-dasharray: 16 50; } .is-active .sb-menu__toggle--charlie > #path3 { stroke-dashoffset: 2; stroke-dasharray: 16 16; } /*END OF BUTTON CHARLIE*/ /* START OF BUTTON DELTA */ .sb-menu__toggle--delta > path { fill: none; stroke: #d6db91; stroke-width: 2; stroke-linecap: var(--t-linecap); transition-property: stroke-dasharray, stroke-dashoffset, translate, rotate; transition-duration: var(--t-duration); transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); /* transform-origin: center; */ } .sb-menu__toggle--delta > #path1 { fill: none; /* stroke: #e79900; */ stroke-dasharray: 16 16; stroke-dashoffset: 0; translate: 0px -5px; transition-delay: 0s, 0s, var(--t-duration), 0s; transform-origin: center; } .sb-menu__toggle--delta > #path2 { fill: none; /* stroke: #e79900; */ stroke-dasharray: 16 84; stroke-dashoffset: 0; transform-origin: center; transition-delay: 0s, 0s, 0s, 0s; } .sb-menu__toggle--delta > #path3 { fill: none; /* stroke: #4000e7; */ stroke-dasharray: 16 84; stroke-dashoffset: 0; transform-origin: center; transition-delay: 0s, 0s, 0s, 0s; } .sb-menu__toggle--delta > #path4 { fill: none; /* stroke: #00e7c3; */ stroke-dasharray: 16 16; stroke-dashoffset: 0; translate: 0px 5px; transition-delay: 0s, 0s, var(--t-duration), 0s; transform-origin: center; } /*Button Delta Active*/ .is-active .sb-menu__toggle--delta > #path1 { stroke-dasharray: 12 12; stroke-dashoffset: -2; translate: 0px 0px; rotate: -45deg; transition-delay: 0s, 0s, 0s, var(--t-duration); } .is-active .sb-menu__toggle--delta > #path2 { stroke-dasharray: 64 84; stroke-dashoffset: -22; transition-delay: 0s, 0s, 0s, 0s; } .is-active .sb-menu__toggle--delta > #path3 { stroke-dasharray: 64 84; stroke-dashoffset: -22; transition-delay: 0s, 0s, 0s, 0s; } .is-active .sb-menu__toggle--delta > #path4 { stroke-dasharray: 12 12; stroke-dashoffset: -2; translate: 0px 0px; rotate: 45deg; transition-delay: 0s, 0s, 0s, var(--t-duration); } /* END OF BUTTON DELTA*/ /*BUTTON ECHO*/ .sb-menu__toggle--echo { stroke-linecap: round; transition-property: rotate; transition-duration: var(--t-duration); transition-timing-function: var(--t-timing); transition-delay: calc(var(--t-duration) / 2); } .dot-column > path { transition-property: stroke-dasharray, translate, stroke, d; transition-duration: var(--t-duration); transition-timing-function: var(--t-timing); transform-origin: center; transition-delay: calc(var(--t-duration) / 2), 0s, 0s, 0s; } /* ACTIVE STATE */ .is-active .sb-menu__toggle--echo { rotate: 45deg; } .is-active #right-dot-column > :nth-child(2), .is-active #left-dot-column > :nth-child(2), .is-active #middle-dot-column > :not(:nth-child(2)) { stroke-dasharray: 6 16; } .is-active #left-dot-column > path:nth-child(1) { translate: 29% 29%; } .is-active #left-dot-column > path:nth-child(3) { translate: 29% -29%; } .is-active #right-dot-column > path:nth-child(1) { translate: -29% 29%; } .is-active #right-dot-column > path:nth-child(3) { translate: -29% -29%; }