You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

188 lines
3.9 KiB

<template>
<view>
<view :class="[avatarClass, animationClass]" class="lx-skeleton" v-show="loading">
<view :class="[avatarShapeClass, bannerClass]" :style="{ width: avatarSize, height: avatarSize }" class="avatar-class"></view>
<view :style="{ width: rowWidth }" class="row">
<view class="row-class lx-skeleton_title" v-if="title"></view>
<view :key="index" class="row-class" v-for="(item, index) in row"></view>
</view>
</view>
<slot v-if="!loading"></slot>
</view>
</template>
<script>
/**
* skeleton 骨架屏
* @description 用于加载数据时占位图显示跟Vant-UI用法相似但比Vant-UI更灵活
* @property {Boolean} loading 是否显示骨架屏默认为true
* @property {Number | String} row 段落行数默认为3
* @property {Boolean | Number} rowWidth 段落行宽度默认为100%
* @property {Boolean | String} title 是否显示标题默认为false
* @property {Boolean | String} banner 是否显示banner默认为false
* @property {Boolean | String} animate 是否开启动画默认为false
* @property {Boolean | String} avatar 头像位置
* @property {String} avatarSize 头像大小
* @property {String} avatarShape 头像形状默认为circle
*
* */
export default {
props: {
loading: {
type: Boolean,
default: true,
},
row: {
type: Number,
default: 3,
},
title: {
type: String,
default: '',
},
avatar: {
type: String,
default: '',
},
animate: {
type: Boolean,
default: false,
},
avatarSize: { type: String },
rowWidth: {
type: String,
default: '100%',
},
avatarShape: {
type: String,
default: 'circle',
},
banner: {
type: Boolean,
default: false,
},
// avator-size:{
// type: String,
// defualt: '32px'
// }
},
computed: {
avatarClass() {
if (this.avatar == 'top') {
return ['lx-skeleton_avator__top'];
} else if (this.avatar == 'left') {
return ['lx-skeleton_avator__left'];
} else {
return '';
}
},
animationClass() {
return [this.animate ? 'lx-skeleton_animation' : ''];
},
slotClass() {
return [!this.loading ? 'show' : 'hide'];
},
avatarShapeClass() {
return [this.avatarShape == 'round' ? 'lx-skeleton_avator__round' : ''];
},
bannerClass() {
return [this.banner ? 'lx-skeleton_banner' : ''];
},
},
data() {
return {};
},
};
</script>
<style lang="scss" scoped>
.lx-skeleton {
background-color: #fff;
padding: 12px;
}
.lx-skeleton_avator__left {
display: flex;
width: 100%;
}
.lx-skeleton_avator__left .avatar-class,
.lx-skeleton_avator__top .avatar-class {
background-color: #f2f3f5;
border-radius: 50%;
width: 32px;
height: 32px;
}
.lx-skeleton_avator__left .avatar-class.lx-skeleton_avator__round,
.lx-skeleton_avator__top .avatar-class.lx-skeleton_avator__round {
border-radius: 0;
width: 32px;
height: 32px;
}
.lx-skeleton_avator__left .avatar-class {
margin-right: 16px;
}
.lx-skeleton_avator__top .avatar-class {
margin: 0 auto 12px auto;
}
.row-class {
width: 100%;
height: 16px;
background-color: #f2f3f5;
project (#1) fix: 交付物+考勤管理 chore: 关掉了treeShaking Merge remote-tracking branch &#39;origin/lucky&#39; into project chore(node-sass): 替换node-sass为sass(dart-sass) /deep/替换为::deep fix: 检查交付物传参修改 fix: 检查交付物传参修改 feat: 检查交付物 refactor: puppeteer升级v10 refactor: 重构时间刻度渲染任务 解决了时间刻度未替换的问题;解决重复渲染的问题 feat: 添加内置插件-交付物 fix: 调试定期任务bug;不能合并使用 fix: 滚动id函数优化 feat: network控制本地缓存的使用 network控制本地缓存的使用;删除了projects相关的代码 refactor(tailwindcss): tailwindcss CDN引入;移除相关配置文件及包;开启treeShaking chore: 删除vuedragable及修改运行端口为9000 refactor: 只保留project内容 feat: 细节调整,添加project-webview 准备分离project feat(phone-bind): 验证码validate feat(mp): 兼容小程序,去除window,document等 feat(bind phone): 图形验证码;短信验证码;绑定手机号 Merge remote-tracking branch &#39;origin/songsong&#39; into temp feat: 添加项目排序 feat: 绑定手机号 Merge remote-tracking branch &#39;origin/songsong&#39; into temp feat: 适配小程序;小程序登录 fix: 定期任务本地缓存和api赋值,未完成 fix(定期任务本地缓存和api赋值,未完成): 定期任务本地缓存和api赋值,未完成 fix: api 存storage feat: api封装 Merge remote-tracking branch &#39;origin/lucky&#39; into song perf: 小红点api缓存修改 feat: 缓存修改 style: indexedDB.js格式整理 feat: cache indexedDB处理 Co-authored-by: song &lt;srf428110@163.com&gt; Reviewed-on: https://dd.tall.wiki/gitea/wally/tall-mui-3-project/pulls/1
4 years ago
margin-top: 12px;
}
project (#1) fix: 交付物+考勤管理 chore: 关掉了treeShaking Merge remote-tracking branch &#39;origin/lucky&#39; into project chore(node-sass): 替换node-sass为sass(dart-sass) /deep/替换为::deep fix: 检查交付物传参修改 fix: 检查交付物传参修改 feat: 检查交付物 refactor: puppeteer升级v10 refactor: 重构时间刻度渲染任务 解决了时间刻度未替换的问题;解决重复渲染的问题 feat: 添加内置插件-交付物 fix: 调试定期任务bug;不能合并使用 fix: 滚动id函数优化 feat: network控制本地缓存的使用 network控制本地缓存的使用;删除了projects相关的代码 refactor(tailwindcss): tailwindcss CDN引入;移除相关配置文件及包;开启treeShaking chore: 删除vuedragable及修改运行端口为9000 refactor: 只保留project内容 feat: 细节调整,添加project-webview 准备分离project feat(phone-bind): 验证码validate feat(mp): 兼容小程序,去除window,document等 feat(bind phone): 图形验证码;短信验证码;绑定手机号 Merge remote-tracking branch &#39;origin/songsong&#39; into temp feat: 添加项目排序 feat: 绑定手机号 Merge remote-tracking branch &#39;origin/songsong&#39; into temp feat: 适配小程序;小程序登录 fix: 定期任务本地缓存和api赋值,未完成 fix(定期任务本地缓存和api赋值,未完成): 定期任务本地缓存和api赋值,未完成 fix: api 存storage feat: api封装 Merge remote-tracking branch &#39;origin/lucky&#39; into song perf: 小红点api缓存修改 feat: 缓存修改 style: indexedDB.js格式整理 feat: cache indexedDB处理 Co-authored-by: song &lt;srf428110@163.com&gt; Reviewed-on: https://dd.tall.wiki/gitea/wally/tall-mui-3-project/pulls/1
4 years ago
.row-class:first-child {
margin-top: 0;
}
.row {
flex: 1;
}
.lx-skeleton_avator__left .row {
width: calc(100% - 48px);
}
project (#1) fix: 交付物+考勤管理 chore: 关掉了treeShaking Merge remote-tracking branch &#39;origin/lucky&#39; into project chore(node-sass): 替换node-sass为sass(dart-sass) /deep/替换为::deep fix: 检查交付物传参修改 fix: 检查交付物传参修改 feat: 检查交付物 refactor: puppeteer升级v10 refactor: 重构时间刻度渲染任务 解决了时间刻度未替换的问题;解决重复渲染的问题 feat: 添加内置插件-交付物 fix: 调试定期任务bug;不能合并使用 fix: 滚动id函数优化 feat: network控制本地缓存的使用 network控制本地缓存的使用;删除了projects相关的代码 refactor(tailwindcss): tailwindcss CDN引入;移除相关配置文件及包;开启treeShaking chore: 删除vuedragable及修改运行端口为9000 refactor: 只保留project内容 feat: 细节调整,添加project-webview 准备分离project feat(phone-bind): 验证码validate feat(mp): 兼容小程序,去除window,document等 feat(bind phone): 图形验证码;短信验证码;绑定手机号 Merge remote-tracking branch &#39;origin/songsong&#39; into temp feat: 添加项目排序 feat: 绑定手机号 Merge remote-tracking branch &#39;origin/songsong&#39; into temp feat: 适配小程序;小程序登录 fix: 定期任务本地缓存和api赋值,未完成 fix(定期任务本地缓存和api赋值,未完成): 定期任务本地缓存和api赋值,未完成 fix: api 存storage feat: api封装 Merge remote-tracking branch &#39;origin/lucky&#39; into song perf: 小红点api缓存修改 feat: 缓存修改 style: indexedDB.js格式整理 feat: cache indexedDB处理 Co-authored-by: song &lt;srf428110@163.com&gt; Reviewed-on: https://dd.tall.wiki/gitea/wally/tall-mui-3-project/pulls/1
4 years ago
.row-class:last-child {
width: 60%;
}
.lx-skeleton_animation .row-class {
animation-duration: 1.5s;
animation-name: blink;
animation-timing-function: ease-in-out;
animation-iteration-count: infinite;
}
@keyframes blink {
50% {
opacity: 0.6;
}
}
.lx-skeleton_title {
width: 40%;
}
.show {
display: block;
}
.hide {
display: none;
}
.lx-skeleton .lx-skeleton_banner {
width: 92%;
margin: 10px auto;
height: 64px;
border-radius: 0;
background-color: #f2f3f5;
}
</style>