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

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

目录

通用的按钮样式

/* 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;
}

image.png

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

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

image.png

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

总结

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

相关文章
|
5天前
|
JavaScript 前端开发
页面滚动触发css3动画js插件
delighters.js是一款页面滚动触发css3动画js插件。该js插件可以在页面向下滚动时,为进入浏览器视口的元素制作各种炫酷的CSS3动画效果。
31 13
|
1月前
|
数据采集 存储 前端开发
Puppeteer教程:使用CSS选择器点击和爬取动态数据
本文介绍如何使用Puppeteer结合CSS选择器爬取动态网页数据,以贝壳网的二手房价格为例,通过代理IP提高爬虫成功率。文章详细讲解了Puppeteer的安装和配置、代码实现及数据趋势分析,帮助读者掌握动态网页爬取技术。
Puppeteer教程:使用CSS选择器点击和爬取动态数据
|
24天前
|
前端开发 JavaScript UED
CSS滚动效果和视差滚动的原理、应用及其对用户体验的影响。从平滑滚动到元素跟随,再到滚动触发动画
本文探讨了CSS滚动效果和视差滚动的原理、应用及其对用户体验的影响。从平滑滚动到元素跟随,再到滚动触发动画,这些效果增强了页面的吸引力和互动性。视差滚动通过不同层次元素的差异化移动,增加了页面的深度感和沉浸感。文章还讨论了实现方法、性能优化及案例分析,旨在为设计师和开发者提供实用指导。
51 7
|
24天前
|
存储 移动开发 前端开发
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
36 5
|
2月前
|
前端开发 UED
CSS3:linear-gradient&input&inset&table
本文介绍了 CSS 中的 `linear-gradient` 渐变、`input` 样式、`inset` 简写属性、`border-collapse: collapse` 表格边框合并以及 `&lt;label&gt;` 元素的 `for` 属性。通过示例代码和解释,帮助读者理解这些 CSS 特性及其应用。
55 13
|
3月前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
3月前
|
前端开发
为什么最好把 CSS 的 link 标签放在 head 标签之间?
为什么最好把 CSS 的 link 标签放在 head 标签之间?
|
3月前
|
前端开发 JavaScript
CSS中禁用DOM事件
CSS中禁用DOM事件
|
4月前
|
前端开发
官网导航更智能:CSS动画下划线,让每一次点击都充满期待!
官网导航更智能:CSS动画下划线,让每一次点击都充满期待!