.radio label, label.radio-inline { position: relative; padding-left: $mdb-radio-size + $mdb-radio-label-padding; // absolutely positioned so add the radio size .mdb-radio-outer-circle, // don't use generic span, it may conflict with span in user markup #693 .mdb-radio-inner-circle { position: absolute; top: calc-top($line-height, $font-size-base, $mdb-radio-size); // vertical center of line-height left: 0; display: inline-block; width: $mdb-radio-size; height: $mdb-radio-size; transition-duration: 0.2s; &.mdb-radio-outer-circle { border: $mdb-radio-border solid $mdb-radio-color-off; border-radius: 50%; transition: border-color ease .28s; } &.mdb-radio-inner-circle { display: inline-block; background-color: $mdb-radio-color-on; border-radius: 50%; transition: transform ease .28s; transform: scale3d(0, 0, 0); // focus/press ripple &::after { position: absolute; top: -#{$mdb-radio-size}; left: -#{$mdb-radio-size}; z-index: 1; display: block; width: 50px; height: 50px; margin: 0; content: ""; background-color: $gray-dark; border-radius: 100%; opacity: 0; transform: scale3d(1.5, 1.5, 1); } } } input[type=radio] { width: 0; height: 0; overflow: hidden; opacity: 0; &:checked { @include mdb-radio-color($mdb-radio-color-on); ~ .mdb-radio-inner-circle { transform: scale3d(0.55, 0.55, 1); &::after { animation: rippleOn 500ms; } } } &:not(:checked) ~ .mdb-radio-inner-circle::after { animation: rippleOff 500ms; } &[disabled], fieldset[disabled] & { @include mdb-radio-color($mdb-radio-color-disabled); .bg-inverse & { @include mdb-radio-color($mdb-radio-color-disabled-inverse); } } } } @keyframes rippleOn { 0% { opacity: 0; } 50% { opacity: 0.2; } 100% { opacity: 0; } } @keyframes rippleOff { 0% { opacity: 0; } 50% { opacity: 0.2; } 100% { opacity: 0; } }