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
Gestione ciclo di vita in .NET Aspire
Creare una libreria CSS universale - Rotazione degli elementi
Recuperare gli audit log in Azure DevOps
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Anonimizzare i dati sensibili nei log di Azure Front Door
Implementare il throttle in JavaScript
Gestione delle scrollbar dinamiche in HTML e CSS
Pubblicare un MCP Server in GitHub MCP Registry
Utilizzare Containers in .NET Aspire
Configurare lo startup di applicazioni server e client con .NET Aspire
Fornire parametri ad un Web component HTML
Collegare applicazioni server e client con .NET Aspire


