# jScrollPane - settings object documentation

This page details the various options that you can pass into the settings object when you initialise jScrollPane. Note that there is also a number of changes you can make through the API after the scrollpane is already initialised and a number of events you can listen to.

## showArrows - boolean (default false)

Whether arrows should be shown on the generated scroll pane. When set to false only the scrollbar track and drag will be shown, if set to true then arrows buttons will also be shown. Demo.

## maintainPosition - boolean (default true)

Whether the scrollpane should attempt to maintain it's position whenever it is reinitialised. If true then the viewport of the scrollpane will remain the same when it is reinitialised, if false then the viewport will jump back up to the top when the scrollpane is reinitialised. See also stickToBottom and stickToRight.

## stickToBottom- boolean (default false)

If maintainPosition is true and the scrollpane is scrolled to the bottom then the scrollpane then the scrollpane will remain scrolled to the bottom even if new content is added to the pane which makes it taller.

## stickToRight- boolean (default false)

If maintainPosition is true and the scrollpane is scrolled to its right edge then the scrollpane then the scrollpane will remain scrolled to the right edge even if new content is added to the pane which makes it wider.

## resizeSensor - boolean (default false)

Whether jScrollPane should automatically reinitialise itself whenever the content inside changes in size. This can help with instances when the size of the content of the scrollpane (or the surrounding element) changes. This is more performant than using autoReinitialise, however autoReinitialise should be used if elements inside the scrollpane are absolutely positioned. Demo.

## resizeSensorDelay - int (default 0)

The number of milliseconds to wait before reinitialising after resizeSensor detects a change (if resizeSensor is true).

## autoReinitialise - boolean (default false)

Whether jScrollPane should automatically reinitialise itself periodically after you have initially initialised it. This can help with instances when the size of the content of the scrollpane (or the surrounding element) changes. However, it does involve an overhead of running a javascript function on a timer so it is recommended to use the resizeSensor where possible. Demo.

## autoReinitialiseDelay - int (default 500)

The number of milliseconds between each reinitialisation (if autoReinitialise is true).

## verticalDragMinHeight - int (default 0)

The smallest height that the vertical drag can have. The size of the drag elements is based on the proportion of the size of the content to the size of the viewport but is contrained within the minimum and maximum dimensions given. Demo.

## verticalDragMaxHeight - int (default 99999)

See verticalDragMinHeight.

## horizontalDragMinWidth - int (default 0)

See verticalDragMinHeight.

## horizontalDragMaxWidth - int (default 99999)

See verticalDragMinHeight.

## contentWidth - int (default undefined)

The width of the content of the scroll pane. The default value of undefined will allow jScrollPane to calculate the width of it's content. However, in some cases you will want to disable this (e.g. to prevent horizontal scrolling or where the calculation of the size of the content doesn't return reliable results)

## animateScroll - boolean (default false)

Whether to use animation when calling scrollTo or scrollBy. You can control the animation speed and easing by using the animateDuration and animateEase settings or if you want to exercise more complete control then you can override the animate API method. Demo.

## animateDuration - int (default 300)

The number of milliseconds taken to animate to a new position (see animateScroll ).

## animateEase - string (default 'linear')

The type of easing to use when animating to a new position (see animateScroll and easing).

## hijackInternalLinks - boolean (default false)

Whether internal links on the page should be hijacked so that if they point so content within a jScrollPane then they automatically scroll the jScrollPane to the correct place. Demo.

## verticalGutter - int (default 4)

The amount of space between the side of the content and the vertical scrollbar.

## horizontalGutter - int (default 4)

The amount of space between the bottom of the content and the horizontal scrollbar.

## alwaysShowHScroll - boolean (default false)

If this is set to 'true' then Horizontal Scrollbar will be always be shown. This is not default behaviour. Default is that scrollbar is showed automatically.

## alwaysShowVScroll - boolean (default false)

If this is set to 'true' then Vertical Scrollbar will be always be shown. This is not default behaviour. Default is that scrollbar is showed automatically.

## mouseWheelSpeed - int (default 10)

A multiplier which is used to control the amount that the scrollpane scrolls each time the mouse wheel is turned. If a recent version of the mousewheel plugin is used then the `deltaFactor` from that is used to get a [more reliable](https://github.com/brandonaaron/jquery-mousewheel#getting-the-scroll-distance) indication of how far the user wanted to scroll.

## arrowButtonSpeed - int (default 10)

A multiplier which is used to control the amount that the scrollpane scrolls each time on of the arrow buttons is pressed.

## arrowRepeatFreq - int (default 100)

The number of milliseconds between each repeated scroll event when the mouse is held down over one of the arrow keys.

## arrowScrollOnHover - boolean (default false)

Whether the arrow buttons should cause the jScrollPane to scroll while you are hovering over them. Demo.

## verticalArrowPositions - string [split|before|after|os] (default split)

Where the vertical arrows should appear relative to the vertical track. Demo.

## horizontalArrowPositions - string [split|before|after|os] (default split)

Where the horizontal arrows should appear relative to the horizontal track. Demo.

## enableKeyboardNavigation - boolean (default true)

Whether keyboard navigation should be enabled (e.g. whether the user can focus the scrollpane and then use the arrow (and other) keys to navigate around.

## hideFocus - boolean (default false)

Whether the focus outline should be hidden in all browsers. For best accessibility you should not change this option. You can style the outline with the CSS property outline and outline-offset.

## clickOnTrack - boolean (default true)

Whether clicking on the track (e.g. the area behind the drag) should scroll towards the point clicked on. Defaults to true as this is the native behaviour in these situations.

## trackClickSpeed - int (default 30)

A multiplier which is used to control the amount that the scrollpane scrolls each trackClickRepeatFreq while the mouse button is held down over the track.

## trackClickRepeatFreq - int (default 100)

The number of milliseconds between each repeated scroll event when the mouse is held down over the track.