<input type =“file”/> - 自定义样式/ css

时间:2010-08-31 07:25:26

标签: html css file-io

有没有办法让<input type="file">在所有使用CSS的浏览器中看起来都一样?

4 个答案:

答案 0 :(得分:4)

Quirksmode.org有一篇有趣的文章:http://www.quirksmode.org/dom/inputfile.html

答案 1 :(得分:2)

试试这个 -

  1. 取正常并将其放入元素中 职位:亲属。
  2. 要对同一个父元素添加一个 正常和图像,其中 有正确的风格。位置 这些元素绝对是这样的 他们占据了同一个地方
  3. 将z的索引设置为2,使其位于打开状态 样式输入/图像的顶部。
  4. 最后,设置不透明度  现在变得有效了 看不见的,风格 输入/图像闪耀,但你 仍然可以点击“浏览” 按钮。如果按钮已定位 在图像之上,用户 似乎点击图像和 获取正常的文件选择 窗口。 (注意你不能使用 能见度:隐藏,因为真实 隐形元素无法点击, 我们也需要保持可点击状态) 直到这里效果都可以 通过纯CSS实现。然而, 一个功能仍然缺乏。
  5. 当用户选择了文件时 应该是可见的假输入字段 显示此文件的正确路径, 像往常一样 将。这只是一个问题 将新值复制到虚假输入 字段,但我们需要JavaScript来做 此。
  6. 更多详情 - http://www.quirksmode.org/dom/inputfile.html

答案 2 :(得分:1)

您可以尝试使用swfupload,这是一个在页面上嵌入微小的Flash文件而不是文件输入的开源项目...您可以使用CSS来设置触发Flash上​​传的按钮的样式,但是您需要。

缺点:使用起来可能很棘手,当然,您的用户必须拥有闪存。

上行:在上传对话框中可以同时选择多个文件!

答案 3 :(得分:1)

您可以简单地设置自己的文件输入按钮的样式。 只需将输入元素的CSS属性设置为style="display:none",然后在javascript中处理click事件。进一步阅读: Using hidden file input elements using the click() method

编辑:事实证明,出于安全原因,这不再起作用。一点点破解就是将css样式设置为visibility:hidden。 这是一个JSFiddle,我将<input>字段放在页面末尾的某处,并使用<a>元素触发openFileDialog。

//html
<input id="openFileDialog" type="file" id="files" name="files[]" accept=".json, .txt" />

//js
$("#openFile").on("click", function () {
    //throws an error if browser doesn't support file upload
    checkFileApiCompatibility();

    //opens File Dialog
    $("#openFileDialog").click();
    $("#openFileDialog").on('change', function(){
        openFile(this);
    });
});