So, I did this mission to understand this, it turned out that it was not as easy as I thought.
This is a bit dirty, but you need to create your div within the div as follows:
<div class="example"> <div></div> <p>test</p> </div>
Then from here you can fine-tune the scaling targeting, for example:
div.example { height: 250px; width: 250px; overflow: hidden; position: relative; } div.example > div { position: absolute; height: 100%; width: 100%; -moz-transition: all 1.5s; -webkit-transition: all 1.5s; transition: all 1.5s; -moz-transform: scale(1,1); -webkit-transform: scale(1,1); transform: scale(1,1); background-image: url('http://www.jeroenkemperman.nl/wp-content/uploads/2014/06/Johns_Inc_Pizza_Spaghetti_wikipediacommons.jpg'); -moz-background-size: cover; -webkit-background-size: cover; background-size: cover; z-index: -1; } div.example:hover > div { -moz-transform: scale(2,2); -webkit-transform: scale(2,2); transform: scale(2,2); }
You can adjust the scale and speed using the scale and transition properties.
Here is a working fiddle . Hope this helps, I checked Chrome / Safari / Firefox and it seems to work very well.
source share