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
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Utilizzare Containers in .NET Aspire
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Utilizzare i variable font nel CSS
Utilizzare una qualunque lista per i parametri di tipo params in C#
Applicare un filtro per recuperare alcune issue di GitHub
Testare l'invio dei messaggi con Event Hubs Data Explorer
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Implementare il throttle in JavaScript
Disabilitare le run concorrenti di una pipeline di Azure DevOps
Il nuovo controllo Range di Blazor 9
I più letti di oggi
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- .NET Conference Italia 2025 - Milano
- The Agentic Day - Milano
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!