Perfect Scrollbar

Aus Wikizone
Wechseln zu: Navigation, Suche

jQuery Plugin für elegante Scrollbalken für alles. Auch mit Touch Support

Links[Bearbeiten]

https://github.com/noraesae/perfect-scrollbar CSS und JS einbinden dann initialisieren:

Quickstart[Bearbeiten]

processwire[Bearbeiten]

JS

<script src="<?php echo $config->urls->templates?>vendors/perfect-scrollbar/js/perfect-scrollbar.jquery.min.js"></script>

CSS

<link href="<?php echo $config->urls->templates?>vendors/perfect-scrollbar/css/perfect-scrollbar.min.css" rel="stylesheet" media="screen">
$(function() {
  $('.scrollbox').perfectScrollbar({
    suppressScrollX: true
  });
});

Doku[Bearbeiten]

Benötigt

  • container Element mit 'position' css style.
  • normales container element.
    • PS may not work well in body, textarea, iframe or flexbox.

Basis CSS enthält:

  • container must have an 'overflow: hidden' css style.
  • the scrollbar's position must be 'absolute'.
  • the scrollbar-x must have a 'bottom' css style, and the scrollbar-y must have a 'right' css style.

Options[Bearbeiten]

Optional parameters

perfect-scrollbar supports optional parameters. handlers

It is a list of handlers to use to scroll the element. Default: ['click-rail', 'drag-scrollbar', 'keyboard', 'wheel', 'touch'] Disabled by default: 'selection' wheelSpeed

The scroll speed applied to mousewheel event. Default: 1 wheelPropagation

If this option is true, when the scroll reaches the end of the side, mousewheel event will be propagated to parent element. Default: false swipePropagation

If this option is true, when the scroll reaches the end of the side, touch scrolling will be propagated to parent element. Default: true swipeEasing

If this option is true, swipe scrolling will be eased. Default: true minScrollbarLength

When set to an integer value, the thumb part of the scrollbar will not shrink below that number of pixels. Default: null maxScrollbarLength

When set to an integer value, the thumb part of the scrollbar will not expand over that number of pixels. Default: null useBothWheelAxes

When set to true, and only one (vertical or horizontal) scrollbar is visible then both vertical and horizontal scrolling will affect the scrollbar. Default: false suppressScrollX

When set to true, the scroll bar in X axis will not be available, regardless of the content width. Default: false suppressScrollY

When set to true, the scroll bar in Y axis will not be available, regardless of the content height. Default: false scrollXMarginOffset

The number of pixels the content width can surpass the container width without enabling the X axis scroll bar. Allows some "wiggle room" or "offset break", so that X axis scroll bar is not enabled just because of a few pixels. Default: 0 scrollYMarginOffset

The number of pixels the content height can surpass the container height without enabling the Y axis scroll bar. Allows some "wiggle room" or "offset break", so that Y axis scroll bar is not enabled just because of a few pixels. Default: 0 theme

A string. It's a class name added to the container element. The class name is prepended with ps-theme-. So default theme class name is ps-theme-default. In order to create custom themes with scss use ps-container($theme) mixin, where $theme is a scss map. Default: 'default'

Example 1:

Add theme parameter:

Ps.initialize(container, {

 theme: 'my-theme-name'

});

Create a class name prefixed with .ps-theme-. Include ps-container() mixin. It's recommended to use map-merge() to extend $ps-theme-default map with your custom styles.

.ps-theme-my-theme-name {

 @include ps-container(map-merge($ps-theme-default, (
   border-radius: 0,
   scrollbar-x-rail-height: 20px,
   scrollbar-x-height: 20px,
   scrollbar-y-rail-width: 20px,
   scrollbar-y-width: 20px
 )));

}

Example 2:

Alternatively, if you don't want to create your own themes, but only modify the default one, you could simply overwrite $ps-* variables with your own values. In this case theme parameter is not required when calling .initialize() method. Remember do define your own variables before the theme.scss file is imported. Events

perfect-scrollbar dispatches custom events. ps-scroll-y

This event fires when the y-axis is scrolled in either direction. ps-scroll-x

This event fires when the x-axis is scrolled in either direction. ps-scroll-up

This event fires when scrolling upwards. ps-scroll-down

This event fires when scrolling downwards. ps-scroll-left

This event fires when scrolling to the left. ps-scroll-right

This event fires when scrolling to the right. ps-y-reach-start

This event fires when scrolling reaches the start of the y-axis. ps-y-reach-end

This event fires when scrolling reaches the end of the y-axis (useful for infinite scroll). ps-x-reach-start

This event fires when scrolling reaches the start of the x-axis. ps-x-reach-end

This event fires when scrolling reaches the end of the x-axis.

You can listen to these events either with vanilla JavaScript

document.addEventListener('ps-scroll-x', function () {

 // ...

})

or with jQuery

$(document).on('ps-scroll-x', function () {

 // ...

})

Tips Scrolling children inside perfect-scrollbar


Beispiele[Bearbeiten]

  • Schlüter und Kollegen bei Gesichter