A lightweight, customizable jQuery plugin for creating smooth, full-page vertical scrolling experiences with pagination, themes, and animations.
Everything you need for a smooth scrolling experience, right out of the box.
Smooth section-by-section scrolling with configurable threshold
Arrow keys, Page Up/Down, Home & End key support
Mobile-friendly touch gestures with adjustable sensitivity
Animated navigation dots with hover tooltips and click support
Classic, Neon, Git Graph, Sound Wave, Diamond, Arrow, Pill & more
Pulse, Glow, Bounce, Neon Flicker, Electric Zap, Wave & more
Full ARIA labels, focus management, and screen reader support
Auto-disables below configurable breakpoint for mobile
Click buttons to live-switch the theme and pagination animation. Watch the dots on the right update in real-time.
$('#page').verticalScroll({
theme: 'default',
paginationAnimation: 'pulse'
});
Every option at a glance. Pass these when initializing or via setOptions().
| Option | Type | Default | Description |
|---|---|---|---|
| Selectors | |||
| selector | string | 'section' | CSS selector for scrollable sections |
| Navigation | |||
| pagination | boolean | true | Show pagination dots |
| paginationPosition | string | 'right' | Position: 'left' or 'right' |
| paginationOffset | number | 20 | Offset from edge in pixels |
| Scrolling | |||
| animationDuration | number | 800 | Scroll animation duration in ms |
| easing | string | 'swing' | jQuery easing function name |
| scrollThreshold | number | 50 | Minimum scroll delta to trigger navigation |
| touchThreshold | number | 50 | Minimum touch delta to trigger navigation |
| Input Methods | |||
| mouseWheel | boolean | true | Enable mouse wheel navigation |
| keyboard | boolean | true | Enable keyboard navigation (arrows, Page Up/Down, Home/End) |
| touch | boolean | true | Enable touch/swipe navigation |
| Behavior | |||
| loop | boolean | false | Loop back to first/last section |
| autoScroll | boolean | false | Enable automatic scrolling |
| autoScrollInterval | number | 5000 | Auto-scroll interval in milliseconds |
| pauseOnHover | boolean | true | Pause auto-scroll on mouse hover |
| Accessibility | |||
| ariaLabels | boolean | true | Add ARIA labels to sections and navigation |
| focusOnSection | boolean | true | Focus section element after navigation |
| Responsive | |||
| responsive | boolean | true | Enable responsive behavior |
| mobileBreakpoint | number | 768 | Disable plugin below this viewport width |
| Theming | |||
| theme | string | 'default' | Theme: 'default', 'light', 'dark', 'minimal' |
| paginationAnimation | string | 'pulse' | Dot animation: 'none', 'pulse', 'glow', 'bounce', 'ripple', 'scale', 'fade-ring', 'rotate', 'morph', 'heartbeat', 'radar' |
| Callbacks | |||
| onInit | function | null | Called after initialization |
| onDestroy | function | null | Called after destruction |
| onBeforeScroll | function | null | Called before scrolling (return false to cancel) |
| onAfterScroll | function | null | Called after scroll animation completes |
| onSectionChange | function | null | Called when active section changes |
| onResize | function | null | Called on window resize |
Navigate, query, and control every aspect of the plugin programmatically.
Six lifecycle callbacks plus jQuery event equivalents for full integration control.
false to cancel the scroll.Get up and running in four simple steps. Works with npm, CDN, or manual download.
Full documentation, live examples, and community support. Start building beautiful full-page scrolling experiences today.