react-image-designer
v1.2.1
Published
Design dynamic, progressively loaded images with React.
Downloads
112
Maintainers
Readme
React Image Designer
Features
- Can be background-image, or src. Just specify they base element tag in props.
- Loads only if visible in window.
- Support for srcset and sizes.
- Placeholder present until src image is loaded (blank by default)
- Can set custom timeout to delay src image load
background
this project is influenced heavily by react-progressive-image. However, it appears they are no longer making updates to it (at least not new features), and I needed something similar that had options to generate background-images, use dynamic base element types, and handle children
. I also prefer a simplified syntax.
Install
yarn
$ yarn add react-image-designer
npm
$ npm install react-image-designer
The UMD build is also available on unpkg:
<script src="https://unpkg.com/react-image-designer/umd/react-image-designer.min.js"></script>
If you use the UMD build you can find the library on window.__RID
.
Props
| Name | Type | Required | Description | Default |
| -- | -- | -- | -- | -- |
| src | string
| true
| source of main image | required - no default |
| placeholder | string
| false
| source of placeholder images | "" |
| style | obj
| false
| inline styles for component | {} |
| className | string
| false
| class for the base element | "" |
| id | string
| false
| id for the base element | "" |
| contain | boolean
| false
| if background-size is 'contain' (else 'cover') | false |
| repeat | boolean
| false
| if image repeats (background images only) | false |
| position | string
| false
| background-position style string | browser default |
| children | React Children | false
| any string, html, or react element to embed | "" |
| alt | string
| false
| string for alt attribute if img tag | src |
| tag | string
| false
| html element type for img (e.g. - img
, div
, figure
etc.) | "img" |
| srcset | string
| false
| srcset | "" |
| sizes | string
| false
| sizes for srcset | "" |
| noImage | boolean
| false
| if true, no image is used (for text only) | false |
| timeout | number
| false
| delay in milliseconds before src is loaded | 0 |
| lazy | boolean
| false
| if img should be lazy-loaded | true |
Simple
<ImageDesigner
src={img.src}
placeholder={img.placeholder}
style={{
height: "auto",
margin: "auto"
}}
/>
With Caption (as background-image)
<ImageDesigner
src={img.src}
srcset={img.srcset}
sizes={img.sizes}
placeholder={img.placeholder}
id={["img", i].join("-")}
className={imgClass}
tag="div"
>
<div
className={captionClass}
dangerouslySetInnerHTML={{
__html: tryDecode(img.caption)
}}
/>
</ImageDesigner>
Try Things Live
to test the options, git clone this repo, put some images in the 'imgs' directory, and set-up your configuration somewhere in the 'src' directory. Then run yarn start ./relative/path/from/src/to/configuration
or npm run start ./relative/path/from/src/to/configuration
. There is an example provided. To run it locally, execute yarn start ./dev-scripts/example
or npm run start ./dev-scripts/example
.
Contributing
clone, install, tinker, submit. Thanks!