Smooth scroll

Bootstrap 5 Smooth scroll

Bootstrap smooth scroll is an animated movement from a trigger — such as button, link or any other clickable element — to another place of the same page.

Note: Read the API tab to find all available options and advanced customization


Basic example

Click on the links below to see the live example

To achieve a Smooth Scroll effect, add the mdbSmoothScroll directive to your link.

        
            
            <a href="#section-1" mdbSmoothScroll>Smooth Scroll to #section-1</a>
          
        
    

Custom container

By adding [container] input you can set container in which you want smooth scroll.

        
            
            <div #container style="overflow-y: auto; height: 100px; width: 100%; text-align: center;">
              <a href="#section-2" mdbSmoothScroll [container]="container"
                >Smooth Scroll to #section-2</a
              >
              <div style="height: 100px;"></div>
              <section id="section-2" class="mt-5 text-center">
                <p>Here it is #section-2</p>
              </section>
              <div style="height: 500px;"></div>
            </div>
          
        
    

Custom offset

By adding [offset] input you can set custom offset from element.

        
            
            <a href="#section-3" mdbSmoothScroll [offset]="25">Smooth Scroll</a>
          
        
    

Custom duration

By adding [duration] input you can set custom duration of smooth scroll.

        
            
            <a href="#section-4" mdbSmoothScroll [duration]="4000">Smooth Scroll</a>
          
        
    

Custom easing

By adding [easing] input you can set other scroll's motion option

Smooth Scroll to #section-5

Here it is #section-5/p>

        
            
            <a href="#section-5" mdbSmoothScroll [easing]="'easeInOutQuart'">Smooth Scroll</a>
          
        
    

Container away from viewport

When you put container with overflow: scroll away from viewport link firstly will scroll to this container then it will scroll container.

        
            
            <a href="#section-6" mdbSmoothScroll [container]="container" [offset]="25"
              >Smooth Scroll to #section-6</a
            >
            <div style="height: 2000px;"></div>
            <div #container style="overflow-y: auto; height: 100px; width: 100%; text-align: center;">
              <div style="height: 100px;"></div>
              <section id="section-6" class="mt-4 text-center">
                <p>Here it is #section-6</p>
              </section>
              <div style="height: 500px;"></div>
            </div>
          
        
    

Section to scroll is below:

Here it is #section-6/p>


Smooth scroll - API


Import

        
            
          import { MdbSmoothScrollModule } from 'mdb-angular-ui-kit/smooth-scroll';
          …
          @NgModule ({
            ...
            imports: [MdbSmoothScrollModule],
            ...
          })
        
        
    

Inputs

Name Type Default Description
container HTMLElement - Defines scrolling container
duration number 500 Changes scroll duration
easing string 'linear' Changes motion type of smooth scroll, available easings: 'linear', 'easeInQuad', 'easeInCubic', 'easeInQuart', 'easeInQuint', 'easeInOutQuad' 'easeInOutCubic', 'easeInOutQuart', 'easeInOutQuint', 'easeOutQuad', 'easeOutCubic', 'easeOutQuart', 'easeOutQuint'
offset number 0 Changes offset from element

Outputs

Name Type Description
scrollStart EventEmitter<void> Event fired when scrolling start
scrollEnd EventEmitter<void> Event fired when scrolling ends
scrollCancel EventEmitter<void> Event fired when scrolling is canceled
        
            
              <a href="#section-1" mdbSmoothScroll (scrollStart)="onScrollStart()">Smooth Scroll to #section-1</a>
            
        
    
        
            
              import { Component } from '@angular/core';

              @Component({ selector: 'app-root',
                templateUrl: './app.component.html',
                styleUrls: ['./app.component.scss'],
              })
              export class AppComponent {
                onScrollStart() {
                  console.log('scrolling start');
                }
              }
            
        
    

Methods

Name Description Example
cancelScroll Manually cancel scrolling smoothScroll.cancelScroll()
        
            
              <a href="#section-1" #scroll mdbSmoothScroll (click)="onClick()">Smooth Scroll to #section-1</a>
            
        
    
        
            
              import { Component, ViewChild } from '@angular/core';
              import { MdbSmoothScrollDirective } from 'mdb-angular-ui-kit/smooth-scroll';

              @Component({ selector: 'app-root',
                templateUrl: './app.component.html',
                styleUrls: ['./app.component.scss'],
              })
              export class AppComponent {
                @ViewChild('scroll', { static: true }) scroll!: MdbSmoothScrollDirective;

                constructor() {}

                onClick(): void {
                  if (this.scroll) {
                    setTimeout(() => {
                      this.scroll.cancelScroll();
                    }, 100);
                  }
                }
              }