1.0.1 • Published 5 years ago

ve-skeleton v1.0.1

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

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

AttributeTypeDescriptionDefaultAccepted values
loadingbooleandisplay the skeleton when truetrue-
animatedbooleananimation effecttrue-
avatarboolean, objectshow avatar placeholderfalse-
titleboolean, objectshow title placeholdertrue-
paragraphboolean, object, arrayshow paragraph placeholdertrue-
verical-alignstringverical alignmenttoptop, middle, bottom
alignstringavatar placementleftleft, right

avatar

AttributeTypeDescriptionDefaultAccepted values
sizenumber, stringthe size of avatar, default unit is px40-
shapestringthe shape of avatarcirclecircle, square

title

AttributeTypeDescriptionDefaultAccepted values
widthnumber, stringthe width of title, default unit is %38-

paragraph

When paragraph is an Array, every elements have width config

AttributeTypeDescriptionDefaultAccepted values
rowsnumberthe row count of paragraph3-
widthnumberwidth of a paragraph. when paragraph is a Object, it can only set the last row width. the default unit is %61-

Slots

AttributeDescription
-displayed sub component when loading is false

License

MIT

Copyright © 2019-present, msidolphin