Сделать фенюаньчэнь кроппер отзывчивым

https://github.com/fengyuanchen/cropper

Я успешно применил кроппер в своем проекте, но его нельзя использовать на мобильном устройстве, потому что изображение всегда больше модального контейнера (кроппер находится внутри модального окна), и я не вижу все изображение на мобильном телефоне, потому что оно переполняется

Я попробовал несколько комбинаций max-widths, widths, на контейнерах, на теге img, но не могу этого сделать, я установил:

minContainerWidth: 568, minContainerHeight: 320

Если я уберу его, он будет работать, но по умолчанию будет 100x200, что слишком мало даже для мобильных устройств и очень мало для ПК

Вот мои настройки:

reader.onloadend = function () {
                        $cropperModal.find('.image-container').html($img);
                        $img.attr('src', reader.result);
                        $img.cropper({
                            preview: '.image-preview',
                            aspectRatio: 16 / 11,
                            autoCropArea: 1,
                            movable: false,
                            cropBoxResizable: true,
                            minContainerWidth: 568,
                            minContainerHeight: 320
                        });
                    };

MODAL:

var modalTemplate = '' +
        '<div class="modal fade" tabindex="-1" role="dialog" style="z-index: 99999;">' +
        '<div class="modal-dialog" role="document">' +
        '<div class="modal-content-recorte widthimage">' +
        '<div class="modal-header">' +
        '<h4 class="popup_title"> @lang('popups.crop_img') </h4>' +
        '<p class="popupcontent"> @lang('popups.crop_img_desc') </p>' +
        '</div>' +
        '<div class="modal-body">' +
        '<div class="image-container""> </div>' +
        '</div>' +
        '<div class="modal-footer" style="text-align:center">' +
        '<button type="button" class="btn btn-primary crop-upload">Upload</button>' +
        '</div>' +
        '</div>' +
        '</div>' +
        '</div>' +
        '';

Я хочу установить максимальный размер, и чтобы материал кадрирования адаптировался к экрану, когда он меньше установленной максимальной ширины / высоты.

Спасибо

1 ответ

Из GitHub:

Размер обрезки наследуется от размера родительского элемента изображения (оболочки), поэтому не забудьте обернуть изображение видимым элементом блока.

Итак, оберните элемент обрезки в div:

<div class="img-container">
    <img id="cropperImage">
</div>

Затем в вашем CSS

.img-container{
  min-width: 50vw; /*your responsive value here*/
  min-height: 50vh; /*your responsive value here*/
}
#cropperImage{
  max-width: 100%; /* prevent the overflow blip when the modal loads */
}

Вы можете установить minContainerWidth с чем-то вроде window.innerWidth, но контейнер не будет реагировать, поэтому, если пользователь повернет свой телефон, он выйдет за пределы модального окна и будет выглядеть ужасно.

Мне кажется, что minContainerWidth: 568 для мобильных устройств слишком велик, а minContainerHeight: 320 слишком мал - возможно, измените размеры и посмотрите.

если я возьму Samsung Note 8, который является большим телефоном, он будет 360 в ширину и 740 в высоту

также вы можете захотеть использовать CSS или стиль для самого img, а контейнер будет иметь максимальную ширину: 100%

Другие вопросы по тегам