当前位置: 首页 > news >正文

css:隐藏input file标签并触发点击上传文件事件

目录

    • 方式一:将input标签覆盖到按钮的最上层
    • 方式二:通过label标签触发点击事件
    • 方式三:js触发文件上传的点击事件
    • 总结

通用的按钮样式

/* button样式来自element-ui */
.button {
    color: #fff;
    background-color: #409eff;

    display: inline-block;
    line-height: 1;
    white-space: nowrap;
    cursor: pointer;

    -webkit-appearance: none;
    text-align: center;
    box-sizing: border-box;
    outline: none;
    margin: 0;
    transition: 0.1s;
    font-weight: 500;
    -moz-user-select: none;
    -webkit-user-select: none;
    -ms-user-select: none;
    padding: 12px 20px;
    font-size: 14px;
    border-radius: 4px;
}

.button:hover {
    background: #66b1ff;
    border-color: #66b1ff;
    color: #fff;
}

在这里插入图片描述

方式一:将input标签覆盖到按钮的最上层

通过子绝父相 的定位,将input标签隐藏覆盖到按钮的最上层,不过,发现会出现一个文字提示

在这里插入图片描述

.file-input-wrap {
  position: relative;
}

/* 隐藏文件选择 */
.file-input {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  cursor: pointer;
  opacity: 0;
  font-size: 0;
}
<div class="button file-input-wrap">
   <span>上传文件</span>
   <input
     type="file"
     class="file-input"
   />
</div>

方式二:通过label标签触发点击事件

通过label标签关联input标签,可以触发点击事件

/* 隐藏文件选择 */
.file-input {
    display: none;
}
<label
  class="button"
  for="file-input"
>
  <span>上传文件</span>
  <input
    type="file"
    class="file-input"
    id="file-input"
  />
</label>

当然,如果把label中的for属性去了,也是可以直接触发的

<label class="button">
  <span>上传文件</span>
  <input
    type="file"
    class="file-input"
  />
</label>

方式三:js触发文件上传的点击事件

通过js监听按钮点击事件,主动触发文件上传的点击事件

/* 隐藏文件选择 */
.file-input {
    display: none;
}
<div
  class="button"
  id="file-input-btn"
>
  <span>上传文件</span>
</div>

<input
  type="file"
  class="file-input"
  id="file-input-common"
/>

<script>
  // 监听按钮点击事件
  document
    .querySelector('#file-input-btn')
    .addEventListener('click', function () {
      // 主动触发文件上传点击事件
      document.querySelector('#file-input-common').click()
    })
</script>

总结

通过比对发现,方式二 是一个不错的选择

参考
Vue触发隐藏input file的方法实例详解
写上传文件时,将html中的(选择文件) 元素隐藏,并通过其它方式点击触发

相关文章:

  • EMQX Cloud 自定义函数实现多种 IoT 数据形式的灵活转化
  • 黑盒测试用例设计 - 场景法
  • 51单片机实训day2——创建Proteus工程以及Proteus基本控件的使用|单片机最小系统电路设计:电源配置 复位电路 晶振电路
  • 《Python多人游戏项目实战》第五节 断线重连
  • Oracle --- 序列
  • pdf文档页码怎么添加?分享这几个pdf加页码方法给你
  • Java 线程的六种状态及其简易转换
  • 【Python】用python将html转化为pdf
  • ddim原理及代码(Denoising diffusion implicit models)
  • 艾美捷脂质过氧化检测试剂盒参数说明和文献参考
  • Moonbeam Illuminate/22|各类圆桌讨论文字节选
  • MacOS系统安装Qt教程
  • day 8 模拟和高精度
  • Go语言常用条件判断空值逻辑
  • Kafka Producer Retries Idempotence 原理
  • 从零开始,开启属于你的 RTE 漫游之旅!丨漫游指南 x 即将启航
  • Fabric.js 元素被遮挡的部分也可以操作
  • 太阳能电池板自动清洗机器人的制作分享
  • electron:获取MAC地址
  • Kafka工作流程简介