Tailwind plugin for styling scrollbars with cross-browser support
—
Core plugin setup and configuration options for controlling scrollbar styling behavior and browser compatibility strategies.
The main export that creates a Tailwind CSS plugin with configurable options.
/**
* Creates a Tailwind CSS plugin for scrollbar styling utilities
* @param options - Configuration options for the plugin
* @returns Tailwind CSS plugin instance
*/
function plugin(options?: PluginOptions): TailwindPlugin;
const plugin = require('tailwind-scrollbar');Usage Examples:
// Basic plugin registration with Tailwind v3
module.exports = {
plugins: [
require('tailwind-scrollbar')
]
};
// With standard strategy (default - uses modern scrollbar properties)
module.exports = {
plugins: [
require('tailwind-scrollbar')({
preferredStrategy: 'standard'
})
]
};
// With pseudoelements strategy (prioritizes WebKit approach)
module.exports = {
plugins: [
require('tailwind-scrollbar')({
preferredStrategy: 'pseudoelements'
})
]
};
// Enable additional utilities (may cause compatibility issues)
module.exports = {
plugins: [
require('tailwind-scrollbar')({
nocompatible: true
})
]
};For Tailwind v4:
@import 'tailwindcss';
@plugin 'tailwind-scrollbar';Plugin configuration object with optional properties.
/**
* Plugin configuration options
*/
interface PluginOptions {
/** Browser compatibility strategy */
preferredStrategy?: 'standard' | 'pseudoelements';
/** Alternative lowercase spelling for compatibility */
preferredstrategy?: 'standard' | 'pseudoelements';
/** Enable size and rounded utilities */
nocompatible?: boolean;
}Controls how the plugin handles browser compatibility differences:
'standard' (default): Uses modern scrollbar-width and scrollbar-color properties alongside WebKit pseudoelements'pseudoelements': Wraps standard properties in Firefox-only support queries, prioritizing WebKit pseudoelement approachStandard Strategy CSS Output:
.scrollbar {
scrollbar-width: auto;
scrollbar-color: var(--scrollbar-thumb, initial) var(--scrollbar-track, initial);
/* WebKit rules also included */
}Pseudoelements Strategy CSS Output:
.scrollbar {
@supports (-moz-appearance:none) {
scrollbar-width: auto;
scrollbar-color: var(--scrollbar-thumb, initial) var(--scrollbar-track, initial);
}
/* WebKit rules also included */
}When set to true, enables additional utilities that may cause compatibility issues:
scrollbar-w-{size} and scrollbar-h-{size} utilitiesscrollbar-{component}-rounded-{value} utilities for border radiusUsage Example:
require('tailwind-scrollbar')({ nocompatible: true })Enabled Utilities:
<div class="scrollbar scrollbar-w-4 scrollbar-h-4">Content</div>
<div class="scrollbar scrollbar-thumb-rounded-lg">Content</div>The plugin handles the fragmented scrollbar styling landscape by supporting both modern standards and legacy WebKit approaches:
scrollbar-width property for sizingscrollbar-color property for colors::-webkit-scrollbar family of pseudoelementsStandard Strategy is recommended for:
Pseudoelements Strategy is recommended for:
The plugin performs these steps during Tailwind CSS compilation:
preferredStrategy value and warns if invalid.scrollbar, .scrollbar-thin, .scrollbar-none utilitiesnocompatible is true, adds size and rounded utilitiesThe plugin includes built-in validation and warning systems:
// Invalid strategy warning
if (preferredStrategy !== 'standard' && preferredStrategy !== 'pseudoelements') {
console.warn('WARNING: tailwind-scrollbar preferredStrategy should be \'standard\' or \'pseudoelements\'');
preferredStrategy = 'standard'; // Falls back to standard
}This ensures the plugin continues to function even with invalid configuration.
Install with Tessl CLI
npx tessl i tessl/npm-tailwind-scrollbar