<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>Cropper.js</title> <link rel="stylesheet" href="../dist/cropper.css"> <style> .container { max-width: 640px; margin: 20px auto; } img { max-width: 100%; } </style> </head> <body> <div class="container"> <h1>Cropper with a range of aspect ratio</h1> <div> <img id="image" src="../docs/images/picture.jpg" alt="Picture"> </div> </div> <script src="../dist/cropper.js"></script> <script> window.addEventListener('DOMContentLoaded', function () { var image = document.querySelector('#image'); var minAspectRatio = 0.5; var maxAspectRatio = 1.5; var cropper = new Cropper(image, { ready: function () { var cropper = this.cropper; var containerData = cropper.getContainerData(); var cropBoxData = cropper.getCropBoxData(); var aspectRatio = cropBoxData.width / cropBoxData.height; var newCropBoxWidth; if (aspectRatio < minAspectRatio || aspectRatio > maxAspectRatio) { newCropBoxWidth = cropBoxData.height * ((minAspectRatio + maxAspectRatio) / 2); cropper.setCropBoxData({ left: (containerData.width - newCropBoxWidth) / 2, width: newCropBoxWidth }); } }, cropmove: function () { var cropper = this.cropper; var cropBoxData = cropper.getCropBoxData(); var aspectRatio = cropBoxData.width / cropBoxData.height; if (aspectRatio < minAspectRatio) { cropper.setCropBoxData({ width: cropBoxData.height * minAspectRatio }); } else if (aspectRatio > maxAspectRatio) { cropper.setCropBoxData({ width: cropBoxData.height * maxAspectRatio }); } } }); }); </script> </body> </html>