使用jQuery-UI的文件输入按钮样式

时间:2014-06-16 06:55:49

标签: jquery css jquery-ui

我正在使用jQuery UI,我注意到输入文件按钮:

<input type="file">

无法像其他按钮一样设置样式。我发现this plugin看起来很酷,显然可以让你放一个图像而不是按钮,但是这些例子没有显示任何按钮样式。

如果没有jQuery将主题样式应用于该按钮,我可以自己在CSS中设置样式吗?

5 个答案:

答案 0 :(得分:5)

是的,你可以,只用CSS。

制作<form>,在其中包含<div>&amp;将<input type="file">放入<div>

要覆盖<input type="file">的默认样式,主要优先级是在输入上设置opacity: 0;,以便样式来自<div> css。


<强>更新

要从<input type="file">获取文本,您需要一些jQuery。

例如,添加一个段落。然后使用val()从输入中获取文本并将其设置为段落文本。更新小提琴:


Fiddle demo

答案 1 :(得分:3)

一个简单的解决方案:

标记:

<div class="fileUpload btn btn-primary">
    <span>Upload</span>
    <input type="file" class="upload" />
</div>

的CSS:

.fileUpload {
    position: relative;
    overflow: hidden;
    margin: 10px;
}
.fileUpload input.upload {
    position: absolute;
    top: 0;
    right: 0;
    margin: 0;
    padding: 0;
    font-size: 20px;
    cursor: pointer;
    opacity: 0;
    filter: alpha(opacity=0);
}

Demo

注意:我使用Bootstrap作为样式按钮(div.file-upload)。

答案 2 :(得分:3)

可能你想要这样的东西:

HTML:

<div id='file'>
   <label id='text'for="inputFile1">No file selected.</label>
   <label for="inputFile1">
       <input type="file" id='inputFile1' class='fileInput'/>
   </label>
</div>

的CSS:

input[type="file"] {
    opacity:0;
}
#file {
    background:url('...der_open-add.png') 0 0 no-repeat;
    width:100%;
    height:32px;
    position:relative;
    overflow:hidden;
}
#file label {
    padding:0 0 0 35px;
    color:green;
    width:100%;
}
#file #text {
    line-height:32px;
    width:100%;
    position:absolute;
    left:0px;
    top:0;
    color:green;
    font-size:11px;
}

和jQuery:

$('#file input[type="file"]').on('change', function () {
    var o = this.value || 'No file selected.';
    $(this).closest('#file').find('#text').text(o);
});

Fiddle

答案 3 :(得分:1)

<div style="position:relative;display:inline-block;left:-4px;bottom:-6px;width:16px;  height: 24px;overflow:hidden;">
<img src="/images/attach.jpg" alt="" title="Add Attachment" style="height:24px;width:16px; position: relative;top: 1px; left: 0px;"/>
<input type="file" id="fileupload" name="upload" style=" opacity: 0;font-size: 50px;width:16px; filter:alpha(opacity: 0);  position: relative; top: -22px; left: -1px" />
</div>

演示:

http://jsfiddle.net/k6zBQ/2/

答案 4 :(得分:0)

我的简单解决方案: 将输入按钮放在带有css display:none的div中 无论如何都要设置你的按钮并绑定一个触发隐形输入按钮的功能。

<div style="display: none;">
    <form id="fileupload">
        <input type="file" class="upload" name="newfile"/>
    </form>
</div>

<span id="browser">Click this line to browse all your awesome files</span>

JQUERY:
$("#browser").on('click', function(){
    $(".upload").click();       
});

Fiddle