// Base icon styling .b-icon { &.bi { display: inline-block; overflow: visible; // The following is required to compensate for alignment // issues with the Bootstrap Icons alpha implementation vertical-align: $b-icon-vertical-offset; } &.b-icon-animation-cylon, &.b-iconstack .b-icon-animation-cylon > g { transform-origin: center; animation: $b-icon-animation-cylon-duration infinite ease-in-out alternate b-icon-animation-cylon; @media (prefers-reduced-motion: reduce) { animation: none; } } &.b-icon-animation-cylon-vertical, &.b-iconstack .b-icon-animation-cylon-vertical > g { transform-origin: center; animation: $b-icon-animation-cylon-vertical-duration infinite ease-in-out alternate b-icon-animation-cylon-vertical; @media (prefers-reduced-motion: reduce) { animation: none; } } &.b-icon-animation-fade, &.b-iconstack .b-icon-animation-fade > g { transform-origin: center; animation: $b-icon-animation-throb-duration infinite ease-in-out alternate b-icon-animation-fade; @media (prefers-reduced-motion: reduce) { animation: none; } } &.b-icon-animation-spin, &.b-iconstack .b-icon-animation-spin > g { transform-origin: center; animation: $b-icon-animation-spin-duration infinite linear normal b-icon-animation-spin; @media (prefers-reduced-motion: reduce) { animation: none; } } &.b-icon-animation-spin-reverse, &.b-iconstack .b-icon-animation-spin-reverse > g { transform-origin: center; animation: $b-icon-animation-spin-reverse-duration infinite linear reverse b-icon-animation-spin; @media (prefers-reduced-motion: reduce) { animation: none; } } &.b-icon-animation-spin-pulse, &.b-iconstack .b-icon-animation-spin-pulse > g { transform-origin: center; animation: $b-icon-animation-spin-pulse-duration infinite steps(8) normal b-icon-animation-spin; @media (prefers-reduced-motion: reduce) { animation: none; } } &.b-icon-animation-spin-reverse-pulse, &.b-iconstack .b-icon-animation-spin-reverse-pulse > g { transform-origin: center; animation: $b-icon-animation-spin-reverse-pulse-duration infinite steps(8) reverse b-icon-animation-spin; @media (prefers-reduced-motion: reduce) { animation: none; } } &.b-icon-animation-throb, &.b-iconstack .b-icon-animation-throb > g { transform-origin: center; animation: $b-icon-animation-throb-duration infinite ease-in-out alternate b-icon-animation-throb; @media (prefers-reduced-motion: reduce) { animation: none; } } } // Animation for spinning icons @keyframes b-icon-animation-cylon { 0% { transform: translateX(-25%); } 100% { transform: translateX(25%); } } @keyframes b-icon-animation-cylon-vertical { 0% { transform: translateY(25%); } 100% { transform: translateY(-25%); } } @keyframes b-icon-animation-fade { 0% { opacity: 0.1; } 100% { opacity: 1; } } @keyframes b-icon-animation-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(359deg); } } @keyframes b-icon-animation-throb { 0% { opacity: 0.5; transform: scale(0.5); } 100% { opacity: 1; transform: scale(1); } } // Make icons slightly larger in buttons, nav-links, dropdowns, and input-group-text .btn, .nav-link, .dropdown-toggle, .dropdown-item, .input-group-text { .b-icon { &.bi { font-size: 125%; vertical-align: text-bottom; } } }