You can use css animation like in this example
@-webkit-keyframes shake { 0% { -webkit-transform: translate(2px, 1px) rotate(0deg); } 10% { -webkit-transform: translate(-1px, -2px) rotate(-1deg); } 20% { -webkit-transform: translate(-3px, 0px) rotate(1deg); } 30% { -webkit-transform: translate(0px, 2px) rotate(0deg); } 40% { -webkit-transform: translate(1px, -1px) rotate(1deg); } 50% { -webkit-transform: translate(-1px, 2px) rotate(-1deg); } 60% { -webkit-transform: translate(-3px, 1px) rotate(0deg); } 70% { -webkit-transform: translate(2px, 1px) rotate(-1deg); } 80% { -webkit-transform: translate(-1px, -1px) rotate(1deg); } 90% { -webkit-transform: translate(2px, 2px) rotate(0deg); } 100% { -webkit-transform: translate(1px, -2px) rotate(-1deg); } } .shake:hover { -webkit-animation-name: shake; -webkit-animation-duration: 0.5s; -webkit-transform-origin:50% 50%; -webkit-animation-iteration-count: infinite; } .shake { display:inline-block }
<div class="shake">Shake me</div> <img class="shake" src="https://www.w3.org/2008/site/images/logo-w3c-screen-lg" />
To change the speed of shaking, change the values โโof animation-duration , translate() , rotate() .
If you want to shake an element using javascript see jsfiddle
source share