html { box-sizing:border-box; --bgColorMenu:#1d1d27; --duration:.7s; } html *,html *::before,html *::after { box-sizing:inherit; } body { margin:0; display:flex; height:100vh; overflow:hidden; align-items:center; justify-content:center; background-color:#ffb457; -webkit-tap-highlight-color:transparent; transition:background-color var(--duration); } .menu { margin:0; display:flex; /* Works well with 100% width */ width:32.05em; font-size:1.5em; padding:0 2.85em; position:relative; align-items:center; justify-content:center; background-color:var(--bgColorMenu); } .menu__item { all:unset; flex-grow:1; z-index:100; display:flex; cursor:pointer; position:relative; border-radius:50%; align-items:center; will-change:transform; justify-content:center; padding:0.55em 0 0.85em; transition:transform var(--timeOut,var(--duration)); } .menu__item::before { content:""; z-index:-1; width:4.2em; height:4.2em; border-radius:50%; position:absolute; transform:scale(0); transition:background-color var(--duration),transform var(--duration); } .menu__item.active { transform:translate3d(0,-.8em,0); } .menu__item.active::before { transform:scale(1); background-color:var(--bgColorItem); } .icon { width:2.6em; height:2.6em; stroke:white; fill:transparent; stroke-width:1pt; stroke-miterlimit:10; stroke-linecap:round; stroke-linejoin:round; stroke-dasharray:400; } .menu__item.active .icon { animation:strok 1.5s reverse; } @keyframes strok { 100% { stroke-dashoffset:400; } }.menu__border { left:0; bottom:99%; width:10.9em; height:2.4em; position:absolute; clip-path:url(#menu); will-change:transform; background-color:var(--bgColorMenu); transition:transform var(--timeOut,var(--duration)); } .svg-container { width:0; height:0; } @media screen and (max-width:50em) { .menu { font-size:.8em; } }
更新时间:2022-02-16 23:37:59