Image splitting effect with CSS and JQuery

we are going to make an image splitting effect. What’s that? It’s simillar to a sliding door effect where the image slides to left or right side and reveals the text behind it, but the thing that makes this different is that the effect looks like the image is splitted into half and one goes left and the other one goes right. One thing that’s very important is that there won’t be 2 images, it’s only one



Just some dummy text.

Now, let’s make a CSS trick to show the first part of the image in one div and the second part in the other div.. It’s not hard.


position:relative; /* important */
width:300px; /* we must set a specific width of the container, so it doesn't strech when the image starts moving */
height:220px; /* important */
overflow:hidden; /* hide the content that goes out of the div */
/*just styling bellow*/
background: black;
position:absolute; /* this is important, so the div is positioned on top of the text */
.image_div {
position:relative; /* important so we can work with the left or right indent */
overflow:hidden; /* hide the content outside the div (this is how we will hide the part of the image) */
width:50%; /* make it 50% of the whole images_holder */
float:left; /* make then inline */
.right img{
margin-left: -100%; /* 100% is in this case 50% of the image, so this is how we show the second part of the image */

That’s it. Looks like one whole image, right? Well there are 2 images making it to look like it’s one. :)

Now the JQuery part, it’s actualy pretty simple, and simillar to the sliding door effect i wrote a tutorial about before.


$(document).ready(function() {

//when the user hovers over the div that contains our html...
//... we get the width of the div and split it by 2  ...
var width = $(this).outerWidth() / 2;
/*... and using that width we move the left "part" of the image to left and right "part"
to right by changing it's indent from left side or right side... '*/
$(this).find('.left').animate({ right : width },{queue:false,duration:300});
$(this).find('.right').animate({ left : width },{queue:false,duration:300});
}, function(){
//... and when he hovers out we get the images back to their's starting position using the same function... '
$(this).find('.left').animate({ right : 0 },{queue:false,duration:300});
$(this).find('.right').animate({ left : 0 },{queue:false,duration:300});
//... close it and that's it



Leave a comment