named avatar
Avatar generated by name text based on svg.
Fill <svg> as data uri into the <img> src, no added element.
如果用户没有个性头像,就填充用户名生成的<svg>头像。
程序会在 <img src> 上填充data URI,没有额外添加元素。
![]()
Installtion
npm install namedavatar --save
Usage
namedavatar is a UMD module, support Browser, Requirejs, Vue2 directive, miniprogram(小程序).
Browser
NOTE that the
<img>widthandborder-radius: 100%requires you additional settings, the program is not set.
<img id="avatar1" src="./invalid.jpg" alt="Tom Hanks" width="40" style="border-radius: 100%">
<script src="/dist/namedavatar.min.js"></script>
<!-- also support requirejs
<script>
requirejs.config({
paths: {
namedavatar: '/dist/namedavatar'
}
})
requirejs('namedavatar', function(namedavatar){
// ...
})
</script>
-->
<script>
namedavatar.config({
nameType: 'initials'
})
// fill single <img>
var img = document.getElementById('avatar1')
namedavatar.setImg(img, img.alt)
// fill multi <img>
var imgs = document.querySelectorAll('img[data-name]')
namedavatar.setImgs(imgs, 'data-name')
</script>
if img.src invalid, img#avatar1 will be:
<img id="avatar1" src="data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><rect fill="#9C27B0" x="0" y="0" width="100%" height="100%"></rect><text fill="#FFF" x="50%" y="50%" text-anchor="middle" alignment-baseline="central" font-size="16" font-family="Verdana, Geneva, sans-serif">Hanks</text></svg>">
without DOM
support like miniprogram(小程序)
import namedavatar from 'namedavatar'
// create svg html string without DOM
const svg = namedavatar.getSVGString('李连杰')
const uri = namedavatar.getDataURI(svg)
console.log(uri)
// data:image/svg+xml,%3Csvg%20...
Vue2
online example main.js
import { directive } from 'namedavatar/vue'
// register v-avatar="Tom Hanks", show firstName (default)
Vue.directive('avatar', directive);
// or set options and same as above
import namedavatarVue from 'namedavatar/vue'
// register v-avatar="Tom Hanks", show lastName
Vue.use(namedavatarVue, {
nameType: 'lastName'
})
in vue template
<template>
<img v-avatar="'Tom Hanks'" width="36"/>
</template>
API
.config(Object options)
| filed | type | default | description |
|---|---|---|---|
| nameType | string | 'firstName' |
pick from: firstName, lastName, initials |
| fontFamily | string | 'Verdana, Geneva, sans-serif' |
font family |
| backgroundColors | Array | Material Design colors *-500 | random background color list |
| textColor | string | '#FFF' |
name text color |
| minFontSize | number | 8 |
min font size limit |
| maxFontSize | number | 16 |
max font size limit |
.getSVG(string name, Object options)
namethe full name valueoptionsextended options
return <svg> node, get string by svg.outerHTML
.getSVGString(string name, Object options)
added at 1.1.0 version, special for without DOM like miniprogram(小程序)
namethe full name valueoptionsextended options
return <svg> html string
.setImg(HTMLImageElement img, string name)
img<img>itemnamethe full name value
create svg by name, and fill to <img src="data:image/svg+xml,<svg>...">
.setImgs(HTMLImageElement[] imgs, string attr)
imgs<img>listattrpick full name value from special attr, eg'alt','data-name'
create svg by attr value, batch processing setImg()
.getDataURI(string html)
html<svg>node html string
get data uri (rfc2397) of svg html
Contributing
- IE > 8 (based on svg)
- Continuous improvement, welcome review and suggest
development
npm install -g watchify
npm run dev
build assert
npm install -g browserify uglifyjs
# build UMD bundle and minify
npm run build && npm run minify
# build for vue
npm run build:vue
unit test:
npm install -g mocha
npm run test