.ripple { position: relative; overflow: hidden; &:after { content: ""; display: block; position: absolute; width: 100%; height: 100%; top: 0; left: 0; pointer-events: none; background-image: radial-gradient(circle, #000 10%, transparent 10.01%); background-repeat: no-repeat; background-position: 50%; transform: scale(10,10); opacity: 0; transition: transform .3s, opacity 1s; } &:active:after { transform: scale(0,0); opacity: 0.1; transition: 0s; } } .ripple-icon, .ripple-checkbox, .ripple-switch, .ripple-radio { &:after { transform: scale(7,7); } } .ripple-switch { position: absolute; }