Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mllavez/94adca0ef0ed103631dc587ae3ddb4c1 to your computer and use it in GitHub Desktop.
Save mllavez/94adca0ef0ed103631dc587ae3ddb4c1 to your computer and use it in GitHub Desktop.
Depth of field effect in CSS
<div></div>
<div></div>
<div></div>
$(document).ready(function(){
var back = 20;
var middle = 325;
var front = 550;
var YY,
offset,
sizeBack,
sizeMiddle,
sizeFront;
// For mouse users
$('html').mousemove(function(e){
offset = $('html').offset();
YY = e.clientY - offset.top;
sizeBack = Math.abs(back-YY)/40;
sizeMiddle = Math.abs(middle-YY)/40;
sizeFront = Math.abs(front-YY)/40;
// apply blur
$('div').css({
'-webkit-filter': 'blur('+ (sizeBack) +'px)',
'-webkit-transform': 'translate3d(500px, 150px, '+ -YY +'px)',
'-moz-transform': 'translate3d(500px, 150px, '+ -YY +'px)',
'transform': 'translate3d(500px, 150px, '+ -YY +'px)'
});
$('div + div').css({
'-webkit-filter': 'blur('+ (sizeMiddle) +'px)',
'-webkit-transform': 'translate3d(500px, 225px, '+ (100 + -YY/1.4) +'px)',
'-moz-transform': 'translate3d(500px, 225px, '+ (100 + -YY/1.4) +'px)',
'transform': 'translate3d(500px, 225px, '+ (100 + -YY/1.4) +'px)'
});
$('div + div + div').css({
'-webkit-filter': 'blur('+ (sizeFront) +'px)',
'-webkit-transform': 'translate3d(500px, 300px, '+ (200 + -YY/2) +'px)',
'-moz-transform': 'translate3d(500px, 300px, '+ (200 + -YY/2) +'px)',
'transform': 'translate3d(500px, 300px, '+ (200 + -YY/2) +'px)'
});
});
});
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
body {
transform-style: preserve-3d;
perspective: 600px;
}
div {
width: 400px;
height: 200px;
margin: -100px -200px;
background: #fff;
border: 20px solid #333;
border-radius: 24px;
position: absolute;
z-index: 1;
transform-style: preserve-3d;
transform: translate3d(500px, 150px, 0px);
-webkit-filter: blur(10px);
transition: -webkit-filter .05s linear;
}
div + div {
transform: translate3d(500px, 225px, 100px);
z-index: 5;
-webkit-filter: blur(4px);
}
div + div + div {
transform: translate3d(500px, 300px, 200px);
z-index: 10;
-webkit-filter: blur(0px);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment