点击头像按钮实现图片上传并预览

淡淡的烟草味﹌ 2021-12-11 23:29 1046阅读 0赞

背景

手机添加通讯录时,希望实现点击图片上传头像,这里主要包含两个功能

  1. 将上传图片的input按钮替换为指定图片,点击图片是触发input的上传事件。
  2. 图片上传后预览。

效果预览

点击
在这里插入图片描述
点击灰色头像,打开相机或者相册。上传完后效果如下
在这里插入图片描述

实现

step1 实现图片按钮

  1. <div class="aui-info">
  2. <img src="imgs/txbk.png" id="img-txz" style="width: 3rem" class="aui-img-round user-img"/>
  3. <input type="file" accept="image/*" id="file-txz" name="file" onchange="upload('#file-txz', '#img-txz');" class="fileInput" value="" />
  4. </div>

css样式

  1. 图片和input按钮的div一定是relative或者absolute
  2. input按钮 opacity: 0;设置透明,隐藏效果
  3. 设置头像和input按钮的位置,两者重叠后。点击图片即点击了按钮。
    最终目的是让input绝对定位到和图片重合的位置,input按钮设置为和图片一样的大小。这样就实现了点击图片是点击按钮的功能。

    .aui-info {

    1. position: relative;

    }

    .fileInput{

    1. position: absolute;
    2. top: 0;
    3. bottom: 0;
    4. left: 0;
    5. right: 0;
    6. opacity: 0;
    7. display: block;
    8. width: 3.5rem;
    9. clear: both;
    10. display: block;
    11. margin: auto;
    12. background-color: red;
    13. }

step2 实现图片上传后预览

html部分同上,当图片上传后input的value改变,这时触发upload的函数。按照我的demo传入参数即可。

  1. <script type="text/javascript">
  2. var upload = function (c, d) {
  3. "use strict";
  4. var $c = document.querySelector(c),
  5. $d = document.querySelector(d),
  6. file = $c.files[0],
  7. reader = new FileReader();
  8. reader.readAsDataURL(file);
  9. reader.onload = function (e) {
  10. $d.setAttribute("src", e.target.result);
  11. };
  12. };
  13. </script>

结语

以上是思路,具体头像的圆形效果和位置,这个大家自己按照自己的方式实现即可。重点是原理,以后按照这个方法可以实现任何场景下,点击图片上传文件并预览的功能。

发表评论

表情:
评论列表 (有 0 条评论,1046人围观)

还没有评论,来说两句吧...

相关阅读