如何设置输入type="file"
按钮的样式.
看这个例子! - 适用于Chrome/FF/IE - (IE10/9/8/7)
最好的方法是使自定义标签元素的for
属性附加到隐藏文件输入元素.(标签的for
属性必须与文件元素相匹配id
才能使其生效).
作为替代方案,您也可以直接使用标签包装文件输入元素:( 示例)
在样式方面,只需使用属性选择器隐藏1输入元素.
input[type="file"] { display: none; }
然后,您需要做的就是设置自定义label
元素的样式.(例子).
.custom-file-upload { border: 1px solid #ccc; display: inline-block; padding: 6px 12px; cursor: pointer; }
1 - 值得注意的是,如果使用隐藏元素display: none
,它将无法在IE8及以下版本中使用.另请注意,jQuery validate 默认情况下不验证隐藏字段.如果任这些东西都是你的一个问题,这里有两个不同的方法来隐藏输入(1,2在这种情况下)的工作.
造型文件输入是众所周知的困难,因为大多数浏览器不会改变css或javascript的外观.
即使输入的大小也不会响应:
相反,您将需要使用size属性:
对于任何比这更复杂的样式(例如,更改浏览按钮的外观),您将需要查看在原生文件输入顶部覆盖样式按钮和输入框的狡猾方法.rm在www.quirksmode.org/dom/inputfile.html上已经提到过的文章是我见过的最好的文章.
按照这些步骤,您可以为文件上载表单创建自定义样式:
1.)这是简单的html表格(请阅读我在下面写的html评论)
2.)然后使用这个简单的脚本将click事件传递给文件输入标记.
function getFile(){
document.getElementById("upfile").click();
}
现在,您可以使用任何类型的样式,而无需担心如何更改默认样式.我非常清楚这一点,因为我一直试图改变一个半月的默认样式.相信我这很难,因为不同的浏览器有不同的上传输入标签.所以使用这个来构建自定义文件上传表单.这是完整的AUTOMATED UPLOAD代码.
function getFile() {
document.getElementById("upfile").click();
}
function sub(obj) {
var file = obj.value;
var fileName = file.split("\\");
document.getElementById("yourBtn").innerHTML = fileName[fileName.length - 1];
document.myForm.submit();
event.preventDefault();
}
请享用!
祝你今天愉快,
使用css隐藏它并使用带有$(selector).click()的自定义按钮来激活浏览按钮.然后设置一个间隔来检查文件输入类型的值.间隔可以显示用户的值,以便用户可以看到上传的内容.提交表单时间隔会清除[编辑]抱歉我一直很忙意思是更新这篇文章,这里有一个例子
$(window).load(function () {
var intervalFunc = function () {
$('#file-name').html($('#file-type').val());
};
$('#browse-click').on('click', function () { // use .live() for older versions of jQuery
$('#file-type').click();
setInterval(intervalFunc, 1);
return false;
});
});
CSSSelectPicture
.new_Btn { // your css propterties } #html_btn { display:none; }jQuery的
$('.new_Btn').bind("click" , function () { $('#html_btn').click(); }); //edit: 6/20/2014: Be sure to use ".on" not ".bind" for newer versions of jQuery
小提琴:http://jsfiddle.net/M7BXC/
你可以在没有普通JavaScript的jQuery的情况下实现你的目标.
现在newBtn与html_btn链接,你可以像你想要的那样为你的新btn设置样式:D
创建时,所有渲染引擎都会自动生成一个按钮.从历史上看,该按钮完全不具有风格.但是,Trident和WebKit通过伪元素添加了钩子.
三叉戟
从IE10开始,可以使用::-ms-browse
伪元素设置文件输入按钮的样式.基本上,您应用于常规按钮的任何CSS规则都可以应用于伪元素.例如:
::-ms-browse {
background: black;
color: red;
padding: 1em;
}
如果您使用的是Bootstrap 3,这对我有用:
见http://www.abeautifulsite.net/whipping-file-inputs-into-shape-with-bootstrap-3/
.btn-file {
position: relative;
overflow: hidden;
}
.btn-file input[type=file] {
position: absolute;
top: 0;
right: 0;
min-width: 100%;
min-height: 100%;
font-size: 100px;
text-align: right;
filter: alpha(opacity=0);
opacity: 0;
outline: none;
background: white;
cursor: inherit;
display: block;
}
Browse...
我可以使用下面的代码用纯CSS做到这一点.我使用过bootstrap和font-awesome.
在设置文件输入样式时,不应该破坏输入提供的任何本机交互.
该display: none
方法打破了本机拖放支持.
要不破坏任何内容,您应该使用opacity: 0
方法进行输入,并使用包装中的相对/绝对模式对其进行定位.
使用此技术,您可以轻松地为用户设置单击/拖放区域的样式,并在dragenter
事件的javascript中添加自定义类以更新样式并向用户提供反馈以让他看到他可以删除文件.
HTML:
CSS:
input[type="file"] {
position: absolute;
left: 0;
opacity: 0;
top: 0;
bottom: 0;
width: 100%;
}
div {
position: absolute;
left: 0;
top: 0;
bottom: 0;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
background: #ccc;
border: 3px dotted #bebebe;
border-radius: 10px;
}
label {
display: inline-block;
position: relative;
height: 100px;
width: 400px;
}
这是一个工作示例(使用额外的JS来处理dragover
事件和删除文件).
https://jsfiddle.net/ms3bbazv/4/
希望这有帮助!
您可以将输入类型="文件"包装在输入的标签内.根据您的喜好设置标签样式,并使用display:none隐藏输入;
使用jquery很简单.通过略微修改给出Ryan建议的代码示例.
基本的HTML:
准备就绪时,请务必在输入上设置样式:opacity: 0
您无法设置,display: none
因为它需要可点击.但是如果你愿意的话,你可以将它放在"新"按钮下面,或者用z-index收集其他东西.
单击图像时,设置一些jquery以单击实际输入.
$('#image_icon').click(function() { $('#the_real_file_input').click(); });
现在你的按钮正常工作.只需在更改时剪切并粘贴值即可.
$('input[type=file]').bind('change', function() { var str = ""; str = $(this).val(); $("#filename").text(str); }).change();
哇哇!您可能需要将val()解析为更有意义的内容,但您应该全部设置.
这是一个解决方案,它没有真正设置元素的样式,而是
在其他元素(可以设置样式)的顶部使用元素.该
元素是不是真的可见的,因此,总的错觉是一个很好的样式文件上传控制.
我最近遇到了这个问题,尽管Stack Overflow上有很多答案,但似乎没有一个真的符合这个要求.最后,我最终定制了这个,以便有一个简单而优雅的解决方案.
我也在Firefox,IE(11,10和9),Chrome和Opera,iPad以及一些Android设备上进行了测试.
这是JSFiddle链接 - > http://jsfiddle.net/umhva747/
$('input[type=file]').change(function(e) {
$in = $(this);
$in.next().html($in.val());
});
$('.uploadButton').click(function() {
var fileName = $("#fileUpload").val();
if (fileName) {
alert(fileName + " can be uploaded.");
}
else {
alert("Please select a file to upload");
}
});
body {
background-color:Black;
}
div.upload {
background-color:#fff;
border: 1px solid #ddd;
border-radius:5px;
display:inline-block;
height: 30px;
padding:3px 40px 3px 3px;
position:relative;
width: auto;
}
div.upload:hover {
opacity:0.95;
}
div.upload input[type="file"] {
display: input-block;
width: 100%;
height: 30px;
opacity: 0;
cursor:pointer;
position:absolute;
left:0;
}
.uploadButton {
background-color: #425F9C;
border: none;
border-radius: 3px;
color: #FFF;
cursor:pointer;
display: inline-block;
height: 30px;
margin-right:15px;
width: auto;
padding:0 20px;
box-sizing: content-box;
}
.fileName {
font-family: Arial;
font-size:14px;
}
.upload + .uploadButton {
height:38px;
}
非常简单,可以在任何浏览器上使用
款式
.upload-wrap { position: relative; } .upload-btn { position: absolute; left: 0; opacity: 0; }
我经常去寻找visibility:hidden
技巧
这是我的风格按钮
Upload
这是input type = file按钮.请注意visibility:hidden
规则
这是将它们粘合在一起的JavaScript位.有用
我能想到的唯一方法是在渲染后使用javascript找到按钮并为其指定样式
你也可以看一下这篇文章
我通常会使用简单的javascript来自定义文件输入标签.一个隐藏的输入字段,点击按钮,javascript调用隐藏字段,简单的解决方案,没有任何CSS或一堆jquery.
在这里,我们使用一个span来触发文件类型的输入,并且我们只是自定义了span,因此我们可以使用这种方式添加任何样式。
请注意,我们将输入标签与“ visibility:hidden”选项一起使用,并在范围内触发它。
.attachFileSpan{
color:#2b6dad;
cursor:pointer;
}
.attachFileSpan:hover{
text-decoration: underline;
}
Customized input of type file
Attach file