技巧一:使用input透明覆盖法

  1. 设置样式:将input的z-index设置为1以上的数字,并覆盖到需点击的内容上。同时,将input的样式opacity设置为0(即为透明度为0)。
   .uploadImg {
     width: 100%;
     height: 1.46rem;
     position: relative;
   }
   input {
     width: 1.46rem;
     height: 100%;
     z-index: 1;
     opacity: 0;
     position: absolute;
     cursor: pointer;
   }
  1. 绑定事件:通过绑定在input上的change事件触发。
   <input type="file" @change="uploadFile" style="display: none;">

技巧二:使用Vue的ref参数直接操作input的点击事件触发

  1. 获取input元素:使用Vue的ref参数获取input元素。
   <input ref="filElem" type="file" style="display: none;">
  1. 触发点击事件:点击上传按钮时,通过dispatchEvent方法触发input的点击事件。
   methods: {
     choiceImg() {
       this.$refs.filElem.dispatchEvent(new MouseEvent('click'));
     },
     getFile() {
       console.log("成功");
     }
   }

技巧三:使用HTML的label机制触发input事件

  1. 绑定label和input:通过label的for属性绑定input的id,即可通过触发label上的点击事件触发input的change事件。
   <label for="uploadPic">身份证识别</label>
   <input type="file" id="uploadPic" style="display: none;">
  1. 触发事件:在相应的函数中,通过点击label触发input的change事件。
   IDRecognition: function() {
     // 触发事件
   },
   uploadPic: function() {
     console.log('dsa');
   }

技巧四:使用ElementUI等UI库提供的隐藏input方法

  1. 引入UI库:首先,在项目中引入ElementUI等UI库。
   import ElementUI from 'element-ui';
   Vue.use(ElementUI);
  1. 使用隐藏input方法:使用UI库提供的隐藏input方法,例如ElementUI的el-upload组件。
   <el-upload
     ref="upload"
     action="https://jsonplaceholder.typicode.com/posts/"
     :on-change="handleChange"
     style="display: none;"
   >
     <input ref="input" type="file" accept=".jpg, .jpeg, .png">
   </el-upload>

技巧五:使用Vue自定义指令实现隐藏input

  1. 定义指令:在Vue实例中定义一个自定义指令,用于控制input的显示和隐藏。
   Vue.directive('hidden-input', {
     bind(el, binding) {
       if (binding.value) {
         el.style.display = 'none';
       } else {
         el.style.display = 'block';
       }
     }
   });
  1. 使用指令:在input元素上使用自定义指令。
   <input v-hidden-input="true" type="file" style="display: none;">

通过以上五种技巧,你可以在Vue-UI开发中轻松实现隐藏input的表单设计自由。在实际应用中,可以根据具体需求选择合适的技巧,以实现最佳的用户体验。