chameleon-backgrounds 2.1.3 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -11
- package/dist/chameleon-backgrounds.js +299 -114
- package/dist/chameleon-backgrounds.js.map +1 -1
- package/dist/chameleon-backgrounds.min.js +1 -1
- package/dist/chameleon-backgrounds.min.js.LICENSE.txt +1 -1
- package/package.json +1 -1
- package/src/chameleon-backgrounds.js +299 -114
package/README.md
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
A **zero-dependency** JavaScript library to dynamically load background images with elegant fade-in transitions and slideshow support.
|
|
4
4
|
|
|
5
|
+
> **v3.0** — Added responsive `srcset`, seamless crossfading, lazy-loading, and play/pause API.
|
|
5
6
|
> **v2.0** — Fully rewritten from scratch. No jQuery required.
|
|
6
7
|
|
|
7
8
|
---
|
|
@@ -13,9 +14,13 @@ Large background images slow down initial page loads. ChameleonBackgrounds **def
|
|
|
13
14
|
## Features
|
|
14
15
|
|
|
15
16
|
- 🎯 **Zero dependencies** — no jQuery, no frameworks
|
|
16
|
-
- 🖼️ **
|
|
17
|
+
- 🖼️ **Responsive images** — native `srcset` and `sizes` support
|
|
17
18
|
- 🎠 **Slider** mode with configurable duration and looping
|
|
19
|
+
- ✨ **Crossfade & Solid** transitions
|
|
20
|
+
- ⚡ **Lazy loading** via IntersectionObserver
|
|
21
|
+
- ♿ **Accessibility** — respects `prefers-reduced-motion`
|
|
18
22
|
- 🎨 **Overlay** support with color, pattern images, and minimum opacity
|
|
23
|
+
- 🎛️ **Play / Pause API** for manual control
|
|
19
24
|
- 🧹 **`destroy()`** method for clean teardown
|
|
20
25
|
- 📦 **ES Module** + **UMD** dual distribution
|
|
21
26
|
- 🔄 **Backward compatible** with v1 snake_case option names
|
|
@@ -112,22 +117,50 @@ const bg = new ChameleonBackgrounds({
|
|
|
112
117
|
bg.destroy();
|
|
113
118
|
```
|
|
114
119
|
|
|
120
|
+
### Responsive Images
|
|
121
|
+
|
|
122
|
+
You can provide an object containing `url`, `srcset`, and `sizes` properties to leverage native browser responsive image support. This works perfectly for both `type: 'single'` and `type: 'slider'`.
|
|
123
|
+
|
|
124
|
+
```js
|
|
125
|
+
// Example using responsive images in a slider
|
|
126
|
+
const bg = new ChameleonBackgrounds({
|
|
127
|
+
element: '#hero',
|
|
128
|
+
type: 'slider',
|
|
129
|
+
src: [
|
|
130
|
+
{
|
|
131
|
+
url: './img/slide1.jpg',
|
|
132
|
+
srcset: './img/slide1-mobile.jpg 480w, ./img/slide1.jpg 1920w',
|
|
133
|
+
sizes: '100vw'
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
url: './img/slide2.jpg',
|
|
137
|
+
srcset: './img/slide2-mobile.jpg 480w, ./img/slide2.jpg 1920w',
|
|
138
|
+
sizes: '100vw'
|
|
139
|
+
}
|
|
140
|
+
],
|
|
141
|
+
transitionDuration: 1500
|
|
142
|
+
});
|
|
143
|
+
```
|
|
144
|
+
|
|
115
145
|
---
|
|
116
146
|
|
|
117
147
|
## Options
|
|
118
148
|
|
|
119
149
|
| Option | Type | Default | Required | Description |
|
|
120
150
|
|---|---|---|---|---|
|
|
121
|
-
|
|
|
122
|
-
|
|
|
123
|
-
|
|
|
124
|
-
|
|
|
125
|
-
|
|
|
126
|
-
|
|
|
127
|
-
|
|
|
128
|
-
|
|
|
129
|
-
|
|
|
130
|
-
|
|
|
151
|
+
| element | `string \| HTMLElement` | `'body'` | yes | CSS selector or DOM element to attach to |
|
|
152
|
+
| type | `'single' \| 'slider'` | `'single'` | yes | Background mode |
|
|
153
|
+
| src | `string \| array \| object` | `''` | yes | Image URL, array of URLs, or config object `{url, srcset, sizes}` |
|
|
154
|
+
| overlayColor | `string` | `'#0f1e25'` | yes | Overlay color (hex, rgb, rgba, hsl) |
|
|
155
|
+
| overlayImage | `string \| null` | `null` | no | Overlay pattern image URL |
|
|
156
|
+
| minOverlay | `number` | `0` | no | Minimum overlay opacity after fade (0–1) |
|
|
157
|
+
| transitionDuration | `number` | `2000` | yes | Fade duration in milliseconds |
|
|
158
|
+
| sliderDuration | `number` | `8000` | slider only | Time each slide is shown (ms) |
|
|
159
|
+
| sliderLoop | `boolean` | `false` | slider only | Restart slider after last slide |
|
|
160
|
+
| fetchPriority | `string` | `'auto'` | no | Network priority for the initial image load. |
|
|
161
|
+
| lazyLoad | `boolean` | `true` | no | Defer loading until element intersects viewport |
|
|
162
|
+
| transitionMode | `'solid' \| 'crossfade'` | `'solid'` | no | Transition effect. `'solid'` fades to overlay color, `'crossfade'` fades between images |
|
|
163
|
+
| respectReducedMotion | `boolean` | `false` | no | Auto-pause slider if user's OS has animations disabled |
|
|
131
164
|
|
|
132
165
|
### Legacy Option Names
|
|
133
166
|
|
|
@@ -141,6 +174,9 @@ For backward compatibility, v1 snake_case option names are still supported:
|
|
|
141
174
|
| `min_overlay` | `minOverlay` |
|
|
142
175
|
| `overlay_color` | `overlayColor` |
|
|
143
176
|
| `overlay_image` | `overlayImage` |
|
|
177
|
+
| `lazy_load` | `lazyLoad` |
|
|
178
|
+
| `transition_mode` | `transitionMode` |
|
|
179
|
+
| `respect_reduced_motion` | `respectReducedMotion` |
|
|
144
180
|
|
|
145
181
|
---
|
|
146
182
|
|
|
@@ -166,6 +202,14 @@ Creates a new instance and immediately begins loading.
|
|
|
166
202
|
|
|
167
203
|
Stops any running slider, removes all injected DOM and styles, and restores the target element to its original state.
|
|
168
204
|
|
|
205
|
+
### `.play()`
|
|
206
|
+
|
|
207
|
+
Resumes a paused slider.
|
|
208
|
+
|
|
209
|
+
### `.pause()`
|
|
210
|
+
|
|
211
|
+
Pauses an active slider.
|
|
212
|
+
|
|
169
213
|
### `.getOptions()` / `.options` (ESM)
|
|
170
214
|
|
|
171
215
|
Returns a read-only copy of the resolved options.
|