替换 html 中的文件浏览按钮的最佳方法是什么?

What is the best way to replace the file browse button in html?

提问人:vaske 提问时间:9/20/2008 最后编辑:Abhishek Pandeyvaske 更新时间:2/24/2017 访问量:22815

问:

我知道当您将标签与 .inputtype="file

我不确定什么是最好的方法,所以如果有人有这方面的经验,请做出贡献。

HTML CSS 文件 输入

评论


答:

22赞 levik 9/20/2008 #1

最好的方法是使文件输入控件几乎不可见(通过给它一个非常低的不透明度 - 不要做“可见性:隐藏”或“显示:无”),并在它下面绝对放置一些东西 - 使用较低的 z 索引

这样,实际的控制将不可见,并且您放在它下面的任何东西都会显示出来。但是,由于控件位于该按钮上方,因此它仍将捕获单击事件(这就是为什么您要使用不透明度,而不是可见性或显示 - 如果您使用这些来隐藏该元素,浏览器会使该元素不可单击)。

本文深入探讨了该技术。

评论

4赞 TM. 1/16/2009
这看起来很骇人听闻,太糟糕了,没有更好的方法(tm)。
0赞 Luke Bennett 9/20/2008 #2

出于安全目的,这在技术上是不可能的,因此用户不会被误导。

但是,有几种解决方法 - 请看 http://www.quirksmode.org/dom/inputfile.html 作为示例。

作为记录,这个问题已经在这里被问过了(我给出了相同的答案)。

5赞 Dan 9/20/2008 #3

浏览器真的不喜欢你弄乱文件输入,但这是可能的。我见过几种技术,但最简单的方法是将文件输入绝对放置在要用作按钮的任何内容上,并将其不透明度设置为零或接近零。这意味着,当用户点击图片(或图片下方的任何内容)时,他们实际上是在点击不可见的浏览按钮。

例如:

<input type="file" id="fileInput">
<img src="...">
#fileInput{
    position: absolute;
    opacity: 0;
    -moz-opacity: 0;
    filter: alpha(opacity=0);
}
2赞 erlando 9/20/2008 #4

如果您不介意使用 javascript,可以将文件输入的不透明度设置为 0,通过 z-index 将样式控件放在顶部,然后将 clickevents 从您的按钮发送到文件输入。有关技术,请参阅此处:http://www.quirksmode.org/dom/inputfile.html

0赞 ceejayoz 9/20/2008 #5

您也可以使用像 SWFupload 这样的 Flash 上传器来执行此操作。

评论

0赞 ceejayoz 8/23/2016
@Chensformers 谢谢你用它碰到一个八年前的线程,我猜?