将file标签的"浏览"按钮换成别的语言或图片(转自别人)
如何将INPUT type=file 的"浏览..."按钮换成图片呢??
方法一:(仅支持IE)
?<HTML> ??
? <HEAD> ??
? <TITLE> ? New ? Document ? </TITLE> ??
? <META ? NAME="Generator" ? CONTENT="EditPlus"> ??
? <META ? NAME="Author" ? CONTENT=""> ??
? <META ? NAME="Keywords" ? CONTENT=""> ??
? <META ? NAME="Description" ? CONTENT=""> ??
? <SCRIPT ? LANGUAGE="JavaScript"> ??
? <!-- ??
? function ? test1(){ ??
? form1.fileABC.click(); ??
? form1.textfield.value ? =form1.fileABC.value; ??
? } ??
? //--> ??
? </SCRIPT> ??
? </HEAD> ??
? ??
? <form ? name="form1" ? method="post" ? action=""> ??
? <input ? name="fileABC" ? type="file" ? style="display:none"> ??
? <input ? type="text" ? name="textfield" ? readonly=""> ??
? <input ? type="image" ? src="xxx.jpg" ? onclick="test1()"> ??
? </form> ??
? </body> ??
? </HTML> ??
主要思路:采用CSS把FILE控件隐藏掉,新增加一个TEXT的输入框和图片按钮,把TEXT输入框的属性设置为readonly,用户点击
图片按钮时通过JS触发隐藏的FILE控件的click事件,然后把从选择文件得到的值传递给text文本框,从而实现楼主要求的效果。
当然这只是画面上的效果而已,服务器端文件内容的时候还是用FILE控件的名称来取的。
方法二:(支持所有浏览器)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="Pragma" content="No-cache" />
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />
<meta http-equiv="Expires" content="-1" />
<title>upload</title>
<style type="text/css">
#local_firmware{
? ? ? ?position: absolute;
? ? ? ?left: 0;
? ? ? ?left: 8px\9;
? ? ? ?top: 38px;
? ? ? ?filter: alpha(opacity = 0); ?/*IE*/
? ? ? ?-moz-opacity:0; ? ? ? ? ? ? /*Mozilla*/
? ? ? ?opacity: 0; ?
}
</style>
</head>
<body>
<div style="margin:0; padding:0; position:relative">
<h3 style="color:blue;">将上传file标签的中文"浏览"换成英文"Brower"或图片:</h3>
<form action="cgi-bin/webupg" method="post" enctype="multipart/form-data">
<table width="100%" ?border="0" cellpadding="0" cellspacing="0" name="firmware" id="local_firmware" value="browse" maxlength="128" style="height:26px;" size="40" onchange="document.getElementById('text_path').value=this.value;" hidefocus="hidefocus"/></td>
<td nowrap=""><input type="text" ?id="text_path" name="text_path" style="width:260px;" value="" maxlength="128" ?readonly/><input type="button" ?id="file_button" value="browse..." /> <input type="submit" value="Upload" onClick="" id="Upload"/></td>
</tr>
</tbody>
</table>
<input type="hidden" name="act" id="update" value="Update_Firmware" />
</form>
</div>
</body>
?思路:就是用一个文本框和一个按钮模枋file标签,并将一个真正的file标签(和模枋的等大小)设为全透明并覆盖在模枋的上面,这样显示的就是模枋的标签,但是点击时实际是点击到真正file标签上
?
?
?
?
只修改input file组件的浏览按钮样式
<style?type="text/css">??
<!--??
#input1{border:1px solid #0000FF}??
#btn1{width:70px;height:21px;font-size:12px;padding-top:3px;border-left:1px solid #FFFFFF;border-top:1px solid #FFFFFF;border-right:1px solid #666666;border-bottom:1px solid #666666}??
//-->??
</style>??
<input?type="text"?id="input1">?<input?type="button"?id="btn1"?onclick="myfile.click();"?value="浏览文档">??
<input?type="file"?id="myfile"?onchange="input1.value=this.value"?style="display:none">?
?
?
做美工的都知道不同浏览器的浏览按钮(input?type=file)样式有所不同,尤其是谷歌,与其他浏览器的几乎没有相同的地方。这个浏览按钮我们几乎是控制不了它的样式的。下面我来分享一下我的美化方法。
?
首先我们先要了解一下各浏览器的浏览按钮的共同特性:
????1、都可以设置整体的宽度和高度,但在IE、火狐、Opera中设置宽度不影响浏览按钮的宽度;
????2、谷歌中只要是input的区域单击可弹出窗口;IE(IE6中没试)中,单击浏览按钮可以弹出窗口,双击文本框区域可以弹出窗口;火狐和Opera中,单击input任何区域都可以弹出窗口;
????3、设置input字体大小,IE、火狐、Opera的流量按钮都变大了(宽与高)。(这点很重要);
从上面的共同特性来看,只要第三条是我们最需要的。
?
现在我们可以开始美化了:
????????思路:先用a标签做一个按钮,定好宽度并要加上overflow:hidden;属性,然后将<input?type="file"?/>放在a标签里面,通过定位,将input相对于a的右上角对齐,最后将input的透明度设为0即可。
????????为何要右上角对齐?
????????????????之所以右上角对齐是因为在IE、火狐、Opera中,鼠标放在文本框上鼠标呈文本状态,还有一个原因是IE中在文本区域中需要双击才能弹出窗口,这也是我利用上面提到的共同特性的第三点的原因。
????????示例代码如下:
123456789<
style
>
a{display:inline-block; width:100px; height:40px; background:red; position:relative; overflow:hidden;}
a:hover{background:green;}
input{position:absolute; right:0; top:0; font-size:100px; opacity:0; filter:alpha(opacity=0);}
</
style
>
???
?<
a
?href
=
"#"
>
????
<
input
?type
=
"file"
?value
=
"浏览"
?/>
</
a
>
这样各个浏览器的input浏览按钮的样式就达到了一致的效果,file按钮样式美化搞定。