【问题标题】:How to customize Dropzone js?如何自定义 Dropzone js?
【发布时间】:2021-10-12 02:09:48
【问题描述】:

如何自定义 Dropzone js?我搜索了几个小时,但只是循环往复。我正在尝试摆脱这个...

对于这样的事情...

我不需要背景或任何花哨的样式,并且该功能已经可以使用。我只是主要需要文件就像它们在红框中一样。但我不知道从哪里开始。

这是我用来设置您在第一张图片中看到的样式的 main.js 和 css...

Dropzone.autoDiscover = false;

const myDropzone = new Dropzone("#my-dropzone", {
    url: "upload/",
    maxFiles: 2,
    maxFilesize: 20,
    acceptedFiles: '.csv, .xlsx',
    preview_image: false,
    inputLabelWithFiles: false,
    // autoProcessQueue: false,
    // uploadMultiple: True,
    // previewTemplate: '',
})
body {
    background-color: #f8f8f8;
}

.dz {
    border: dashed !important;
    border-color: #ccc !important;
    border-radius: 10px !important;
}

.dz:hover {
    background-color: aliceblue !important;
}

【问题讨论】:

    标签: javascript html css dropzone.js


    【解决方案1】:

    我这样做的方式,每次我下载一个文件我调用ajax函数,它首先添加css(显示:无),用于dropzone中的元素,然后调用php脚本。它负责显示保存到之前为空的 div 中的所有文件(div 位于 dropzone 下)。

    【讨论】:

      【解决方案2】:

      你可以检查这个article

       new Dropzone(target, {
              ... 
              previewTemplate: previewTemplate,
              previewsContainer: "#previews",
      

      另外,在documentation

      【讨论】:

        【解决方案3】:

        好的,所以我想我需要编辑 dropzone 的 html,但我找不到。但是,我意识到我只需要 css。在尝试了不同的事情之后,这就是现在的样子...... 这是更新后的 style.css...

        body {
            background-color: #f8f8f8;
        }
        
        .dz {
            margin-top: 180px;
            border: dashed !important;
            border-color: #ccc !important;
            border-radius: 10px !important;
        
            /* REQUIRED. This will prevent the dropzone area from getting bigger.*/
            max-height: 150px !important;
        }
        
        
        /* Here are the other styles for Dropzone. 
        These will give it the same look as in the
        picture. Which I think is better for non image files.*/
        
        /* Manually place the uploaded files.*/
        .dropzone .dz-preview {
            top: 200px !important;
            margin: 0px !important;
            min-height: 0px !important;
        }
        
        /* Manually create the shape of the bubble.*/
        .dz-image {
            width: 1000px !important;
            height: 20px !important;
            /* Add this to create cool colors, if you want. */
            /* background: linear-gradient(to bottom, #28a745, #dc3545) !important; */
            position: relative;
        }
        
        /* Manually put the file size into the bubble. */
        .dropzone .dz-preview .dz-details > .dz-size {
            position: absolute;
            top: 0px !important;
        }
        
        /* Manually put the file name into the bubble.*/
        .dz-details > .dz-filename {
            position: absolute;
            top: 0px !important;
            left: 100px !important;
        }
        
        /* Put the details below the upload area and button. */
        .dz-details {
            position: absolute;
            top: 305.5px;
        }
        
        /* Make the loading bar slim and cover 80% of the file bubble.*/
        .dropzone .dz-preview .dz-progress {
            position: relative !important;
            height: 6px !important;
            left: 0px !important;
            width: 80% !important;
            margin-left: 97px !important;
            border-radius: 0px !important;
        }
        
        /* Haven't changed the checkbox that comes after the loading bar.*/

        如果你下载了它,你也可以将这些实现到 dropzone.css 文件中。我已经做到了...

        /*
         * The MIT License
         * Copyright (c) 2012 Matias Meno <m@tias.me>
         */
        @-webkit-keyframes passing-through {
          0% {
            opacity: 0;
            -webkit-transform: translateY(40px);
            -moz-transform: translateY(40px);
            -ms-transform: translateY(40px);
            -o-transform: translateY(40px);
            transform: translateY(40px); }
          30%, 70% {
            opacity: 1;
            -webkit-transform: translateY(0px);
            -moz-transform: translateY(0px);
            -ms-transform: translateY(0px);
            -o-transform: translateY(0px);
            transform: translateY(0px); }
          100% {
            opacity: 0;
            -webkit-transform: translateY(-40px);
            -moz-transform: translateY(-40px);
            -ms-transform: translateY(-40px);
            -o-transform: translateY(-40px);
            transform: translateY(-40px); } }
        @-moz-keyframes passing-through {
          0% {
            opacity: 0;
            -webkit-transform: translateY(40px);
            -moz-transform: translateY(40px);
            -ms-transform: translateY(40px);
            -o-transform: translateY(40px);
            transform: translateY(40px); }
          30%, 70% {
            opacity: 1;
            -webkit-transform: translateY(0px);
            -moz-transform: translateY(0px);
            -ms-transform: translateY(0px);
            -o-transform: translateY(0px);
            transform: translateY(0px); }
          100% {
            opacity: 0;
            -webkit-transform: translateY(-40px);
            -moz-transform: translateY(-40px);
            -ms-transform: translateY(-40px);
            -o-transform: translateY(-40px);
            transform: translateY(-40px); } }
        @keyframes passing-through {
          0% {
            opacity: 0;
            -webkit-transform: translateY(40px);
            -moz-transform: translateY(40px);
            -ms-transform: translateY(40px);
            -o-transform: translateY(40px);
            transform: translateY(40px); }
          30%, 70% {
            opacity: 1;
            -webkit-transform: translateY(0px);
            -moz-transform: translateY(0px);
            -ms-transform: translateY(0px);
            -o-transform: translateY(0px);
            transform: translateY(0px); }
          100% {
            opacity: 0;
            -webkit-transform: translateY(-40px);
            -moz-transform: translateY(-40px);
            -ms-transform: translateY(-40px);
            -o-transform: translateY(-40px);
            transform: translateY(-40px); } }
        @-webkit-keyframes slide-in {
          0% {
            opacity: 0;
            -webkit-transform: translateY(40px);
            -moz-transform: translateY(40px);
            -ms-transform: translateY(40px);
            -o-transform: translateY(40px);
            transform: translateY(40px); }
          30% {
            opacity: 1;
            -webkit-transform: translateY(0px);
            -moz-transform: translateY(0px);
            -ms-transform: translateY(0px);
            -o-transform: translateY(0px);
            transform: translateY(0px); } }
        @-moz-keyframes slide-in {
          0% {
            opacity: 0;
            -webkit-transform: translateY(40px);
            -moz-transform: translateY(40px);
            -ms-transform: translateY(40px);
            -o-transform: translateY(40px);
            transform: translateY(40px); }
          30% {
            opacity: 1;
            -webkit-transform: translateY(0px);
            -moz-transform: translateY(0px);
            -ms-transform: translateY(0px);
            -o-transform: translateY(0px);
            transform: translateY(0px); } }
        @keyframes slide-in {
          0% {
            opacity: 0;
            -webkit-transform: translateY(40px);
            -moz-transform: translateY(40px);
            -ms-transform: translateY(40px);
            -o-transform: translateY(40px);
            transform: translateY(40px); }
          30% {
            opacity: 1;
            -webkit-transform: translateY(0px);
            -moz-transform: translateY(0px);
            -ms-transform: translateY(0px);
            -o-transform: translateY(0px);
            transform: translateY(0px); } }
        @-webkit-keyframes pulse {
          0% {
            -webkit-transform: scale(1);
            -moz-transform: scale(1);
            -ms-transform: scale(1);
            -o-transform: scale(1);
            transform: scale(1); }
          10% {
            -webkit-transform: scale(1.1);
            -moz-transform: scale(1.1);
            -ms-transform: scale(1.1);
            -o-transform: scale(1.1);
            transform: scale(1.1); }
          20% {
            -webkit-transform: scale(1);
            -moz-transform: scale(1);
            -ms-transform: scale(1);
            -o-transform: scale(1);
            transform: scale(1); } }
        @-moz-keyframes pulse {
          0% {
            -webkit-transform: scale(1);
            -moz-transform: scale(1);
            -ms-transform: scale(1);
            -o-transform: scale(1);
            transform: scale(1); }
          10% {
            -webkit-transform: scale(1.1);
            -moz-transform: scale(1.1);
            -ms-transform: scale(1.1);
            -o-transform: scale(1.1);
            transform: scale(1.1); }
          20% {
            -webkit-transform: scale(1);
            -moz-transform: scale(1);
            -ms-transform: scale(1);
            -o-transform: scale(1);
            transform: scale(1); } }
        @keyframes pulse {
          0% {
            -webkit-transform: scale(1);
            -moz-transform: scale(1);
            -ms-transform: scale(1);
            -o-transform: scale(1);
            transform: scale(1); }
          10% {
            -webkit-transform: scale(1.1);
            -moz-transform: scale(1.1);
            -ms-transform: scale(1.1);
            -o-transform: scale(1.1);
            transform: scale(1.1); }
          20% {
            -webkit-transform: scale(1);
            -moz-transform: scale(1);
            -ms-transform: scale(1);
            -o-transform: scale(1);
            transform: scale(1); } }
        .dropzone, .dropzone * {
          box-sizing: border-box; }
        
        .dropzone {
          margin-top: 180px;
          min-height: 150px;
          border: 2px solid rgba(0, 0, 0, 0.3);
          background: white;
          padding: 20px 20px; }
          .dropzone.dz-clickable {
            cursor: pointer; }
            .dropzone.dz-clickable * {
              cursor: default; }
            .dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {
              cursor: pointer; }
          .dropzone.dz-started .dz-message {
            display: none; }
          .dropzone.dz-drag-hover {
            border-style: solid; }
            .dropzone.dz-drag-hover .dz-message {
              opacity: 0.5; }
          .dropzone .dz-message {
            text-align: center;
            margin: 2em 0; }
            .dropzone .dz-message .dz-button {
              background: none;
              color: inherit;
              border: none;
              padding: 0;
              font: inherit;
              cursor: pointer;
              outline: inherit; }
          .dropzone .dz-preview {
            position: relative;
            display: inline-block;
            vertical-align: top;
            top: 200px;
            margin: 0px;
            min-height: 0px; }
            .dropzone .dz-preview:hover {
              z-index: 1000; }
              .dropzone .dz-preview:hover .dz-details {
                opacity: 1; }
            .dropzone .dz-preview.dz-file-preview .dz-image {
              border-radius: 20px;
              background: #999;
              background: linear-gradient(to bottom, #eee, #ddd); }
            .dropzone .dz-preview.dz-file-preview .dz-details {
              opacity: 1; }
            .dropzone .dz-preview.dz-image-preview {
              background: white; }
              .dropzone .dz-preview.dz-image-preview .dz-details {
                -webkit-transition: opacity 0.2s linear;
                -moz-transition: opacity 0.2s linear;
                -ms-transition: opacity 0.2s linear;
                -o-transition: opacity 0.2s linear;
                transition: opacity 0.2s linear; }
            .dropzone .dz-preview .dz-remove {
              font-size: 14px;
              text-align: center;
              display: block;
              cursor: pointer;
              border: none; }
              .dropzone .dz-preview .dz-remove:hover {
                text-decoration: underline; }
            .dropzone .dz-preview:hover .dz-details {
              opacity: 1; }
            .dropzone .dz-preview .dz-details {
              z-index: 20;
              position: absolute;
              top: 0;
              left: 0;
              opacity: 0;
              font-size: 13px;
              min-width: 100%;
              max-width: 100%;
              padding: 2em 1em;
              text-align: center;
              color: rgba(0, 0, 0, 0.9);
              line-height: 150%; }
              .dropzone .dz-preview .dz-details .dz-size {
                margin-bottom: 1em;
                font-size: 16px;
                position: absolute;
                top: 0px; }
              .dropzone .dz-preview .dz-details .dz-filename {
                color: #000000;
                position: absolute;
                top: 0px;
                left: 100px;
                white-space: nowrap; }
                .dropzone .dz-preview .dz-details .dz-filename:hover span {
                  border: 1px solid rgba(200, 200, 200, 0.8);
                  background-color: rgba(255, 255, 255, 0.8); }
                .dropzone .dz-preview .dz-details .dz-filename:not(:hover) {
                  overflow: hidden;
                  text-overflow: ellipsis; }
                  .dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
                    border: 1px solid transparent; }
              .dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {
                background-color: rgba(255, 255, 255, 0.4);
                padding: 0 0.4em;
                border-radius: 3px; }
            .dropzone .dz-preview:hover .dz-image img {
              -webkit-transform: scale(1.05, 1.05);
              -moz-transform: scale(1.05, 1.05);
              -ms-transform: scale(1.05, 1.05);
              -o-transform: scale(1.05, 1.05);
              transform: scale(1.05, 1.05);
              -webkit-filter: blur(8px);
              filter: blur(8px); }
            .dropzone .dz-preview .dz-image {
              border-radius: 20px;
              overflow: hidden;
              width: 1000px;
              height: 20px;
              /* Maybe try 'fixed' if something goes wrong. */
              position: relative;
              background: linear-gradient(to bottom, #28a745, #dc3545);
              display: block;
              z-index: 10; }
              .dropzone .dz-preview .dz-image img {
                display: block; }
            .dropzone .dz-preview.dz-success .dz-success-mark {
              -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
              -moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
              -ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
              -o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
              animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }
            .dropzone .dz-preview.dz-error .dz-error-mark {
              opacity: 1;
              -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
              -moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
              -ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
              -o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
              animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }
            .dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {
              pointer-events: none;
              opacity: 0;
              z-index: 500;
              position: absolute;
              display: block;
              top: 50%;
              left: 50%;
              margin-left: -27px;
              margin-top: -27px; }
              .dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {
                display: block;
                width: 54px;
                height: 54px; }
            .dropzone .dz-preview.dz-processing .dz-progress {
              opacity: 1;
              -webkit-transition: all 0.2s linear;
              -moz-transition: all 0.2s linear;
              -ms-transition: all 0.2s linear;
              -o-transition: all 0.2s linear;
              transition: all 0.2s linear; }
            .dropzone .dz-preview.dz-complete .dz-progress {
              opacity: 0;
              -webkit-transition: opacity 0.4s ease-in;
              -moz-transition: opacity 0.4s ease-in;
              -ms-transition: opacity 0.4s ease-in;
              -o-transition: opacity 0.4s ease-in;
              transition: opacity 0.4s ease-in; }
            .dropzone .dz-preview:not(.dz-processing) .dz-progress {
              -webkit-animation: pulse 6s ease infinite;
              -moz-animation: pulse 6s ease infinite;
              -ms-animation: pulse 6s ease infinite;
              -o-animation: pulse 6s ease infinite;
              animation: pulse 6s ease infinite; }
            .dropzone .dz-preview .dz-progress {
              opacity: 1;
              z-index: 1000;
              pointer-events: none;
              position: relative;
              height: 6px;
              /* left: 50%; */
              top: 50%;
              margin-top: -8px;
              width: 80%;
              margin-left: 97px;
              background: rgba(255, 255, 255, 0.9);
              -webkit-transform: scale(1);
              /* border-radius: 8px; */
              overflow: hidden; }
              .dropzone .dz-preview .dz-progress .dz-upload {
                background: #333;
                background: linear-gradient(to bottom, #661, #444);
                position: absolute;
                top: 0;
                left: 0;
                bottom: 0;
                width: 0;
                -webkit-transition: width 300ms ease-in-out;
                -moz-transition: width 300ms ease-in-out;
                -ms-transition: width 300ms ease-in-out;
                -o-transition: width 300ms ease-in-out;
                transition: width 300ms ease-in-out; }
            .dropzone .dz-preview.dz-error .dz-error-message {
              display: block; }
            .dropzone .dz-preview.dz-error:hover .dz-error-message {
              opacity: 1;
              pointer-events: auto; }
            .dropzone .dz-preview .dz-error-message {
              pointer-events: none;
              z-index: 1000;
              position: absolute;
              display: block;
              display: none;
              opacity: 0;
              -webkit-transition: opacity 0.3s ease;
              -moz-transition: opacity 0.3s ease;
              -ms-transition: opacity 0.3s ease;
              -o-transition: opacity 0.3s ease;
              transition: opacity 0.3s ease;
              border-radius: 8px;
              font-size: 13px;
              top: 130px;
              left: -10px;
              width: 140px;
              background: #be2626;
              background: linear-gradient(to bottom, #be2626, #a92222);
              padding: 0.5em 1.2em;
              color: white; }
              .dropzone .dz-preview .dz-error-message:after {
                content: '';
                position: absolute;
                top: -6px;
                left: 64px;
                width: 0;
                height: 0;
                border-left: 6px solid transparent;
                border-right: 6px solid transparent;
                border-bottom: 6px solid #be2626; }

        如果您想要相同的外观,只需复制所有内容并换出现有的 dropzone.css 文件。 无论如何,希望这可以帮助任何想要使用这种风格的 dropzone 的人。我认为这是任何非图像文件的想法。没有 html javascript 或其他任何东西。只是纯 CSS。

        【讨论】:

          猜你喜欢
          • 2017-04-04
          • 2021-08-16
          • 1970-01-01
          • 2018-10-09
          • 2016-02-23
          • 2016-11-05
          • 1970-01-01
          • 2015-08-14
          • 2019-07-21
          相关资源
          最近更新 更多