css - Twitter Bootstrap 表单文件元素上传按钮

标签 css forms twitter-bootstrap input-type-file

为什么 twitter bootstrap 没有花哨的文件元素上传按钮?如果为上传按钮实现蓝色主按钮,那就太好了。甚至可以使用 CSS 来优化上传按钮吗? (好像是无法操作的原生浏览器元素)

最佳答案

这是 Bootstrap 3、4 和 5 的解决方案。

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

HTML

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

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

此技术依赖于 HTML5 hidden属性。 Bootstrap 4 使用以下 CSS 在不支持的浏览器中屏蔽此功能。如果您使用的是 Bootstrap 3,则可能需要添加。

[hidden] {
  display: none !important;
}

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

请注意,当您单击 <label> 时,旧版 IE 不会触发文件输入,所以 CSS“膨胀”做了一些事情来解决这个问题:

  • 使文件输入跨越周围的整个宽度/高度 <span>
  • 使文件输入不可见

反馈和补充阅读

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

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

关于css - Twitter Bootstrap 表单文件元素上传按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11235206/

相关文章:

html - 定位元素、DIV 和 IMG

ruby-on-rails - 使用 Twitter Bootstrap 和 Simple Form 2.0 在一行中进行多个输入

jquery - 如何将 CSS table-striped 类添加到 jQuery Datatable 中动态生成的行?

html - 使用css悬停效果图像

html - 页脚上可见的 Bootstrap 旋转木马按钮

javascript - Galleria - 隐藏缩略图轮播 div

javascript - 使用 Google 跟踪代码管理器形成 HTML

javascript - HTML。当另一个表单字段更改时,也更改一个表单字段

html - Internet Explorer 8 无法正确显示搜索表单

html - 如何使用 Bootstrap 以 html 形式插入选择元素?