forked from M3-Academy/vtex-cms-template-atualizado
feat: Torna o header fixo no scroll
This commit is contained in:
parent
85c28ba5f0
commit
7f9d01a0a0
@ -1,45 +1,25 @@
|
||||
import { isSmallerThen768 } from "Helpers/MediasMatch";
|
||||
import { isSmallerThen991 } from "Helpers/MediasMatch";
|
||||
|
||||
export default class FixedHeader {
|
||||
constructor() {
|
||||
if (!isSmallerThen768) {
|
||||
this.fixedHeader();
|
||||
if (!isSmallerThen991) {
|
||||
this.selectors();
|
||||
this.events();
|
||||
}
|
||||
}
|
||||
|
||||
fixedHeader() {
|
||||
var lastScroll = 0;
|
||||
var timer, scrollTop, headerHeight;
|
||||
var element = $("header.header");
|
||||
selectors() {
|
||||
this.pageHeader = $(".page-header");
|
||||
}
|
||||
|
||||
$(document).scroll(function (e) {
|
||||
headerHeight = element.height();
|
||||
scrollTop = $(document).scrollTop();
|
||||
events() {
|
||||
$(document).scroll(this.fixHeader.bind(this));
|
||||
}
|
||||
|
||||
if (scrollTop > 1) {
|
||||
$("body").css("padding-top", headerHeight);
|
||||
element.addClass("fixed");
|
||||
fixHeader() {
|
||||
const topScroll = $(document).scrollTop();
|
||||
|
||||
if (timer) {
|
||||
window.clearTimeout(timer);
|
||||
}
|
||||
|
||||
timer = window.setTimeout(function () {
|
||||
if (
|
||||
scrollTop > lastScroll &&
|
||||
scrollTop > element.height() + 20
|
||||
) {
|
||||
element.addClass("fixed-hide");
|
||||
} else {
|
||||
element.removeClass("fixed-hide");
|
||||
}
|
||||
|
||||
lastScroll = $(document).scrollTop();
|
||||
}, 50);
|
||||
} else {
|
||||
element.removeClass("fixed");
|
||||
$("body").css("padding-top", 0);
|
||||
}
|
||||
});
|
||||
if (topScroll > 200) this.pageHeader.addClass("is-fixed");
|
||||
else this.pageHeader.removeClass("is-fixed");
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,15 @@
|
||||
padding: 18px 0 0;
|
||||
}
|
||||
|
||||
@include mq(lg, min) {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
&.is-fixed {
|
||||
background: rgba($black-500, 0.9);
|
||||
}
|
||||
|
||||
&__wrapper {
|
||||
display: grid;
|
||||
grid-template-columns: 2fr 1fr 2fr;
|
||||
|
@ -22,7 +22,7 @@
|
||||
<body>
|
||||
<vtex:template id="sauloklein-header" />
|
||||
|
||||
<main class="home"></main>
|
||||
<main style="height: 600px" class="home"></main>
|
||||
|
||||
<footer>
|
||||
<vtex:template id="sauloklein-footer-newsletter" />
|
||||
|
Loading…
Reference in New Issue
Block a user