Getting Started
Izubizu Slider is a cinematic WebGL media slider for images and MP4 videos. It runs in the browser using JavaScript, Three.js, GLSL shaders, post processing, and HTML captions.
The standalone package is configured directly in an HTML page and supports 19 transition types plus 16 text transition types without requiring PHP or a framework.
Please note that the slider must run from an HTTP or HTTPS server. Opening the files directly from disk is not supported.
For best visual quality and performance, use optimized media. Large textures, long videos, and aggressive shader settings can increase GPU cost, especially on mobile devices.
Installation
The quickest reference is the root index.html file or any preset page in the demo folder, since those show real Izubizu Slider transition and caption setups.
Include the slider stylesheet, load FWDIS.js, then initialize the slider after the document is ready, just like the preset demo pages.
<script>
if(document.readyState == 'complete'){
setupIS();
}else{
document.addEventListener('DOMContentLoaded', () => {
setupIS();
});
}
function setupIS(){
new FWDIS({
// Main settings.
instance: 'fwdis0',
parentId: 'myDiv',
displayType: 'afterparent',
sliderDataId: 'sliderData',
initializeWhenVisible: false,
paralax: true,
maxWidth: 1920,
maxHeight: 900,
autoScaleStartWidth: 1200,
autoScale: true,
infinite: true,
gui: false,
showPreloader: true,
preloaderColor: '#ffffff',
backgroundColor: '#000000',
dragFriction: 0.84,
dragSpeed: 1,
showMaskGradient: false,
useCaption: true,
// Buttons
showNextAndPrevButtons: true,
nextAndPrevButtonsHideDelay: 2,
nextAndPrevButtonsOffset: 20,
nextAndPrevHideAndShowOffset: 10,
nextAndPrevButtonsSize: 50,
nextAndPrevButtonsBackgroundColor: 'rgba(0,0,0,.4)',
nextAndPrevButtonsBackgroundColorHover: 'rgba(0,0,0,.8)',
nextAndPrevButtonsIconColor: '#888888',
nextAndPrevButtonsIconColorHover: '#FFFFFF',
// Slideshow
showSlideShow: true,
sideShowIconPostion: 'bottomright',
slideshowDalay: 6,
slideshowAutoPlay: true,
slideshowBkColor: 'rgba(136,136,136,1)',
slideshowFillColor: '#FFFFFF',
slideshowRadius: 12,
slideshowStrokeSize: 3,
slideshowOffsetX: 20,
slideshowOffsetY: 20,
// Hand helper
showHandCursorHelper: true,
infoHelpHTML: 'Holdanddrag',
handCursorHelperSpriteColor: '#ffffff',
handCursorHelperTextColor: '#ffffff',
infoHelpRadius: 50,
handShowDelay: 1.5,
hideAfterCount: 2,
// Post processing.
antialias: true,
waveFrequency: 0.1,
waveAmplitude: 0.02,
rgbShiftStrength: 0,
useNoise: false,
noiseSize: 0.55,
noiseFadeSize: 0.2,
noiseBlurStrength: 0.1,
noiseFadeColor: '#000000',
flowmapRGBShift: true,
flowmapRGBShiftAmount: 0.05,
flowmapRGBShiftStrength: 1,
flowmapStrength: 1.2,
flowmapRadius: 0.1,
flowmapSensitivity: 3,
flowmapForce: 14.0,
flowmapFalloff: 1.8,
});
}
</script>
Add a holder element anywhere in the page body and point parentId to that element.
<div id="myDiv" style="width:100vw; height:100vh;"></div>
If you need multiple sliders on the same page, use unique values for instance, parentId, and sliderDataId for each one.
Setup slider
The slider data is regular HTML markup placed in a hidden container. The sliderDataId setting must point to that container, and each item can define its own transition type and caption text transition type.
<div id="sliderData" style="display: none;">
<div>
<div data-src="media/images/1.jpg" data-width="1920" data-height="1280" data-helper-sprite-color="#ffffff" data-helper-text-color="#ffffff" data-noise-pass-color="#000000" data-transition-type="sinusoidal"></div>
<div data-caption="">
<p class="caption-title" data-text-transition-type="blur" data-color="#ffffff"><span>Momentum</span><span>Cycling</span></p>
<p class="caption-desc" data-color="#cccccc" data-underline-color="#ffffff"><a href="https://fwdapps.net/" target="_blank">View Case</a></p>
</div>
</div>
<div>
<div data-src="media/videos/1.mp4" data-width="1920" data-height="1080" data-helper-sprite-color="#ffffff" data-helper-text-color="#ffffff" data-noise-pass-color="#000000" data-transition-type="linear"></div>
<div data-caption="">
<p class="caption-title" data-text-transition-type="flicker-effect" data-color="#ffffff"><span>Izubizu</span><span>Slider</span></p>
<p class="caption-desc" data-color="#ffffff" data-underline-color="#ffffff"><a href="https://fwdapps.net/" target="_blank">View Case</a></p>
</div>
</div>
<!-- Add as many items as needed. -->
</div>
Each slider item uses an outer wrapper and a nested media element that includes at least the source path, width, height, and optionally a per-item transition type.
Slider item parameters
- data-src - required media path. Supported formats include images and MP4 video.
- data-width - required natural media width in pixels.
- data-height - required natural media height in pixels.
- data-transition-type - optional per-item transition mode. Available types: linear, sinusoidal, opacity, pixelation, whater, radial, velvet-drift, night-pulse, noise, pickaboo, silver-current, emerald-static, pageFlip, crystal-veil, lunar-bloom, ripple, urban-spark, solar-grain, neon-horizon.
- data-helper-sprite-color - optional per-item helper sprite color override.
- data-helper-text-color - optional per-item helper text color override.
- data-noise-pass-color - optional per-item noise fade color override.
Slider item caption
Captions are optional. They are regular HTML and can contain your own classes, links, styling, and per-caption text transition types.
<div>
<div data-src="media/images/1.jpg" data-width="1920" data-height="1280" data-transition-type="sinusoidal"></div>
<div data-caption="">
<p class="caption-title" data-text-transition-type="blur" data-color="#ffffff"><span>Momentum</span><span>Cycling</span></p>
<p class="caption-desc" data-color="#cccccc" data-underline-color="#ffffff"><a href="https://fwdapps.net/" target="_blank">View Case</a></p>
</div>
</div>
Available caption text transition types include flicker-effect, blur, opacity, slide, words-slide, scramble-then-lock, blur-opacity-random-letters, split-line-opposite, words-clip-reveal, linear, neon-flicker-on, thunder-drop, neon-flicker-on-letters, pulse-tunnel, chaos-orbit, and meteor-strike.
Modify code
The source package is built with Vite. Use the source files if you want to customize shaders, transitions, caption behavior, or rebuild the distributable JavaScript.
Settings
All settings are passed directly to the FWDIS constructor. The JavaScript version uses real booleans and numbers, so use values like true, false, and numeric literals instead of string-based toggles.
The example below mirrors the initialization pattern used in preset-1.html, including the document-ready wrapper and the exact slider settings block.
Example
if(document.readyState == 'complete'){
setupIS();
}else{
document.addEventListener('DOMContentLoaded', () => {
setupIS();
});
}
function setupIS(){
new FWDIS({
instance: 'fwdis0',
parentId: 'myDiv',
displayType: 'afterparent',
sliderDataId: 'sliderData',
initializeWhenVisible: false,
paralax: true,
maxWidth: 1920,
maxHeight: 900,
autoScaleStartWidth: 1200,
autoScale: true,
infinite: true,
gui: false,
showPreloader: true,
preloaderColor: '#ffffff',
backgroundColor: '#000000',
dragFriction: 0.84,
dragSpeed: 1,
showMaskGradient: false,
useCaption: true,
showNextAndPrevButtons: true,
nextAndPrevButtonsHideDelay: 2,
nextAndPrevButtonsOffset: 20,
nextAndPrevHideAndShowOffset: 10,
nextAndPrevButtonsSize: 50,
nextAndPrevButtonsBackgroundColor: 'rgba(0,0,0,.4)',
nextAndPrevButtonsBackgroundColorHover: 'rgba(0,0,0,.8)',
nextAndPrevButtonsIconColor: '#888888',
nextAndPrevButtonsIconColorHover: '#FFFFFF',
showSlideShow: true,
sideShowIconPostion: 'bottomright',
slideshowDalay: 6,
slideshowAutoPlay: true,
slideshowBkColor: 'rgba(136,136,136,1)',
slideshowFillColor: '#FFFFFF',
slideshowRadius: 12,
slideshowStrokeSize: 3,
slideshowOffsetX: 20,
slideshowOffsetY: 20,
showHandCursorHelper: true,
infoHelpHTML: 'Holdanddrag',
handCursorHelperSpriteColor: '#ffffff',
handCursorHelperTextColor: '#ffffff',
infoHelpRadius: 50,
handShowDelay: 1.5,
hideAfterCount: 2,
antialias: true,
waveFrequency: 0.1,
waveAmplitude: 0.02,
rgbShiftStrength: 0,
useNoise: false,
noiseSize: 0.55,
noiseFadeSize: 0.2,
noiseBlurStrength: 0.1,
noiseFadeColor: '#000000',
flowmapRGBShift: true,
flowmapRGBShiftAmount: 0.05,
flowmapRGBShiftStrength: 1,
flowmapStrength: 1.2,
flowmapRadius: 0.1,
flowmapSensitivity: 3,
flowmapForce: 14.0,
flowmapFalloff: 1.8,
});
}
instance
Type: (String) - default: required
The global instance name used for API access, for example fwdis0.
parentId
Type: (String) - default: required
The holder element ID where the slider will be rendered.
displayType
Type: (String) - default: responsive
Accepted values are responsive and afterparent. Use afterparent when the slider should follow the size of its parent container.
sliderDataId
Type: (String) - default: required
The ID of the hidden markup container that stores the slider items.
initializeWhenVisible
Type: (Boolean) - default: false
Delays data setup until the slider enters the viewport.
paralax
Type: (Boolean) - default: false
Enables the vertical parallax effect while the slider is visible.
maxWidth
Type: (Number) - default: 1000
The maximum slider width in pixels.
maxHeight
Type: (Number) - default: 700
The maximum slider height in pixels.
autoScaleStartWidth
Type: (Number) - default: 1400
The breakpoint width where responsive height scaling reaches the full maxHeight value.
autoScale
Type: (Boolean) - default: true
When enabled in responsive mode, the slider height scales down smoothly as the available width becomes smaller.
infinite
Type: (Boolean) - default: false
Loops the slider continuously instead of stopping at the first and last item.
gui
Type: (Boolean) - default: true
Shows the live dat.GUI settings panel used for testing and tuning.
showPreloader
Type: (Boolean) - default: true
Shows the preloader while media and textures are loading.
preloaderColor
Type: (String) - default: #FFFFFF
The preloader accent color.
backgroundColor
Type: (String) - default: #1a1a1a
The slider background color. Transparent values are also supported.
dragFriction
Type: (Number) - default: 0.88
Controls how quickly drag momentum decays after the pointer is released. Lower values settle faster.
dragSpeed
Type: (Number) - default: 1
Controls how far the slider moves in response to drag input and release momentum.
showMaskGradient
Type: (Boolean) - default: true
Shows the top and bottom gradient mask overlays.
useCaption
Type: (Boolean) - default: true
Enables HTML captions read from the slider item markup.
showNextAndPrevButtons
Type: (Boolean) - default: false
Shows the previous and next navigation buttons on top of the slider.
nextAndPrevButtonsHideDelay
Type: (Number) - default: 2
The idle delay, in seconds, before the navigation buttons fade out.
nextAndPrevButtonsOffset
Type: (Number) - default: 20
The distance in pixels between the navigation buttons and the left and right edges of the slider.
nextAndPrevHideAndShowOffset
Type: (Number) - default: 10
The horizontal travel offset used when the navigation buttons animate in and out.
nextAndPrevButtonsSize
Type: (Number) - default: 50
The square button size, in pixels, used for both navigation buttons.
nextAndPrevButtonsBackgroundColor
Type: (String) - default: rgba(0,0,0,.4)
The base background color of the previous and next buttons.
nextAndPrevButtonsBackgroundColorHover
Type: (String) - default: rgba(0,0,0,.8)
The hover background color of the previous and next buttons.
nextAndPrevButtonsIconColor
Type: (String) - default: #888888
The default SVG icon color used inside the navigation buttons.
nextAndPrevButtonsIconColorHover
Type: (String) - default: #FFFFFF
The hover SVG icon color used inside the navigation buttons.
showSlideShow
Type: (Boolean) - default: false
Shows the circular slideshow progress indicator and enables the timed slide advance system.
sideShowIconPostion
Type: (String) - default: bottomright
Controls which corner is used for the slideshow indicator. Accepted values are topleft, topright, bottomleft, and bottomright.
slideshowDalay
Type: (Number) - default: 6
The slideshow duration, in seconds, before advancing to the next item.
slideshowAutoPlay
Type: (Boolean) - default: true
Starts the slideshow timer automatically after the intro and helper timing complete.
slideshowBkColor
Type: (String) - default: rgba(136,136,136,1)
The background stroke color of the circular slideshow indicator.
slideshowFillColor
Type: (String) - default: #FFFFFF
The animated progress stroke color of the circular slideshow indicator.
slideshowRadius
Type: (Number) - default: 12
The radius of the circular slideshow indicator.
slideshowStrokeSize
Type: (Number) - default: 3
The stroke width used for both circles in the slideshow indicator.
slideshowOffsetX
Type: (Number) - default: 20
The horizontal offset, in pixels, applied from the selected slideshow indicator corner.
slideshowOffsetY
Type: (Number) - default: 20
The vertical offset, in pixels, applied from the selected slideshow indicator corner.
showHandCursorHelper
Type: (Boolean) - default: true
Shows the hand helper overlay that teaches the drag interaction.
infoHelpHTML
Type: (String) - default: HOLD AND DRAG
The text displayed in the helper overlay.
handCursorHelperSpriteColor
Type: (String) - default: #ffffff
The helper hand sprite tint color. Individual items can override it in markup.
handCursorHelperTextColor
Type: (String) - default: #ffffff
The helper text color. Individual items can override it in markup.
infoHelpRadius
Type: (Number) - default: 72
The helper text orbit radius around the hand sprite.
handShowDelay
Type: (Number) - default: 1
The delay, in seconds, before the helper is shown.
hideAfterCount
Type: (Number) - default: 4
Hides the helper permanently after the user completes this many drag gestures.
antialias
Type: (Boolean) - default: true
Enables FXAA-based smoothing for the final post-processing output.
waveFrequency
Type: (Number) - default: 0.1
The frequency of the wave distortion.
waveAmplitude
Type: (Number) - default: 0.5
The strength of the wave distortion.
rgbShiftStrength
Type: (Number) - default: 0
The base RGB shift amount applied during post processing.
useNoise
Type: (Boolean) - default: true
Enables the noise pass.
noiseSize
Type: (Number) - default: 0
The size of the noise breakup pattern.
noiseFadeSize
Type: (Number) - default: 0
The width of the fade area used by the noise pass.
noiseBlurStrength
Type: (Number) - default: 0.2
The blur intensity inside the noise pass.
noiseFadeColor
Type: (String) - default: #000000
The fade color used by the noise pass. Individual items can override it with data-noise-pass-color.
flowmapRGBShift
Type: (Boolean) - default: false
Enables extra RGB separation driven by the flowmap interaction.
flowmapRGBShiftAmount
Type: (Number) - default: 0.008
The size of the flowmap RGB separation offset.
flowmapRGBShiftStrength
Type: (Number) - default: 1
The multiplier applied to the flowmap RGB shift effect.
flowmapStrength
Type: (Number) - default: 1
The main strength of the flowmap distortion.
flowmapRadius
Type: (Number) - default: 0.12
The radius of each flowmap stamp.
flowmapSensitivity
Type: (Number) - default: 1
Controls how responsive the flowmap is to pointer movement.
flowmapForce
Type: (Number) - default: 2.5
The force applied to the flowmap stamps.
flowmapFalloff
Type: (Number) - default: 1.8
The falloff curve of each flowmap stamp.
Methods
Methods are called on the slider instance, for example fwdis0.destroy().
destroy
.destroy()
Destroys the slider instance and removes its listeners and rendering resources.
Events
Events are registered through addEventListener on the instance after the API becomes available.
let fwdisAPI = setInterval(() => {
if (window['fwdis0']) {
clearInterval(fwdisAPI);
fwdis0.addEventListener(FWDIS.ITEM_UPDATE, onItemUpdate);
fwdis0.addEventListener(FWDIS.ERROR, onError);
}
}, 100);
function onItemUpdate(event) {
console.log(event);
}
function onError(event) {
console.log(event);
}
FWDIS.ITEM_UPDATE
FWDIS.ITEM_UPDATE
Dispatched while the active slider item state is changing.
FWDIS.ERROR
FWDIS.ERROR
Dispatched when the slider encounters a runtime or data error.
FWDIS.MINIMIZE
FWDIS.MINIMIZE
Dispatched when the current item leaves the maximized state.
FWDIS.MAXIMIZE
FWDIS.MAXIMIZE
Dispatched when an item becomes the active maximized item.
Notes
Izubizu Slider is designed as a cinematic WebGL presentation component. It combines shader-based transitions, media textures, post processing, and HTML overlays, so final results depend heavily on media quality and the tuning of the settings above.
For support and customizations please write to me directly at this email.