In Angular application I am trying to shrink header component of Sticky header when user scrolls down. Currently sticky header works fine.
What changes do I need to make to display lower half of header with no text when user scroll down?
Actual component
Expected Output when user scrolls down
– Make Text disappear and display header as sticky showing lower 75% of component
This is what I have tried so far which makes whole component sticky when user scroll down
html
<div class="header-comp" [class.sticky] = "sticky" #stickyMenu> <p class="text">Header</p> <div class="placeholder"> //placeholder </div> </div> <div class="dropdowns"> //dropdown </div> <div class="btn"> Button </button> </div> </div>
.scss
.header-comp { width: 100%; height: 148px; background: grey; border-radius: 0px; } .sticky{ position: fixed; top: 0; overflow: hidden; z-index: 10; transition: 0.90s; } .content{ height: 300vh; } .text { width: 390px; height: 26px; color: tf-colors.$white; font-size: 21px; font-family: Arial; letter-spacing: 0px; line-height: 26px; margin-left: 98px; padding-top: 40px; }
.ts
sticky: boolean = false; @ViewChild('stickyMenu') menuElement: ElementRef; menuPosition: any; ngAfterViewInit(){ this.menuPosition = this.menuElement.nativeElement.offsetTop console.log('mE',this.menuElement) } @HostListener('window:scroll', ['$event']) handleScroll(){ const windowScroll = window.pageYOffset; console.log(windowScroll) if(windowScroll >= this.menuPosition){ this.sticky = true; } else { this.sticky = false; } }
Advertisement
Answer
For container to actually stick to the ceiling of the page we need to give negative top value.
.sticky{ position: fixed; top: -60px; --------> Change top value to negative overflow: hidden; z-index: 10; transition: 0.90s; }