input file在不使用自带样式的情况下,将input标签隐藏,用label标签代替点击弹框,测试了两种方法(只考虑现代浏览器):
1.方法一:将input标签透明度改为零(不考虑定位覆盖问题,这里作简单测试)
<div> <label for="file" style="display:block;width:300px;height:50px;background-color:yellow;text-align:center;line-height:50px;font-size:20px;cursor:pointer;">本地上传</label> <input type="file" name="file" id="file" style="opacity:0;"> </div>
结果:测试浏览器:edge,firefox,chrome,safari,opara,都可以打开上传文件的弹窗,但是,safari会有一次闪弹框,然后在另一处再弹出弹框,实际上看到了两个弹窗,最终显示一个;
2.方法二:将input标签display:none;
<div> <label for="file" style="display:block;width:300px;height:50px;background-color:yellow;text-align:center;line-height:50px;font-size:20px;cursor:pointer;">本地上传</label> <input type="file" name="file" id="file" style="display:none;"> </div>
结果:测试浏览器同上,其他浏览器正常,问题依然在safari,只不过这次没有弹窗,点击label标签没反应。
不知道引起这个现象的原因是什么,来此请教。