Grazie ai progressi fatti da HTML5 e CSS3, i design dei siti web sono sempre più articolati e ricchi di animazioni. Le media query sono uno dei cardini cardine di questa bellezza in quanto ci permettono di riscrivere gli stili al cambiamento delle dimensioni del viewport.
Tuttavia, a volte è necessario modificare lo stile durante lo scroll sulla pagina, in questo caso dobbiamo basarci sugli eventi emessi dal DOM e agire di conseguenza. E' in questo contesto che andremo a creare una direttiva Angular che intercetti lo scroll sulla pagina e renda un elemento sticky se questo tocca il bordo della viewport.
Il primo step consiste nell'inizializzare tutto ciò che ci servirà: una posizione di default, l'elemento a cui la direttiva è associata e il servizio Renderer2 che astrae le operazioni sul DOM.
elementPosition = 999;
constructor(@Self() private hostElement: ElementRef, private renderer: Renderer2) {}Passiamo quindi alla valorizzazione dei parametri minimi che ci consentiranno di modificare lo stile dell'elemento.
ngAfterViewInit(): void {
this.elementPosition = this.hostElement.nativeElement.offsetTop;
this.renderer.setStyle(this.hostElement.nativeElement, 'z-index', '10');
this.renderer.setStyle(this.hostElement.nativeElement, 'top','0');
}Come ultimo step, intercettiamo l'evento di scroll emesso dal DOM e impostiamo lo stile sticky.
@HostListener('window:scroll', ['$event'])
handleScroll() {
const windowScroll = window.pageYOffset;
if (windowScroll >= this.elementPosition) {
this.renderer.setStyle(this.hostElement.nativeElement, 'position','sticky');
} else {
this.renderer.removeStyle(this.hostElement.nativeElement, 'position','static');
}
}Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Effettuare la ricerca di testo nascosto in una pagina web con Javascript
Utilizzare zizmor per rendere più sicuri i workflow di GitHub
Realizzare un accordion con gli elementi HTML details e summary
Self-healing degli unit test con Copilot in GitHub
Personalizzare le pagine di errore su Azure App Service
Impostare la content-visibility in CSS per ottimizare il rendering iniziale di una pagina
Ciclo di vita risorse con .NET Aspire
Effettuare chiamate API tramite GitHub App
Cache temporanea in Javascript con oggetti
Creare una cache temporanea in JavaScript
Stop alle password con Azure Managed Identity
Ospitare n8n su Azure App Service
I più letti di oggi
- Build 2013: segui con noi tutte le novità in diretta da San Francisco!
- Community Days 2012 - Milano
- Microsoft WebCamp - Roma, Milano
- Web e ASP.NET Live - Online
- Rilasciata la Microsoft AJAX Library Preview 6
- Visual Studio 2010 e .NET Framework 4.0: beta 2 e data di release RTM
- Speciale jQuery: Javascript con una marcia in più
- SQL Server CE 4.0 supporterà ASP.NET


