/* ###### Spinner ###### */ .spinner-border { display: inline-block; width: 2rem; height: 2rem; vertical-align: text-bottom; border: 0.25em solid currentColor; border-right-color: transparent; border-radius: 50%; animation: spinner-border .75s linear infinite; } .spinner-border-sm { width: 1rem; height: 1rem; border-width: 0.2em; } @keyframes spinner-grow { 0% { transform: scale(0); } 50% { opacity: 1; } } .spinner-grow { display: inline-block; width: 2rem; height: 2rem; vertical-align: text-bottom; background-color: currentColor; border-radius: 50%; opacity: 0; animation: spinner-grow .75s linear infinite; } .spinner-grow-sm { width: 1rem; height: 1rem; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .sr-only-focusable { &:active, &:focus { position: static; width: auto; height: auto; overflow: visible; clip: auto; white-space: normal; } } @keyframes spinner-border { to { transform: rotate(360deg); } } .lds-circle { display: inline-block; transform: translateZ(1px); > div { display: inline-block; width: 51px; height: 51px; margin: 6px; border-radius: 50%; animation: lds-circle 2.4s cubic-bezier(0, 0.2, 0.8, 1) infinite; } } @keyframes lds-circle { 0%, 100% { animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); } 0% { transform: rotateY(0deg); } 50% { transform: rotateY(1800deg); animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); } 100% { transform: rotateY(3600deg); } } .lds-dual-ring { display: inline-block; width: 64px; height: 64px; &:after { content: " "; display: block; width: 46px; height: 46px; margin: 1px; border-radius: 50%; animation: lds-dual-ring 1.2s linear infinite; } } @keyframes lds-dual-ring { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .lds-facebook { display: inline-block; position: relative; width: 64px; height: 64px; div { display: inline-block; position: absolute; left: 6px; width: 13px; animation: lds-facebook 1.2s cubic-bezier(0, 0.5, 0.5, 1) infinite; &:nth-child(1) { left: 6px; animation-delay: -0.24s; } &:nth-child(2) { left: 26px; animation-delay: -0.12s; } &:nth-child(3) { left: 45px; animation-delay: 0; } } } @keyframes lds-facebook { 0% { top: 6px; height: 51px; } 50%, 100% { top: 19px; height: 26px; } } .lds-heart { display: inline-block; position: relative; width: 64px; height: 64px; transform: rotate(45deg); transform-origin: 32px 32px; div { top: 23px; left: 19px; position: absolute; width: 26px; height: 26px; animation: lds-heart 1.2s infinite cubic-bezier(0.215, 0.61, 0.355, 1); &:after { content: " "; position: absolute; display: block; width: 26px; height: 26px; top: -17px; border-radius: 50% 50% 0 0; } &:before { content: " "; position: absolute; display: block; width: 26px; height: 26px; left: -17px; border-radius: 50% 0 0 50%; } } } @keyframes lds-heart { 0% { transform: scale(0.95); } 5% { transform: scale(1.1); } 39% { transform: scale(0.85); } 45% { transform: scale(1); } 60% { transform: scale(0.95); } 100% { transform: scale(0.9); } } .lds-ripple { display: inline-block; position: relative; width: 64px; height: 64px; div { position: absolute; opacity: 1; border-radius: 50%; animation: lds-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite; &:nth-child(2) { animation-delay: -0.5s; } } } @keyframes lds-ripple { 0% { top: 28px; left: 28px; width: 0; height: 0; opacity: 1; } 100% { top: -1px; left: -1px; width: 58px; height: 58px; opacity: 0; } } .lds-spinner { color: official; display: inline-block; position: relative; width: 64px; height: 64px; div { transform-origin: 32px 32px; animation: lds-spinner 1.2s linear infinite; &:after { content: " "; display: block; position: absolute; top: 3px; left: 29px; width: 5px; height: 14px; border-radius: 20%; } &:nth-child(1) { transform: rotate(0deg); animation-delay: -1.1s; } &:nth-child(2) { transform: rotate(30deg); animation-delay: -1s; } &:nth-child(3) { transform: rotate(60deg); animation-delay: -0.9s; } &:nth-child(4) { transform: rotate(90deg); animation-delay: -0.8s; } &:nth-child(5) { transform: rotate(120deg); animation-delay: -0.7s; } &:nth-child(6) { transform: rotate(150deg); animation-delay: -0.6s; } &:nth-child(7) { transform: rotate(180deg); animation-delay: -0.5s; } &:nth-child(8) { transform: rotate(210deg); animation-delay: -0.4s; } &:nth-child(9) { transform: rotate(240deg); animation-delay: -0.3s; } &:nth-child(10) { transform: rotate(270deg); animation-delay: -0.2s; } &:nth-child(11) { transform: rotate(300deg); animation-delay: -0.1s; } &:nth-child(12) { transform: rotate(330deg); animation-delay: 0s; } } } @keyframes lds-spinner { 0% { opacity: 1; } 100% { opacity: 0; } } .pulse { display: block; position: absolute; top: 6px; right: 17px; width: 7px; height: 7px; border-radius: 50%; background: #f3ca56; cursor: pointer; box-shadow: 0 0 0 rgba(243, 202, 86, 0.9); animation: pulse 2s infinite; &:hover { animation: none; } } @-webkit-keyframes pulse { 0% { -webkit-box-shadow: 0 0 0 0 rgba(243, 202, 86, 0.9); } 70% { -webkit-box-shadow: 0 0 0 10px rgba(243, 202, 86, 0); } 100% { -webkit-box-shadow: 0 0 0 0 rgba(243, 202, 86, 0); } } @keyframes pulse { 0% { -moz-box-shadow: 0 0 0 0 rgba(243, 202, 86, 0.9); box-shadow: 0 0 0 0 rgba(243, 202, 86, 0.7); } 70% { -moz-box-shadow: 0 0 0 10px rgba(243, 202, 86, 0); box-shadow: 0 0 0 10px rgba(243, 202, 86, 0); } 100% { -moz-box-shadow: 0 0 0 0 rgba(243, 202, 86, 0); box-shadow: 0 0 0 0 rgba(243, 202, 86, 0); } } .ripple { position: relative; overflow: hidden; transform: translate3d(0, 0, 0); cursor: pointer; &:after { content: ""; display: block; position: absolute; width: 100%; height: 100%; top: 0; left: 0; pointer-events: none; background-image: radial-gradient(circle, $black 10%, transparent 10.01%); background-repeat: no-repeat; background-position: 50%; transform: scale(10, 10); opacity: 0; transition: transform 0.5s, opacity 1s; } &:active:after { transform: scale(0, 0); opacity: .2; transition: 0s; } } @keyframes spinner-border { to { transform: rotate(360deg); } } .spinner-border { display: inline-block; width: 2rem; height: 2rem; vertical-align: text-bottom; border: 0.25em solid currentColor; border-right-color: transparent; border-radius: 50%; animation: spinner-border .75s linear infinite; } .spinner-border-sm { width: 1rem; height: 1rem; border-width: 0.2em; } @keyframes spinner-grow { 0% { transform: scale(0); } 50% { opacity: 1; } } .spinner-grow { display: inline-block; width: 2rem; height: 2rem; vertical-align: text-bottom; background-color: currentColor; border-radius: 50%; opacity: 0; animation: spinner-grow .75s linear infinite; } .spinner-grow-sm { width: 1rem; height: 1rem; } /* ###### Spinner ###### */