问题

为什么twitter bootstrap没有一个花哨的文件元素上传按钮?如果为上传按钮实现了蓝色主按钮,那么它会很好用.使用CSS甚至可以使用上传按钮(看起来像是无法操作的本机浏览器元素)



解决方法

这是Bootstrap 3和4的解决方案.

要使功能文件输入控件看起来像一个按钮,您只需要HTML:

HTML

<label class="btn btn-default btn-file">
    Browse <input type="file" hidden>
</label>

这适用于所有现代浏览器,包括IE9 +.如果您还需要对旧IE的支持,请使用以下所示的旧方法.


Legacy approach for old IE

如果您需要支持IE8及以下版本,请使用以下HTML / CSS:

HTML

<span class="btn btn-default btn-file">
    Browse <input type="file">
</span>

CSS

.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;
}

请注意,当您点击&lt; label&gt; 时,旧IE不会触发文件输入,因此CSS"bloat"会执行一些操作:

  • Makes the file input span the full width/height of the surrounding <span>
  • Makes the file input invisible

Feedback & Additional Reading

我已发布有关此方法的更多详细信息,以及如何向用户显示选择了多少文件的示例:

http://www.abeautifulsite.net / whipping-file-inputs-into-shape-with-bootstrap-3 /




相关问题推荐