body { text-align: center; margin: 100px; } a { font-size: 40px; display: inline-block; position: relative; overflow: hidden; text-decoration: none; &:after { content: ''; width: 20%; height: 100%; position: absolute; left: auto; top: 0; bottom: 0; right: -20%; background-image: linear-gradient(135deg, rgba(255,255,255,0), rgba(255,255,255,.8), rgba(255,255,255,0) ); } &:hover { &:after { transition: all .4s ease-out; right: 100%; } } }