项目作者: lossendae

项目描述 :
An avatar component for VueJS 2.0
高级语言: JavaScript
项目地址: git://github.com/lossendae/vue-avatar.git
创建时间: 2018-05-30T19:57:36Z
项目社区:https://github.com/lossendae/vue-avatar

开源协议:MIT License

下载


VueAvatar CircleCI

Avatar component for VueJS 2

  • Use username to create letter avatar (up to 3 chars)
  • If an image src is provided, will try to use it as avatar
  • Images are lazy loaded. If it is not loaded successfully, it will not be used (letter avatar as fallback)

Installation

  1. npm install --save @lossendae/vue-avatar

Usage

ES6

  1. import Vue from 'vue'
  2. import VueAvatar from '@lossendae/vue-avatar'
  3. // If not installed globally
  4. export default {
  5. ...
  6. components: {
  7. VueAvatar
  8. },
  9. ...
  10. }

CommonJS

  1. const Vue = require('vue')
  2. const VueAvatar = require('@lossendae/vue-avatar')
  3. // In your component if not installed globally
  4. Vue.extend({
  5. ...
  6. components: {
  7. 'vue-avatar': VueAvatar.VueAvatar
  8. },
  9. ...
  10. })

Make available globally

  1. Vue.component('vue-avatar', VueAvatar)

Usage

  1. <vue-avatar :username="'Franck Zappatta'" :src="'/path/to/img'"></vue-avatar>

Props

Name Type Required Default Description
username String true - String used for the letter avatar (up to three characters)
size Number false 50 Size in pixels of the avatar
src String false - Optional image source path to use for the avatar
colors Array false DEFAULT_COLORS[] (see below) Pool of colors used for avatar background image (expect array of hsl values)
borderRadius Number false 50 Value of the border radius for the avatar
customStyles Object false {} Custom style object to merge with the default style
delay Number false 0 * See below

delay prop

Specify the delay in milliseconds to wait before attempting to load the image src.

This allows to show the letter avatar for the given time and then eventually load the image.

Vue-avatar uses vuejs built-in transitions to let you switch smoothly between the letters and the image.

By default, the transition will not do anything, but with a little bit of css you can for example flip the avatar to the image once loaded :

  1. /* Add this to your css file or into your component style to flip the avatar into the image if the image is loaded successfully */
  2. /* The animation should also be triggered when the prop src changes */
  3. .vue-avatar-enter-active {
  4. animation: vue-avatar-in .8s;
  5. }
  6. .vue-avatar-leave-active {
  7. animation: vue-avatar-in reverse;
  8. }
  9. @keyframes vue-avatar-in {
  10. from {
  11. transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
  12. animation-timing-function: ease-in;
  13. opacity: 0;
  14. }
  15. 40% {
  16. transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
  17. animation-timing-function: ease-in;
  18. }
  19. 60% {
  20. transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
  21. opacity: 1;
  22. }
  23. 80% {
  24. transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
  25. }
  26. to {
  27. transform: perspective(400px);
  28. }
  29. }
  30. @keyframes vue-avatar-out {
  31. from {
  32. transform: perspective(400px);
  33. }
  34. 30% {
  35. transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
  36. opacity: 1;
  37. }
  38. to {
  39. transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
  40. opacity: 0;
  41. }
  42. }

The above transition was made using animate.css

Default colors

vue-avatars

In you want to override those colors, use the colors props by passing an array of hsl colors

See below the values used for the above example:

  1. const COLORS_HSL = [
  2. [6, 71, 60],
  3. [340, 85, 66],
  4. [291, 49, 60],
  5. [263, 49, 63],
  6. [232, 46, 64],
  7. [218, 93, 67],
  8. [187, 73, 70],
  9. [187, 73, 58],
  10. [175, 43, 50],
  11. [151, 44, 53],
  12. [88, 53, 59],
  13. [66, 73, 59],
  14. [51, 95, 53],
  15. [47, 100, 49],
  16. [40, 100, 50],
  17. [16, 100, 69],
  18. [0, 0, 76],
  19. [201, 17, 62],
  20. [17, 16, 56],
  21. [0, 0, 64],
  22. [233, 47, 79],
  23. [262, 49, 74],
  24. [0, 0, 76],
  25. [187, 73, 70],
  26. [15, 15, 69],
  27. [88, 52, 67],
  28. ]

You can see the component in action in this codesandbox

Development

  1. # Install dependencies
  2. yarn install
  3. # run the unit tests
  4. yarn test
  5. # Build
  6. yarn build

License

MIT