Angular 11/12 full page scroll example. In this tutorial, you will learn how to implement full page scroll in angular 11 app using npm library.
In this tutorial will guide you step by step on how to implement full page scroll in angular 11 app using npm library.
Full Page Scroll in Angular 12/11 App
- Step 1 – Create New Angular App
- Step 2 – Add Code on Module.ts File
- Step 3 – Add Code on View File
- Step 4 – Add Code On Component ts File
- Step 5 – Update CSS File
- Step 6 – Start Angular App And PHP Server
Step 1 – Create New Angular App
First of all, open your terminal and execute the following command on it to install angular app:
ng new my-new-app
Then install NPM package called ngx-page-scroll-core to create full page scrolling. You can install the package by execute the following command on terminal:
npm i ngx-page-scroll-core
Step 2 – Add Code on Module.ts File
In this step, visit src/app directory and open app.module.ts file. Then add the following code into it:
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; import { NgxPageScrollCoreModule } from 'ngx-page-scroll-core'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, AppRoutingModule, NgxPageScrollCoreModule.forRoot({duration: 500}) ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
Step 3 – Add Code on View File
In this step, create simple reactive form for full page scroll app. So, visit src/app/app.component.html and update the following code into it:
<div class="main-wrapper"> <div class="step-container"> <div class="step" [ngClass]="{'active': activeUIIndex === 1}" pageScroll (click)="scrollCustomImplementation(sec1, 1)"> <div class="v-stepper"> <div class="circle"></div> <div class="line"></div> </div> </div> <div class="step" [ngClass]="{'active': activeUIIndex === 2}" pageScroll (click)="scrollCustomImplementation(sec2, 2)"> <div class="v-stepper"> <div class="circle"></div> <div class="line"></div> </div> </div> <div class="step" [ngClass]="{'active': activeUIIndex === 3}" pageScroll (click)="scrollCustomImplementation(sec3, 3)"> <div class="v-stepper"> <div class="circle"></div> <div class="line"></div> </div> </div> <div class="step" [ngClass]="{'active': activeUIIndex === 4}" pageScroll (click)="scrollCustomImplementation(sec4, 4)"> <div class="v-stepper"> <div class="circle"></div> <div class="line"></div> </div> </div> <div class="step" [ngClass]="{'active': activeUIIndex === 5}" pageScroll (click)="scrollCustomImplementation(sec5, 5)"> <div class="v-stepper"> <div class="circle"></div> </div> </div> </div> <div #sec1 class="card-wrapper"> <div class="card"> <div class="card-container"> <h4><b>John Doe 1</b></h4> <p>Architect & Engineer</p> </div> </div> </div> <div #sec2 class="card-wrapper"> <div class="card"> <div class="container"> <h4><b>John Doe 2</b></h4> <p>Architect & Engineer</p> </div> </div> </div> <div #sec3 class="card-wrapper"> <div class="card"> <div class="container"> <h4><b>John Doe 3</b></h4> <p>Architect & Engineer</p> </div> </div> </div> <div #sec4 class="card-wrapper"> <div class="card"> <div class="container"> <h4><b>John Doe 4</b></h4> <p>Architect & Engineer</p> </div> </div> </div> <div #sec5 class="card-wrapper"> <div class="card"> <div class="container"> <h4><b>John Doe 5</b></h4> <p>Architect & Engineer</p> </div> </div> </div> </div>
Step 4 – Add Code On Component ts File
In this step, visit the src/app directory and open app.component.ts. Then add the following code into component.ts file:
import { Component } from '@angular/core'; import { Inject } from '@angular/core'; import { DOCUMENT } from '@angular/common'; import { PageScrollService } from 'ngx-page-scroll-core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'], }) export class AppComponent { title = 'Fullpage Scrolling'; activeUIIndex = 1; constructor(private pageScrollService: PageScrollService, @Inject(DOCUMENT) private document: any) { } scrollCustomImplementation(element: HTMLElement, index) { this.pageScrollService.scroll({ document: this.document, scrollTarget: element, }); this.activeUIIndex = index; } }
Step 5 – Update CSS File
In this step, create styles for UI elements. And update the app.component.scss
file with the following code:
.main-wrapper { text-align: center; height: 100vh; max-width: 650px; margin-left: auto; margin-right: auto; } // Card Styles .card-wrapper { height: 100%; } .card { box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2); transition: 0.3s; height: 99%; margin: 5px; background: rgb(176, 218, 255); } .card:hover { box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2); } .card-container { padding: 2px 16px; } // Stepper Styles .step-container { width: 30px; position: fixed; top: 25%; opacity: 0.5; transition: opacity 0.3s; -webkit-transition: opacity 0.3s; } .step-container:hover { opacity: 1; } .step { padding: 10px; display: flex; flex-direction: row; justify-content: flex-start; background-color: cream; } .v-stepper { position: relative; } .step .circle { background-color: white; border: 3px solid gray; border-radius: 100%; width: 15px; height: 15px; display: inline-block; } .step .line { top: 20px; left: 9px; height: 100%; position: absolute; border-left: 3px solid gray; } .step.completed .circle { visibility: visible; background-color: gray; border-color: rgb(0, 0, 0); } .step.completed .line { border-left: 3px solid rgb(0, 0, 0); } .step.active .circle { visibility: visible; border-color: rgb(0, 0, 0); } .step.empty .circle { visibility: hidden; } .step.empty .line { top: 0; height: 150%; } .step:last-child .line { border-left: 3px solid white; z-index: -1; }
Step 6 – Start Angular App And PHP Server
In this step, execute the following commands on terminal to start angular app:
ng serve