html - 用样式标签/按钮替换浏览器的本机文件输入 UI
问题描述
我试图对这篇文章进行修改,以便为文件上传输入提供一个更好看的用户界面。简而言之,它主要是一种仅使用 CSS 的方法,用于隐藏浏览器的本机输入按钮并将其替换为样式标签。我想使用它的项目也恰好是一个 Ionic3 项目,所以我希望标签的样式看起来像一个自然的离子按钮。
如果标签包含纯文本,则文章中的代码效果很好,但是如果我尝试在标签中嵌入一个按钮元素,无论我是否偶然使用了 ion-button 属性,我都没有得到任何爱。
.inputfile {
width: 0.1px;
height: 0.1px;
opacity: 0;
overflow: hidden;
position: absolute;
z-index: -1;
}
.inputfile + label {
display: inline-block;
}
.inputfile + label {
cursor: pointer; /* "hand" cursor */
}
<input type="file" name="file" id="file" class="inputfile" />
<label for="file">Choose a file text label</label> <-- this works
<br/><br/>
<input type="file" name="file" id="file" class="inputfile" />
<label for="file">
<button>Choose a file button label</button>
</label> <-- this doesn't work
解决方案
这不是纯粹的 CSS 解决方案或特定于 Ionic,但通常对于作为隐藏文件输入元素的 UI 的按钮而言,以下似乎可行。您可以在按钮上放置一个单击处理程序,然后在该处理程序中调用输入元素的 DOM 单击处理程序:
<button (click)="handleClick($event)">Choose a file</button>
// Grab the element (Ionic/Angular)
@ViewChild('fileInput') fileInput;
handleClick($event) {
this.fileInput._native.nativeElement.click();
}
推荐阅读
- python-3.x - 名称重复时在 pylint 上获取 no-name-in-module
- java - 从弹簧工具套件连接到数据库时出错
- sql - SQL 查找从未上课的学生(无子查询或聚合)
- python - 使用 Python 进行日志分析
- javascript - 如何在柏树中获取复制到剪贴板的内容
- recursion - 代码分析忽略 OpenMP 结构;分析单线程代码
- c# - 如何暂停在航点之间移动的 navmesh 代理然后继续?
- r - 有没有办法可以在一个图中绘制 t = 300、350、450 和 500 条线?
- python - 在 matplotlib 中将 y 轴设置为从 0 开始
- typescript - Typescript - const 声明中缺少初始化程序