This loads an image and creates a crop area that user can modify. An event is fired with x, y, width, and height as the crop area changes.
npm i --S @nichoth/image-crop-element
This is a fork of @github/image-crop-element.
You can pass in an aspect ratio attribute:
<image-crop
aspectratio="4 / 5"
src="100.jpg"
></image-crop>
This will constrain the image crop border to the given ratio.
<image-crop src="/avatar.jpg"></image-crop>
<image-crop src="/avatar.jpg" rounded></image-crop>
<image-crop src="/avatar.jpg">
<img src="spinner.gif" alt="" data-loading-slot />
</image-crop>
<image-crop src="/avatar.jpg">
<input type="hidden" data-image-crop-input="x" name="x">
<input type="hidden" data-image-crop-input="y" name="y">
<input type="hidden" data-image-crop-input="width" name="width">
<input type="hidden" data-image-crop-input="height" name="height">
</image-crop>
document.addEventListener('image-crop-change', function (event){
console.log(
'Crop area changed.',
event.detail.x,
event.detail.y,
event.detail.width,
event.detail.height
)
})
The elements HTML structure is initialized in a Shadow DOM, so it is impossible to apply CSS to it. If you need to change the element's default style for any reason, you should open up a new issue (or a pull request!), describing your use case, and we'll work with you on solving the problem.
Browsers without native custom element support require a polyfill. Legacy browsers require various other polyfills. See examples/index.html
for details.
- Chrome
- Firefox
- Safari
- Microsoft Edge