How can I help you?
Customize thumb in Angular Range Slider component
26 Feb 20266 minutes to read
Customize the Range Slider thumb (handle) appearance by overriding the e-handle CSS class. The following example demonstrates how to apply various thumb shapes—square, circle, and oval—and custom background images. Choose the shape that best suits your application design.
.e-control.e-slider .e-handle {
background-image: url('https://ej2.syncfusion.com/demos/src/slider/images/thumb.png');
background-color: transparent;
height: 25px;
width: 25px;
}
/* square slider */
.square_slider.e-control.e-slider .e-handle {
border-radius: 0%;
background-color: #f9920b;
border: 0;
}
/* circle slider */
.circle_slider.e-control.e-slider .e-handle {
border-radius: 50%;
background-color: #f9920b;
border: 0;
}
/* oval slider */
.oval_slider.e-control.e-slider .e-handle {
height: 25px;
width: 8px;
top: 3px;
border-radius: 15px;
background-color: #f9920b;
}import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { SliderModule } from '@syncfusion/ej2-angular-inputs'
import { Component, ViewEncapsulation, ViewChild } from '@angular/core';
import { SliderComponent } from '@syncfusion/ej2-angular-inputs';
@Component({
imports: [
SliderModule
],
standalone: true,
selector: 'my-app',
template: `
<div class="slider_container">
<div class="labelText slider-userselect">Square</div>
<ejs-slider id='square_slider' [value]='value' [min]='min' [max]='max'></ejs-slider>
</div>
<div class="slider_container">
<div class="labelText slider-userselect">Circle</div>
<ejs-slider id='circle_slider' [value]='value' [min]='min' [max]='max'></ejs-slider>
</div>
<div class="slider_container">
<div class="labelText slider-userselect">Oval</div>
<ejs-slider id='oval_slider' [value]='value' [min]='min' [max]='max'></ejs-slider>
</div>
<div class="slider_container">
<div class="labelText slider-userselect">Custom image</div>
<ejs-slider id='image_slider' [value]='value' [min]='min' [max]='max' [ticks]='ticks'></ejs-slider>
</div>`,
encapsulation: ViewEncapsulation.None
})
export class AppComponent {
public value: number = 30;
public min: number = 0;
public max: number = 100;
public ticks: Object = {
placement: 'After'
};
}@import 'node_modules/@syncfusion/ej2-base/styles/material3.css';
@import 'node_modules/@syncfusion/ej2-buttons/styles/material3.css';
@import 'node_modules/@syncfusion/ej2-popups/styles/material3.css';
@import 'node_modules/@syncfusion/ej2-angular-inputs/styles/material3.css';
.slider-userselect {
-webkit-user-select: none;
/* Safari 3.1+ */
-moz-user-select: none;
/* Firefox 2+ */
-ms-user-select: none;
/* IE 10+ */
user-select: none;
/* Standard syntax */
}
.labelText {
text-align: left;
font-weight: 500;
font-size: 13px;
padding-bottom: 10px;
}
.slider_container {
margin-top: 40px;
margin: 0 auto;
width: 80%;
}
#square_slider .e-handle {
border-radius: 0;
background-color: #f9920b;
border: 0;
}
#circle_slider .e-handle {
background-color: #f9920b;
border-radius: 50%;
border: 0;
}
#image_slider .e-handle {
height: 25px;
width: 24px;
background-size: 24px;
}
#image_slider .e-handle {
background-image: url("https://ej2.syncfusion.com/demos/src/slider/images/thumb.png");
background-repeat: no-repeat;
background-color: transparent;
border: 0;
}
#square_slider .e-tab-handle::after,
#circle_slider .e-tab-handle::after {
background-color: #f9920b;
}
#image_slider .e-tab-handle::after {
background-color: transparent;
}
#oval_slider .e-handle {
height: 25px;
width: 8px;
top: 3px;
border-radius: 15px;
background-color: #f9920b;
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));