如何将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" οnclick="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" class="table01">
<tbody>
<tr>
<td nowrap=""><input type="file" name="firmware" id="local_firmware" value="browse" maxlength="128" style="height:26px;" size="40" οnchange="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(file)浏览按钮美化
做美工的都知道不同浏览器的浏览按钮(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中在文本区域中需要双击才能弹出窗口,这也是我利用上面提到的共同特性的第三点的原因。
示例代码如下:
1
2
3
4
5
6
7
8
9
|
<
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按钮样式美化搞定。