Skip to content

msidolphin/vue-skeleton

Repository files navigation

vue-skeleton

A simple skeleton component powered by vue.js

Usage

Install

npm install ve-skeleton -S

Import

import VueSkeleton from 've-skeleton'
import 've-skeleton/index.css'

Vue.use(VueSkeleton)

Use

<template>
  <div id="app">
    <!-- basic -->
    <ve-skeleton/>
    <!-- with avatar -->
    <ve-skeleton avatar/>
    <!-- complex combination -->
    <ve-skeleton avatar vertical-align="middle" :title="{width: 80}" :paragraph="{rows: 4, width: 61}"/>
    <!-- with slot -->
    <ve-skeleton :loading="loading" 
      :avatar="{size: 100}"
      vertical-align="middle"
      :title="{width: 80}"
      :paragraph="{rows: 4, width: 61}">
      <div class="demo">
        <div class="demo-left">
          <img src="./avatar.jpg"/>
        </div>
        <div class="demo-right">
          <div class="title">vue-skeleton</div>
          <ul class="paragraph">
            <li>a simple skeleton component powered by vue.js</li>
            <li>a simple skeleton component powered by vue.js</li>
            <li>a simple skeleton component powered by vue.js</li>
          </ul>
        </div>
      </div>
    </ve-skeleton>
    <button style="margin-top: 20px;" @click="toggle">toggle</button>
  </div>
</template>

<script>
export default {
  name: 'App',
  data () {
    return {
      loading: true
    }
  },
  methods: {
    toggle () {
      this.loading = !this.loading
    }
  }
}
</script>

<style lang="less">
.demo {
  display: table;
  width: 100%;
  &-left {
    display: table-cell;
    padding-right: 16px;
    vertical-align: middle;
    img {
      width: 100px;
      height: 100px;
      border-radius: 50%;
      object-fit: cover;
    }
  }
  &-right {
    display: table-cell;
    width: 100%;
    vertical-align: middle;
    .title {
      margin-top: 16px;
    }
    ul {
      margin: 0;
      padding: 0;
      margin-top: 28px;
      li {
        margin-top: 12px;
        list-style: none;
        &:first-child {
          margin-top: 0;
        }
      }
    }
  }
}

</style>

Props

ve-skeleton

Attribute Type Description Default Accepted values
loading boolean display the skeleton when true true -
animated boolean animation effect true -
avatar boolean, object show avatar placeholder false -
title boolean, object show title placeholder true -
paragraph boolean, object, array show paragraph placeholder true -
verical-align string verical alignment top top, middle, bottom
align string avatar placement left left, right

avatar

Attribute Type Description Default Accepted values
size number, string the size of avatar, default unit is px 40 -
shape string the shape of avatar circle circle, square

title

Attribute Type Description Default Accepted values
width number, string the width of title, default unit is % 38 -

paragraph

When paragraph is an Array, every elements have width config

Attribute Type Description Default Accepted values
rows number the row count of paragraph 3 -
width number width of a paragraph. when paragraph is a Object, it can only set the last row width. the default unit is % 61 -

Slots

Attribute Description
- displayed sub component when loading is false

License

MIT

Copyright © 2019-present, msidolphin

About

A simple skeleton component powered by vue.js

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published