1.0.3 • Published 10 months ago
minox-img-optimizer v1.0.3
Minox Image Optimizer React
A React component for lazy loading optimized responsive images with placeholder and effects support.
Installation
You can install the package using npm:
npm install minox-img-optimizerFeatures
- Lazy loading images using Intersection Observer API
- Fallback to scroll event listening
- Customizable placeholder
- Built-in placeholder effects (blur, opacity)
- Custom skeleton support
- Offset configuration for pre-loading
- Image optimization based on breakpoints
- Responsive images with custom breakpoints
Usage
Here's a basic usage example of the LazyLoadImage component:
import React from "react";
import LazyLoadImage from "minox-img-optimizer";
function App() {
return (
<LazyLoadImage
src="your-image-url.jpg"
placeholder="placeholder-image-url.jpg"
alt="Description"
placeholderEffect="blur"
offset={100}
optimize={true}
breakpoints={{ small: 480, medium: 768, large: 1024 }}
/>
);
}
export default App;Props
| Prop | Type | Default | Description |
|---|---|---|---|
src | string | required | The source URL of the image |
alt | string | '' | Alt text for the image |
placeholder | string | '' | URL of the placeholder image |
className | string | '' | CSS class name (also tailwind classes supported) |
style | object | {} | Inline styles |
placeholderEffect | 'blur' \| 'opacity' \| 'none' | 'none' | Effect to apply to placeholder |
customSkeleton | element | null | Custom skeleton component |
offset | number | 0 | Offset in pixels for pre-loading |
useIntersectionObserver | boolean | true | Use Intersection Observer API |
scroll | boolean | false | Use scroll event instead |
onLoad | function | () => {} | Called when image loads |
onError | function | () => {} | Called on load error |
optimize | boolean | false | Optimize image loading based on breakpoints |
breakpoints | object | {} | Custom breakpoints for responsive images |
Prop Descriptions
src: The URL of the image to be loaded. This prop is required.alt: The alt text for the image.placeholder: The URL of the placeholder image to display while the main image is loading.className: A CSS class name to apply to the image container. you can write here tailwind classes.style: Inline styles to apply to the image container.placeholderEffect: The effect to apply to the placeholder image. Can be'blur','opacity', or'none'.customSkeleton: A custom skeleton component to display while the main image is loading.offset: The offset in pixels to start loading the image before it enters the viewport.useIntersectionObserver: Whether to use the Intersection Observer API for lazy loading. Defaults totrue.scroll: Whether to use the scroll event for lazy loading. Defaults tofalse.onLoad: A callback function to be called when the main image loads successfully.onError: A callback function to be called if there is an error loading the main image.optimize: Whether to optimize image loading based on breakpoints. Defaults tofalse.breakpoints: Custom breakpoints for responsive images. For example:{ small: 480, medium: 768, large: 1024 }.
Example with All Props
Here's an example demonstrating the use of all props:
import React from "react";
import LazyLoadImage from "minox-img-optimizer";
function App() {
const handleImageLoad = () => {
console.log("Image loaded");
};
const handleImageError = () => {
console.log("Failed to load image");
};
return (
<LazyLoadImage
src="your-image-url.jpg"
alt="Description"
placeholder="placeholder-image-url.jpg"
className="custom-class"
style={{ borderRadius: "8px" }}
placeholderEffect="blur"
customSkeleton={<div className="skeleton-loader">Loading...</div>}
offset={100}
useIntersectionObserver={true}
scroll={false}
onLoad={handleImageLoad}
onError={handleImageError}
optimize={true}
breakpoints={{ small: 480, medium: 768, large: 1024 }}
/>
);
}
export default App;Advanced Features
Image Optimization
By setting the optimize prop to true, the component will load different image versions based on the current breakpoint. This helps in reducing the loading time and improving performance.
<LazyLoadImage
src="your-image-url.jpg"
placeholder="placeholder-image-url.jpg"
alt="Description"
optimize={true}
breakpoints={{ small: 480, medium: 768, large: 1024 }}
/>Responsive Images with Custom Breakpoints
You can provide custom breakpoints using the breakpoints prop. The component will automatically adjust the image source based on these breakpoints.
<LazyLoadImage
src="your-image-url.jpg"
placeholder="placeholder-image-url.jpg"
alt="Description"
breakpoints={{ small: 480, medium: 768, large: 1024, xlarge: 1200 }}
/>License
MIT © MHMIYAD. All rights reserved.