@keyframes bd-refreshCircleAnimOut { 0% { transform: rotate(0deg); stroke-dasharray: 36.5, 200; stroke-dashoffset: -7.5; } 80% { stroke-dasharray: 36.5, 200; stroke-dashoffset: -44; } 100% { transform: rotate(360deg); stroke-dasharray: 36.5, 200; stroke-dashoffset: -44; } } @keyframes bd-refreshCircleAnimIn { 0% { transform: rotate(-360deg); stroke-dasharray: 0, 200; stroke-dashoffset: -7.5; } 100% { transform: rotate(0deg); stroke-dasharray: 36.5, 200; stroke-dashoffset: -7.5; } } @keyframes bd-refreshArrowRotate { from { transform: rotate(-680deg); } to { transform: rotate(0deg); } } .bd-refreshButton { cursor: pointer; height: 31px; width: 31px; display: block; svg, svg * { backface-visibility: hidden; -webkit-backface-visibility: hidden; } svg { height: 19px; width: 19px; margin: 6px; } .bd-svgRefresh { opacity: 1; } &.bd-refreshed { .bd-svgRefresh { transition: .5s cubic-bezier(.4, 0, 0, 1) .2s; } .bd-svgCancelLine { &:nth-of-type(1) { transform-origin: bottom; transition: .5s cubic-bezier(0, 0, 0, 1) .1s, transform-origin 1ms; } &:nth-of-type(2) { transform-origin: left; transition: .5s cubic-bezier(0, 0, 0, 1), transform-origin 1ms; } } .bd-svgCircle { stroke-dasharray: 36.5, 200; stroke-dashoffset: -7.5; transform-origin: center; animation: bd-refreshCircleAnimIn 1s cubic-bezier(.4, 0, 0, 1); } .bd-svgArrow { transform-origin: center; animation: bd-refreshArrowRotate 1s cubic-bezier(.4, 0, 0, 1); } } &.bd-refreshing { .bd-svgRefresh { transition: .5s cubic-bezier(.4, 0, 0, 1); opacity: .3; } .bd-svgCancelLine { opacity: 1; &:nth-of-type(1) { transform-origin: top; transform: scale(1, 1); transition: .5s cubic-bezier(0, 0, 0, 1) .4s, transform-origin 1ms; } &:nth-of-type(2) { transform-origin: right; transform: scale(1, 1); transition: .5s cubic-bezier(0, 0, 0, 1) .3s, transform-origin 1ms; } } .bd-svgCircle { stroke-dasharray: 36.5, 200; stroke-dashoffset: -44; transform-origin: center; animation: bd-refreshCircleAnimOut 1s cubic-bezier(.4, 0, 0, 1); } .bd-svgArrow { transform-origin: center; transform: rotate(360deg); transition: 1s cubic-bezier(.4, 0, 0, 1); } .bd-svgArrowTriangle { transition: .5s ease; transform: scale(0); } } .bd-svgCancel { transform: rotate(-45deg); transform-origin: center; } .bd-svgCancelLine { opacity: .4; &:nth-of-type(1) { transform: scale(1, 0); } &:nth-of-type(2) { transform: scale(0, 1); } } .bd-svgCircle { stroke-dasharray: 36.5, 200; stroke-dashoffset: -7.5; } .bd-svgArrow { transform-origin: center; transform: rotate(0deg); } .bd-svgArrowTriangle { transform-origin: 17.1px 6.9px; transition: .8s ease .2s; transform: scale(1); } }