element-plus/docs/examples/skeleton/rendering-with-data.vue
C.Y.Kun 575835a2f8
docs(components): use script setup replace defineComponent (#4849)
* docs(components): use `script setup` replace `defineComponent`

* docs(components): use setup sugar simplify `checkbox` demo

* docs(components): use setup sugar simplify `collapse` demo

* docs(components): use setup sugar simplify `color-picker` demo

* docs(components): use setup sugar simplify `config-provider` demo

* docs(components): use setup sugar simplify `container` demo

* docs(components): use setup sugar simplify `date-picker` demo

* docs(components): use setup sugar simplify `datetime-picker` demo

* docs(components): use setup sugar simplify `dialog` demo

* docs(components): use setup sugar simplify `drawer` demo

* docs(components): use setup sugar simplify `dropdown` demo

* docs(components): use setup sugar simplify `image` demo

* docs(components): use setup sugar simplify `infinite-scroll` demo

* docs(components): use setup sugar simplify `input-number` demo

* docs(components): use setup sugar simplify `loading` demo

* docs(components): use setup sugar simplify `menu` demo

* docs(components): use setup sugar simplify `message` demo

* docs(components): use setup sugar simplify `message-box` demo

* docs(components): use setup sugar simplify `notification` demo

* docs(components): use setup sugar simplify `page-header` demo

* docs(components): use setup sugar simplify `pagination` demo

* docs(components): use setup sugar simplify `popover` demo

* docs(components): use setup sugar simplify `progress` demo

* docs(components): use setup sugar simplify `radio` demo

* docs(components): use setup sugar simplify `rate` demo

* docs(components): use setup sugar simplify `scrollbar` demo

* docs(components): use setup sugar simplify `select` demo

* docs(components): use setup sugar simplify `select-v2` demo

* docs(components): use setup sugar simplify `skeleton` demo

* docs(components): use setup sugar simplify `slider` demo

* docs(components): use setup sugar simplify `space` demo

* docs(components): use setup sugar simplify `step` demo

* docs(components): use setup sugar simplify `switch` demo

* docs(components): use setup sugar simplify `tabs` demo

* docs(components): use setup sugar simplify `tag` demo

* docs(components): use setup sugar simplify `time-picker` demo

* docs(components): use setup sugar simplify `time-select` demo

* docs(components): use setup sugar simplify `timeline` demo

* docs(components): use setup sugar simplify `tooltip` demo

* docs(components): use setup sugar simplify `transfer` demo

* docs(components): use setup sugar simplify `transition` demo

* docs(components): use setup sugar simplify `tree` demo

* docs(components): use setup sugar simplify `table` demo

* docs(components): Escape character

* docs(components): use setup sugar simplify `tree-v2` demo

* docs(components): use setup sugar simplify `upload` demo

* docs(components): use `ref` to replace `reactive`

* docs(ci): use `playground` to replace `codepen`

* docs(ci): change icon from `codepen`  to `ep`

* docs(components): `sass` to `css`

* fix(components): add button CssVar

* docs(ci): change `Edit in Codepen.io` to `Edit in Playground`

* docs(ci): add vitepress i18
2021-12-21 15:51:33 +08:00

84 lines
2.3 KiB
Vue

<template>
<el-space direction="vertical" alignment="flex-start">
<el-button @click="setLoading">Click me to reload</el-button>
<el-skeleton style="width: 240px" :loading="loading" animated :count="3">
<template #template>
<el-skeleton-item variant="image" style="width: 400px; height: 267px" />
<div style="padding: 14px">
<el-skeleton-item variant="h3" style="width: 50%" />
<div
style="
display: flex;
align-items: center;
justify-items: space-between;
margin-top: 16px;
height: 16px;
"
>
<el-skeleton-item variant="text" style="margin-right: 16px" />
<el-skeleton-item variant="text" style="width: 30%" />
</div>
</div>
</template>
<template #default>
<el-card
v-for="item in lists"
:key="item.name"
:body-style="{ padding: '0px', marginBottom: '1px' }"
>
<img :src="item.imgUrl" class="image multi-content" />
<div style="padding: 14px">
<span>{{ item.name }}</span>
<div class="bottom card-header">
<span class="time">{{ currentDate }}</span>
<el-button type="text" class="button">Operation button</el-button>
</div>
</div>
</el-card>
</template>
</el-skeleton>
</el-space>
</template>
<script lang="ts" setup>
import { onMounted, ref } from 'vue'
import dayjs from 'dayjs'
interface ListItem {
imgUrl: string
name: string
}
const loading = ref(true)
const lists = ref<ListItem[]>([])
const currentDate = ref(dayjs().format('YYYY-MM-DD'))
const setLoading = () => {
loading.value = true
setTimeout(() => {
loading.value = false
}, 2000)
}
onMounted(() => {
loading.value = false
lists.value = [
{
imgUrl:
'https://fuss10.elemecdn.com/a/3f/3302e58f9a181d2509f3dc0fa68b0jpeg.jpeg',
name: 'Deer',
},
{
imgUrl:
'https://fuss10.elemecdn.com/1/34/19aa98b1fcb2781c4fba33d850549jpeg.jpeg',
name: 'Horse',
},
{
imgUrl:
'https://fuss10.elemecdn.com/0/6f/e35ff375812e6b0020b6b4e8f9583jpeg.jpeg',
name: 'Mountain Lion',
},
]
})
</script>