type=file的input的样式修改+上传后预览图片

前面的文章介绍过type=file的input,但是有没有发现这玩意是真的丑。
input
而且它的样式直接是修改不了的,因此需要一些巧方法来更改
1.

在这里插入图片描述
2.
在这里插入图片描述

上两个都是改过之后的效果,现在这整张图片或者下面那个按钮就是那个表单项。当然可以修改为更加高大上的,这里只是展示方法就比较简洁。

下面是方法:
先说那个简单的按钮,因为那个图片的表单项会有其他内容会在后面说。

 <input class="load_hidden video_files" name="file" type="file" value=""  onchange="load_video()">
 <button type="button" class="w_btn fix_btn2">选择文件</button><span class="alert_show"></span>

这里我将上传文件的表单正常写,下面写的按钮是我需要让大家看到的效果。一说需要我想大概就能猜到了,让表单和按钮的大小一样,利用层级关系让表单在按钮的上一层,再让表单透明,这样的话点击按钮实际上是点击表单,只是那个表单你看不见罢了。

下面说一下上传图片文件后可以让图片回显在需要的地方

我们上传文件有时候不仅仅只是上传,可能还会需要预览我们上传的文件,比如上传头像这种,下面就用代码实现一下这种效果:

<img id="backimg" class="load_img" src="/static/admin/img/load.png">
<input accept="image/png,image/jpg" onchange="reads(this)">

同上述说的方式一样,首先需要准备一个可以显示图片的元素,让真正的表单在这个元素的上一层并且透明化。上面代码中的img就是我要预览的地方,在没有上传之前是上面的第一张图片
上传过之后就是这样:
在这里插入图片描述
这里是利用表单项的onchange属性来读取我定义的js,在js里让图片显示出来。

 function reads(obj) {
    
    
         var file = obj.files[0];
         var reader = new  FileReader();
         reader.readAsDataURL(file);
         reader.onload = function (ev) {
    
    
         $("#backimg").attr("src", ev.target.result);
  }
}

这个js代码不难,就是将读取到的表单项里面的文件路径设置为展示元素的src即可。

猜你喜欢

转载自blog.csdn.net/qq_50646256/article/details/110661436