Jquery Dropzone.js将缩略图宽度更改为100%

时间:2015-11-19 18:20:10

标签: jquery css dropzone.js

我使用Dropzone.js允许用户将文件上传到服务器,根据规格,您可以更改缩略图宽度,如下所示,但是我想将宽度更改为100%而不是使用px,这是否可能?

因为如果我这样做 thumbnailWidth: 100%它无法识别%char。

    dzImageOptions = Dropzone.options.myDropzone = {
        thumbnailWidth: 314, //I want to change width to 100% instead
        thumbnailHeight: 314,
        init: function (file) {

        }
}
    //Also have to change css or thumbnail won't resize properly
    .dropzone.song-image .dz-preview .dz-image {
    border-radius: 1px;
    width: 314px;
    height: 314px;
}

<div class="dropzone song-image"></div>

5 个答案:

答案 0 :(得分:10)

您无法在thumbnailWidththumbnailHeight上指定百分比。 Dropzone使用这些值创建图像源以将其显示为预览。

但您可以将缩略图保留为原始宽度和高度,将这些值设置为null请注意,这可能会导致高分辨率图像滞后一点)然后使用<img>宽度和高度属性,用于显示所需大小的图像,并使用css调整.dz-image容器。

html:

<div class="dropzone" id="myDropzone"></div>

JS:

Dropzone.autoDiscover = false;

Dropzone.options.myDropzone = {
    url: "yourUrl",
    thumbnailWidth: null,
    thumbnailHeight: null,
    init: function() {
        this.on("thumbnail", function(file, dataUrl) {
            $('.dz-image').last().find('img').attr({width: '100%', height: '100%'});
        }),
        this.on("success", function(file) {
            $('.dz-image').css({"width":"100%", "height":"auto"});
        })
    }
};

var myDropzone = new Dropzone('div#myDropzone');

答案 1 :(得分:0)

我需要用dropzone完成响应式缩略图,这篇帖子帮了很多忙。我还需要在没有jquery的情况下完成它,所以这就是我想出来的。如果它可以帮助其他任何人,我想分享。

我的dropzone init函数如下所示:

init: function () {
    this.on('thumbnail', function(file, dataUrl) {
        var thumbs = document.querySelectorAll('.dz-image');
        [].forEach.call(thumbs, function (thumb) {
            var img = thumb.querySelector('img');
            if (img) {
                img.setAttribute('width', '100%');
                img.setAttribute('height', '100%');
            }
        });
    }),
    this.on('success', function(file) {
        var thumbs = document.querySelectorAll('.dz-image');
        [].forEach.call(thumbs, function (thumb) {
            thumb.style = 'width: 100%; height: auto;';
        });
    })
}

我不是一个javascript向导,所以可能有更高效或更好的方法来做到这一点。请分享!

答案 2 :(得分:0)

尝试了很长时间后,以下更改对我有用。

HTML 代码:

<form action="/" class="dropzone" method="post" id="myAwesomeDropzone">

                                </form>

JS代码:

            Dropzone.autoDiscover = false;

        $(document).ready(function()
        {

            debugger;

            $("form#myAwesomeDropzone").dropzone ({

                acceptedFiles: ".png,.jpg,.gif,.bmp,.jpeg",

                thumbnailWidth: null,

                thumbnailHeight: null,

                init:function()
                {

                    debugger;

                    var self = this;

                    self.on("thumbnail", function(file, dataUrl)
                    {

                        debugger;

                        $('.dz-preview').css({"width":"100%", "height":"150px", "margin":"0px"});
                        $('.dz-image').css({"width":"100%", "height":"150px"});

                    }),

                    self.on("success", function(file)
                    {

                        debugger;

                        $('.dz-image').css({"width":"240px", "height":"240px"});

                    })

                }

            });

        });

答案 3 :(得分:0)

基于@wallek876 的回答,我尝试了一种更简单的方法来做到这一点。我将直接进入相关部分:

init: function() {
    this.on("success", function(file) {
        $('.dz-image img').css({"width":"100%", "height":"auto"});
    })
}

答案 4 :(得分:-1)

var myDropZone = jQuery("#file128_dropzone").get(0).dropzone;
myDropZone.options.thumbnailWidth = 250;
myDropZone.options.thumbnailHeight = 250;