:root { /* color type A */ --line_color:#555555; --back_color:#FFECF6; /* color type B */ /* --line_color:#1b1919; --back_color:#E9ECFF; */ /* color type C */ /* --line_color:#00135C; --back_color:#DEFFFA; */ } .button { position:relative; z-index:0; width:240px; height:56px; text-decoration:none; font-size:14px; font-weight:bold; color:var(--line_color); letter-spacing:2px; transition:all .3s ease; } .button__text { display:flex; justify-content:center; align-items:center; width:100%; height:100%; } .button::before,.button::after,.button__text::before,.button__text::after { content:''; position:absolute; height:3px; border-radius:2px; background:var(--line_color); transition:all .5s ease; } .button::before { top:0; left:54px; width:calc( 100% - 56px * 2 - 16px ); } .button::after { top:0; right:54px; width:8px; } .button__text::before { bottom:0; right:54px; width:calc( 100% - 56px * 2 - 16px ); } .button__text::after { bottom:0; left:54px; width:8px; } .button__line { position:absolute; top:0; width:56px; height:100%; overflow:hidden; } .button__line::before { content:''; position:absolute; top:0; width:150%; height:100%; box-sizing:border-box; border-radius:300px; border:solid 3px var(--line_color); } .button__line:nth-child(1),.button__line:nth-child(1)::before { left:0; } .button__line:nth-child(2),.button__line:nth-child(2)::before { right:0; } .button:hover { letter-spacing:6px; } .button:hover::before,.button:hover .button__text::before { width:8px; } .button:hover::after,.button:hover .button__text::after { width:calc( 100% - 56px * 2 - 16px ); } .button__drow1,.button__drow2 { position:absolute; z-index:-1; border-radius:16px; transform-origin:16px 16px; } .button__drow1 { top:-16px; left:40px; width:32px; height:0; transform:rotate( 30deg ); } .button__drow2 { top:44px; left:77px; width:32px; height:0; transform:rotate(-127deg ); } .button__drow1::before,.button__drow1::after,.button__drow2::before,.button__drow2::after { content:''; position:absolute; } .button__drow1::before { bottom:0; left:0; width:0; height:32px; border-radius:16px; transform-origin:16px 16px; transform:rotate( -60deg ); } .button__drow1::after { top:-10px; left:45px; width:0; height:32px; border-radius:16px; transform-origin:16px 16px; transform:rotate( 69deg ); } .button__drow2::before { bottom:0; left:0; width:0; height:32px; border-radius:16px; transform-origin:16px 16px; transform:rotate( -146deg ); } .button__drow2::after { bottom:26px; left:-40px; width:0; height:32px; border-radius:16px; transform-origin:16px 16px; transform:rotate( -262deg ); } .button__drow1,.button__drow1::before,.button__drow1::after,.button__drow2,.button__drow2::before,.button__drow2::after { background:var( --back_color ); } .button:hover .button__drow1 { animation:drow1 ease-in .06s; animation-fill-mode:forwards; } .button:hover .button__drow1::before { animation:drow2 linear .08s .06s; animation-fill-mode:forwards; } .button:hover .button__drow1::after { animation:drow3 linear .03s .14s; animation-fill-mode:forwards; } .button:hover .button__drow2 { animation:drow4 linear .06s .2s; animation-fill-mode:forwards; } .button:hover .button__drow2::before { animation:drow3 linear .03s .26s; animation-fill-mode:forwards; } .button:hover .button__drow2::after { animation:drow5 linear .06s .32s; animation-fill-mode:forwards; } @keyframes drow1 { 0% { height:0; } 100% { height:100px; } }@keyframes drow2 { 0% { width:0; opacity:0; } 10% { opacity:0; } 11% { opacity:1; } 100% { width:120px; } }@keyframes drow3 { 0% { width:0; } 100% { width:80px; } }@keyframes drow4 { 0% { height:0; } 100% { height:120px; } }@keyframes drow5 { 0% { width:0; } 100% { width:124px; } } .container { width:100%; height:300px; display:flex; flex-direction:column; justify-content:center; align-items:center; }