Skip to content

Instantly share code, notes, and snippets.

@alinmechenici
Created October 3, 2016 18:12
Show Gist options
  • Select an option

  • Save alinmechenici/5e313fa20b22f85605221a3c43d7e2dd to your computer and use it in GitHub Desktop.

Select an option

Save alinmechenici/5e313fa20b22f85605221a3c43d7e2dd to your computer and use it in GitHub Desktop.
Medium.com style header effect
<div class="bg">
<div class="bg-normal"></div>
<div class="bg-blur"></div>
</div>
<div class="container">
<header>
<div class="slogan-holder"></div>
<div class="nav-holder">
<ul class="nav">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Gallery</a></li>
<li><a href="#">Contacts</a></li>
</ul>
</div>
</header>
<div class="content"></div>
</div>

Medium.com style header effect

Just pen to show a friend how to create medium-like header effect.

A Pen by Chrysto on CodePen.

License.

$(function(){
/*
http://bassta.bg/2013/12/medium-com-like-blurred-header-effect/
*/
$window = $(window);
$body = $("body");
$bgBlur = $(".bg-blur");
var bgBlurHeight = $bgBlur.height();
var scrollFlag = false;
var scrollThreshold = 0.25; //used to debounce pointer events
var blurWhenReach = 3; //blur factor, 3 means the imahe will be blurred when you scroll 1/3 of the div
$window.on("scroll", function(event){
var scrollTop = $window.scrollTop();
if(!scrollFlag){
scrollFlag = true;
$body.addClass("disable-pointer-events");
}
debouncePointerEvents();
if(scrollTop < bgBlurHeight){
var _alpha = (scrollTop / bgBlurHeight) * blurWhenReach;
if(_alpha > 1){ _alpha = 1 }
TweenMax.set($bgBlur, {alpha: _alpha });
}
});
// Speed up things by disabling pointer events. I use TweenMax delayedCall instead JS native setInterval just for the sake of showing how to use this method. See more at http://www.thecssninja.com/javascript/pointer-events-60fps
function debouncePointerEvents(){
TweenMax.killDelayedCallsTo(addPointerEvents);
TweenMax.delayedCall(scrollThreshold, addPointerEvents);
}
function addPointerEvents(){
scrollFlag = false;
$body.removeClass("disable-pointer-events");
}
});
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/gsap/latest/TweenMax.min.js"></script>
body {
font-family:Helvetica,sans-serif;
}
.bg {
position:fixed;
width:100%;
height:500px;
z-index:-100;
}
.bg > div {
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
background-repeat:no-repeat;
background-size:cover;
background-position:center center;
}
.bg-normal {
z-index:10;
background-image:url(http://cloud.bassta.bg/blur/bg.jpg);
}
.bg-blur {
z-index:20;
background-image:url(http://cloud.bassta.bg/blur/bg-blur.jpg);
opacity:0;
}
.container {
z-index:2000;
}
.container header {
position:relative;
width:100%;
height:500px;
}
.slogan-holder {
position:relative;
width:100%;
height:440px;
}
.nav-holder {
position:relative;
width:100%;
height:60px;
}
ul.nav {
width:640px;
height:60px;
margin:0 auto;
border-top:1px solid #dededc;
list-style:none;
text-align:center;
}
ul.nav li {
display:inline-block;
padding-top:16px;
padding-right:40px;
}
ul.nav li a {
text-decoration:none;
color:#fff;
font-size:18px;
}
.content {
height:2000px;
background-color:#fff;
}
.disable-pointer-events {
pointer-events:none!important;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment