Skip to content

Slider Control

Elementor Core BasicSlider Control

Elementor slider control displays a draggable range slider. The slider control can optionally have a number of unit types (size_units) for the user to choose from. The control also accepts a range argument that allows you to set the min, max and step values per unit type.

Slider Control

The control is defined in Control_Slider class which extends Control_Base_Units class.

When using this control, the type should be set to \Elementor\Controls_Manager::SLIDER constant.

Arguments

NameTypeDefaultDescription
typestringsliderThe type of the control.
labelstringThe label that appears above of the field.
descriptionstringThe description that appears below the field.
show_labelbooltrueWhether to display the label.
label_blockbooltrueWhether to display the label in a separate line.
separatorstringdefaultSet the position of the control separator. Available values are default, before and after. default will hide the separator, unless the control type has specific separator settings. before / after will position the separator before/after the control.
size_unitsarray[ 'px' ]An array of available CSS units like px, em, rem, %, deg, vh or custom.
rangearray An array of ranges for each register size.
  • $min (int) The minimum value of range.
  • $max (int) The maximum value of range.
  • $step (int) The intervals value that will be incremented or decremented when using the controls’ spinners.
defaultarray Default slider value.
  • $unit (string) Initial unit of the slider.
  • $size (int) Initial size of the slider.

Return Value

[
	'unit' => '',
	'size' => '',
]

(array) An array containing the dimension values:

  • $unit (string) Selected unit.
  • $size (int) Selected size.

Usage

php
<?php
class Elementor_Test_Widget extends \Elementor\Widget_Base {

	protected function register_controls(): void {

		$this->start_controls_section(
			'content_section',
			[
				'label' => esc_html__( 'Content', 'textdomain' ),
				'tab' => \Elementor\Controls_Manager::TAB_CONTENT,
			]
		);

		$this->add_control(
			'width',
			[
				'label' => esc_html__( 'Width', 'textdomain' ),
				'type' => \Elementor\Controls_Manager::SLIDER,
				'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ],
				'range' => [
					'px' => [
						'min' => 0,
						'max' => 1000,
						'step' => 5,
					],
					'%' => [
						'min' => 0,
						'max' => 100,
					],
				],
				'default' => [
					'unit' => '%',
					'size' => 50,
				],
				'selectors' => [
					'{{WRAPPER}} .your-class' => 'width: {{SIZE}}{{UNIT}};',
				],
			]
		);

		$this->end_controls_section();

	}

	protected function render(): void {
		$settings = $this->get_settings_for_display();
		?>
		<div class="your-class">
			...
		</div>
		<?php
	}

	protected function content_template(): void {
		?>
		<div class="your-class">
			...
		</div>
		<?php
	}

}