- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一般问题:
当默认情况下它被包裹在一个破坏我的表格布局的元素中时,如何让我的 Dropzone 中添加的行填充表格的整个宽度。
解释:
我正在尝试让 DropzoneJS 以表格格式显示上传的文件。我的 Dropzone 正确地放在我的 table 上,但我无法正确显示 previewTemplate。首先,出现问题是因为 Dropzone 无法将文件添加到 <td></td>
元素,所以我使用 CSS 将表格转换为这样的表格布局格式
<div class="div-tr">
<div class="div-td"></div>
<div class="div-td"></div>
</div>
因此,我的目标是向 DropzoneJS 添加一个预览模板,它看起来像这样
<div class="div-tr">
<div class="div-td">
<i class="fa fa-file-o"></i>
</div>
<div class="div-td">
<div class="dz-filename">
<span data-dz-name></span>
</div>
</div>
<div class="div-td">
<div class="dz-size" data-dz-size></div>
</div>
<div class="div-td">
<div class="dz-progress">
<span class="dz-upload" data-dz-uploadprogress></span>
</div>
</div>
<div class="div-td">
<div class="dz-success-mark">
<span>✔</span>
</div>
<div class="dz-error-mark">
<span>✘</span>
</div>
</div>
</div>
问题是 Dropzone 默认添加一组类 dz-processing dz-image-preview dz-error dz-success
到 <div>
在预览模板中。根据文档,它们将被添加到 <div>
中。与 class="dz-preview"
,但无论该类是否存在,其他类都会作为容器的第一个内部元素添加,previewTemplate 会被注入(inject)。这意味着应该是表格行的 previewTemplate 失去了它的属性,现在只显示第一个 <div class="div-td">
的宽度。
+-------------+--------------+-----------+----------+
| | | | | Existing row
+-------------+--------------+-----------+----------+
| | | | | Existing row
+-------------+--------------+-----------+----------+
| | | | | Existing row
+-------------+--------------+-----------+----------+
| | | | | Existing row
+-------------+--------------+-----------+----------+
| | | | | Row added by upload
+---+---+--+--+
发生这种情况是因为有一个额外的 <div>
被添加到行的内部。
我的表格 CSS 看起来像这样
/* DIV table style */
.div-table{
display: table;
width: 100%;
background-color: #fff;
}
.div-tr{
display: table-row;
}
.div-th, .div-td {
display: table-cell;
padding: 8px 15px;
border-bottom: 1px solid #eaeff0;
vertical-align: middle;
}
.div-thead{
display: table-header-group;
font-weight: bold;
}
.div-tfoot{
display: table-footer-group;
font-weight: bold;
background-color: #fff;
}
.div-tbody{
display: table-row-group;
}
布局文档可在此处找到:http://www.dropzonejs.com/#layout
感谢任何更改 CSS 或 JS 的帮助。
最佳答案
如 dropzone 文档中所述,您可以根据需要自定义预览模板,在这种情况下,您只需添加 div-tr
和 div-td
根据您的需要对预览元素进行分类,http://www.dropzonejs.com/#theming .
这里是一个如何覆盖 dropzone 模板的例子:
HTML:
<div class="dropzone" id="myDropzone"></div>
<div class="dropzone-previews div-table"></div>
<div id="preview-template" style="display: none;">
<div class="dz-preview dz-file-preview div-tr">
<div class="dz-details">
<div class="dz-filename div-td"><span data-dz-name></span></div>
<div class="dz-size div-td" data-dz-size></div>
<div class="dz-image div-td">
<img data-dz-thumbnail />
</div>
</div>
<div class="dz-progress div-td"><span class="dz-upload" data-dz-uploadprogress></span></div>
<div class="div-td">
<div class="dz-success-mark"><span>✔</span></div>
<div class="dz-error-mark"><span>✘</span></div>
</div>
<div class="dz-error-message div-td"><span data-dz-errormessage></span></div>
</div>
</div>
js:
Dropzone.options.myDropzone = {
previewsContainer: ".dropzone-previews",
previewTemplate: document.getElementById('preview-template').innerHTML,
url: 'upload.php',
init: function() {
this.on('success', function(file){
var errordiv = document.getElementsByClassName('dz-error-mark');
errordiv[errordiv.length - 2].style.display = 'none'; // The -2 is because there is also one in the preview-template
});
this.on('error', function(file){
var succesdiv = document.getElementsByClassName('dz-success-mark');
succesdiv[succesdiv.length - 2].style.display = 'none';
});
}
}
请注意,如果您想使用表格,只需将预览中的元素用 <td>
包裹起来即可。和 <tr>
并用作 previewsContainer
表格而不是 div。
因为元素dz-error-mark
和 dz-success-mark
默认情况下在 dropzone 中始终可见,您可能希望根据事件隐藏它们,这就是 init 函数中的代码所做的。或者最好不要在开头显示它们并相应地显示它们。
请记住,当您在模板中进行更改时,如果您不修改 dropzone 的默认行为,事情将开始无法正确显示。
Here您可以看到一个高度自定义的拖放区示例,拖放区文档中也提到了这一点。
关于javascript - 具有 div 表布局的 DropzoneJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39721058/
我正在构建一个 AngularJs 应用程序,我正在使用 DropzoneJs 的 dropzone。我需要使用成功和错误回调,因为我必须访问服务器响应。我遇到一个问题,如果我使用回调,preview
我正在对 dropzonejs 图像 uploader 进行一些修改。我希望最多允许上传 12 张图片。我看到了 maxFiles 的配置,但将其设置为 12 后,它仍然允许添加文件并生成缩略图预览。
我在显示缩略图上的“删除”按钮时遇到问题。 var myDropzone = new Dropzone("#my-awesome-dropzone"); myDropzone.opti
我正在使用dropzonejs用于简单的文件上传。不过,我目前遇到了一些问题。 我不知道如何限制上传的文件类型。我的 PHP 后端有文件验证,但文件似乎已上传(它们有一个复选标记),即使它们没有通过这
我已设置 dropzone 并使用我的 AWS S3 帐户。不过,我希望能够在将文件发送到 S3 之前对其进行重命名(例如附加时间戳),以便与现有文件同名上传的文件不会被覆盖。我尝试在发送事件中捕获此
我正在使用 dropzonejs 上传和删除服务器上的多个图像。上传多张图片工作正常但一次删除一张图片给我带来了问题。单击删除链接时,所有与图像关联的 ajax 函数都会同时触发,这会导致删除所有文件
我尝试通过 dropzone 搜索让我的上传功能与我自己的自定义表单一起使用。不幸的是,stackoverflow 和其他方面的其他线程对我帮助不大。所以也许任何人都可以了解真正的基础知识并帮助我理解
我正在使用 Dropzonejs 来处理文件上传。我有一个很大的表格,文件只是其中的一部分。我已将 dropzone 附加到表单内的 div,但文件附加到正文的末尾。有没有办法将文件放入表单中,以便它
有没有什么办法可以不使用Form而使用Dropzone js。我想像下面这样使用。但是这样就不会显示图像预览。 最佳答案 在 docs
我正在使用 Dropzonejs 上传文件以在我的模块中使用。它的工作方式是编辑项目,将文件拖到放置区,放置区隐藏,然后您会看到图像的预览。该预览是自制的,并且有一个删除按钮来删除图像并取消数据库中的
我正在制作一个上传脚本,但我坚持从“addfile”事件的“file”获取dataURL,这是我的代码: $(function() { var dropzone = new Dropzone(
问题 我正在使用 dropzone 处理多个图像上传。我希望它生成 280x280px 的缩略图。尽管我尽了最大的努力,它还是会不断生成 100x100 像素的缩略图。 代码 这是我的代码: D
我正在使用 dropzonejs 删除文件,然后上传到服务器。我想实现当视频文件被删除时,它应该能够使用html5视频播放。这是我尝试过的地方, this.on("addedfile"
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
我在我的网站上使用 dropzone js,我想访问插件使用的拖放照片源。这就是我的意思:在 added file 事件监听器中,我可以轻松访问已删除文件的名称,例如 dropzoneForm.on(
我试图使用选项 maxFiles: 1; 将用户可以选择的文件数量限制为一个;然而,这也阻止用户上传第二个、第三个等文件,这正是我想要的。我希望只选择一个文件并允许后续上传。这可能吗? 这是我的代码:
我使用插件dropzonejs.com 。现在我在html文档中编写这段代码 link('task', 'upload'); ?>" id="pinupload" class="dropzone" s
我在表单中使用 dropzoneJS。除了图像之外,表单还记录用户输入。一切正常。用户输入将进入我的数据库,图像将上传到定义的目录中。现在我想将拖放图像字段设置为可选字段,用户可以选择上传图像或将其留
我正在使用 dropzone js 将文件上传到服务器。我的服务器位于 Tornado 中,但 dropzonejs 在 header 中发送了一个选项请求,尽管我将其设置为执行方法 Post。 问题
我有一个上传视频的表格,视频的持续时间/长度很重要。 在我用 PHP 上传文件后,我用 FFMpeg 检查视频文件大小的持续时间。 我用 PHP 计算持续时间,需要通过 PHP 以某种方式发送持续时间
我是一名优秀的程序员,十分优秀!