前言

这个库叫 vue-select-avatar,为什么推荐这个库呢,正常在一个网站更换头像,大部分都是点击选择头像按钮或是点击头像位置,然后出来一个对话框,或者直接就直接弹出文件管理器页面,让你选择一张合适的图片作为头像,然后就展示一个缩略图,下面就是确定、取消按钮,点确定就提交服务器。这是一个大部分网站的选择头像的流程。当这个中间貌似少了一步,就是用户不能选择需要图片的那一部分,比如放大、在移动到需要的部分,这个库就解决了这个问题,就像微信选择头像那样,当然这个库不能像微信那样在移动端做到那么的丝滑(这是因为在移动端浏览器双指放大很容易触发浏览器原生的的放大事件),但在PC端我们可以通过简单的鼠标操作就能实现这个效果。

效果展示

下面是演示:

PC端

移动端

当然这个库还支持移动端(因为容易触发浏览器原生放大事件的原因,因此移动端的缩放是通过按钮来实现的),这里用电脑模拟手机操作

效果图:

这个库最大的好处是,它返回的图片的是正方形的,很好的避免了上传的图片的宽高不一致导致的显示问题

夜间模式

还有这个库支持夜间模式:

不同主题色

同时还可以设置不同的主题色:

使用

说了怎么多来看怎么使用吧

首先下载

npm i vue-select-avatar

使用也非常简答它是一个函数,传入一个配置对象,它是Promise风格的所以通过.then获取数据,支持返回两种数据,base64 和 file 文件对象,下面是基本使用:

// 导入
import selectAvatars from 'vue-select-avatars' export default {name: 'App',methods:{click(){// 使用selectAvatars({ // 配置项nightMode: true, // 是否为夜间模式}).then(data=>{console.log('数据:', data)}).catch(err=>{ // 错误处理switch(err.code){case 0 :console.log('图片格式错误')break;case 1 :console.log('图片文件过大')break;case 2 :console.log('图片尺寸过大')break;}})}},
}

配置项

这个包还有很多的配置项,如设置返回图片的最大尺寸,设置选择图片的最小尺寸等等,下面是具体的配置表:

参数 说明 类型 可选值 默认值
returnType 返回的数据格式 string base64 / file base64
nightMode 是否为夜间模式 boolean false
title 标题 string 选择头像
maskLayer 是否出现遮罩层 boolean true
beforeClose 点击遮罩层和右上角叉的回调函数,关闭前调用这个函数,并传入一个函数形参。需调用传入的函数才可关闭窗口 function
cancelButtonText 取消按钮文本 string 取消
confirmButtonText 确定按钮文本 string 确定
zoomRatio 最大放大倍数 number 6
accept 选择的文件格式,数组:['png', 'jpeg']、通配符:"*" array / string *
maxKB 文件最大KB值 number 2048
edgeLine 是否展示边缘线 boolean true
edgeLineOpacity 边缘线透明度(0.0 - 1.0) number 0.8
themeColor 主题色(16进制颜色代码) string #409EFF
minSize 用户选择的图片的宽高不能低于设置的值(设置合理的值可以保证头像的清晰度) number 0
avatarMaxSize 是否开启返回头像最大尺寸(开启后最终返回的图片的宽高大于设置的值时,将会把图片的宽高改为设置的值,可以保证返回的头像不会太大) boolean false
returnAvatarMaxSize 返回头像最大尺寸(需要开启 avatarMaxSize 才可生效) number 512

错误处理

用错误代码,判断是那种错误 ,通过错误对象的 code 属性获取

例:

selectAvatars({nightMode: true,
}).then(data=>{console.log('数据:', data)}).catch(err=>{switch(err.code){ // 错误代码case 0 :console.log('图片格式错误')break;case 1 :console.log('图片文件过大')break;case 2 :console.log('图片尺寸过大')break;}
})

错误代码表:

错误代码值(number) 说明
0 图片格式错误
1 图片文件过大
2 图片尺寸过大

使用注意:

1、在移动端使用时需开启“移动端理想视口”,否则弹出的对话框的比例将过小

在 head 标签内添加如下代码即可开启

 <meta name="viewport" content="width=device-width,initial-scale=1.0">

2、图片最终返回的大小是根据,图片原始大小和放大比例来裁剪的,并不是根据对话框的大小,如果图片很大,放大比例假如为1的话,那么返回的图片就会很大,若图片很小,放大比例也为1的话,那么返回的图片就会很小。

3、目前仅支持 vue2 对 vue3 不兼容

为什么我会推荐这个包呢,还知道这么多,因为这个就是我写的。

感觉有点王婆卖瓜自卖自夸的感觉了

写的不好,还请见谅。若有错误,烦请指出,谢谢

推荐一个基于vue选择头像的库相关推荐

  1. html5快速开发模板生成器,推荐一个基于Vue 的 H5 快速开发模板

    本项目以基于 vue-cli4 和 Vant-ui 搭建的,进行移动端开发中的一些最佳实践方案 模板地址 动动你的小手点颗star 样式适配 在移动端网页开发时,样式适配始终是一个绕不开的问题.对此目 ...

  2. 如何开发一个基于 Vue 的 ui 组件库

    如何开发一个基于 Vue 的 ui 组件库 开发模式 预览 demo 在开发一个 ui 组件库时,肯定需要一边预览 demo,一边修改代码. 常见的解决方案是像开发一般项目一样使用 webpack-d ...

  3. 推荐一个基于 Vue 的低代码平台

    发现了一个开源的低代码平台项目,用户仅仅通过简单的拖拉拽就能生成一个页面.交互方式类似于创客贴.Processon平台. 这个项目基于 Vue.js 技术栈,先来看这个开源项目有什么功能,平台主页面分 ...

  4. 推荐一个基于 Vue 的前端界面可视化设计器项目

    点击▲关注 "爪哇笔记"   给公众号标星置顶 更多摄影技巧 第一时间直达 简介 基于 Vue 开发的界面可视化设计器,前端小白可以直接拖拽生成前端代码. 特性 可视化拖拽布局 支 ...

  5. json可视化编辑器_推荐一个基于 Vue 的前端界面可视化设计器项目

    简介 基于 Vue 开发的界面可视化设计器,前端小白可以直接拖拽生成前端代码. 特性 可视化拖拽布局 支持数据关联和交互行为的可视化编辑 支持扩展组件.组件属性.属性编辑器 依赖 vjform,可视化 ...

  6. vue lang_推荐一个基于Vue 的 H5 快速开发模板

    关注 Vue社区,回复"加群" 加入我们一起学习,天天进步 praise juejin.im/post/5e612534e51d4527017971a2 模板基于 vue-cli4 ...

  7. python 文字识别 准确率_关于OCR图片文本检测、推荐一个 基于深度学习的Python 库!...

    大家好,我是 zeroing~ 1,前言 之前谈到图片文本 OCR 识别时,写过一篇文章介绍了一个 Python 包 pytesseract ,具体内容可参考 介绍一个Python 包 ,几行代码可实 ...

  8. 推荐一个基于 Python + Vue 的海报生成器

    推荐一个基于 Vue.js 的海报生成器开源项目,像海报编辑器此类的低代码平台更多的开发量在前端,所以说这是前端工程师不错的练手项目,实现起来比管理系统有趣多了. 01.  海报生成器 前几天也推荐过 ...

  9. 使用webpack4搭建一个基于Vue的组件库

    组内负责的几个项目都有一些一样的公共组件,所以就着手搭建了个公共组件开发脚手架,第一次开发 library,所以是参考着 iview 的配置来搭建的.记录如何使用webpack4搭建一个library ...

最新文章

  1. Maven项目Spring Boot启动
  2. Page 的生命周期学习小结
  3. 找工作是一种必须的生活阅历
  4. [Apache] Apache 從 2.2 換至 2.4 httpd.conf 的調整筆記 (windows 環境)
  5. Spring AOP编程-传统AOP开发切点表达式写法介绍
  6. java神剑30变_改动对比 - 神剑养成(一) (MengSword1) - MC百科|最大的Minecraft中文MOD百科...
  7. 太骚了!Python模型完美切换SAS,还能这么玩。。
  8. 场景理解_7分钟理解JS的节流、防抖及使用场景
  9. 获取map第一个的key和value_Hadoop学习之路(3)Map-Shuffle-Reduce详解与源码
  10. openwrt固件_openwrt固件
  11. python属性管理(1):基础
  12. Android 分贝测试仪功能
  13. 怎么换证件照底色?分享两款好用的免费制作证件照的软件
  14. 服务器主机是什么系统版本,服务器主机是什么系统
  15. 2019icpc徐州站 H题 Yuuki and a problem(树套树(树状数组套主席树))
  16. python是商业组织吗_基于Python的电子商务系统的弹性架构与思考
  17. ES聚合查询详解(四):管道聚合
  18. iSCSI存储技术全攻略【存储部落】云存储|云计算|云服务
  19. 基于LBP纹理特征计算GLCM的纹理特征统计量+SVM/RF识别纹理图片
  20. UG10.0汽车大模钢料编程带刀路3D图档

热门文章

  1. CS和BS的区别以及优缺点
  2. CF614A【签到题】
  3. 获取 今天零点 时间戳
  4. 计算机毕设(附源码)JAVA-SSM佳音大学志愿填报系统
  5. linux系统如何配置下载源及中文(保姆级教程)
  6. Java开发需要学什么!java软件工程师简历格式模板
  7. marquee标签各种文字滚动
  8. DedeCMS历史漏洞复现之代码执行漏洞
  9. embed标签的使用
  10. UML自学手册___事务模式