perf: optimize sticky header to prevent layout thrashing
This commit is contained in:
@@ -11,20 +11,30 @@
|
||||
|
||||
/* Sticky Header */
|
||||
if($('.active-sticky-header').length){
|
||||
$window.on('resize', function(){
|
||||
var $headerSticky = $('header .header-sticky');
|
||||
var $headerMain = $("header.main-header");
|
||||
var cachedHeight = 0;
|
||||
|
||||
function setHeaderHeight(){
|
||||
cachedHeight = $headerSticky.outerHeight();
|
||||
$headerMain.css("height", cachedHeight);
|
||||
}
|
||||
|
||||
$window.on('load resize', function(){
|
||||
setHeaderHeight();
|
||||
});
|
||||
|
||||
function setHeaderHeight(){
|
||||
$("header.main-header").css("height", $('header .header-sticky').outerHeight());
|
||||
}
|
||||
|
||||
var ticking = false;
|
||||
$window.on("scroll", function() {
|
||||
var fromTop = $(window).scrollTop();
|
||||
setHeaderHeight();
|
||||
var headerHeight = $('header .header-sticky').outerHeight()
|
||||
$("header .header-sticky").toggleClass("hide", (fromTop > headerHeight + 100));
|
||||
$("header .header-sticky").toggleClass("active", (fromTop > 600));
|
||||
if (!ticking) {
|
||||
window.requestAnimationFrame(function() {
|
||||
var fromTop = $window.scrollTop();
|
||||
$headerSticky.toggleClass("hide", (fromTop > cachedHeight + 100));
|
||||
$headerSticky.toggleClass("active", (fromTop > 600));
|
||||
ticking = false;
|
||||
});
|
||||
ticking = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user