基于Vuejs实现 Skeleton Loading 骨架图
原文地址:https://cloud.tencent.com/developer/article/1006169
https://mp.weixin.qq.com/s/qmyn6mGrO6hRKuvKUSF8lA
https://dulinrain.github.io/css/使用Skeleton%20Screens增强网页的感知性能.html
https://codepen.io/janily/pen/rGqQgJ
index.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Document</title>
- <script src="https://cdn.bootcss.com/vue/2.5.16/vue.min.js"></script>
- <style>
- .timeline-item {
- background: #fff;
- border: 1px solid;
- border-color: #e5e6e9 #dfe0e4 #d0d1d5;
- border-radius: 3px;
- padding: 12px;
- margin: 0 auto;
- max-width: 472px;
- min-height: 200px;
- }
- @keyframes placeHolderShimmer{
- 0% {
- background-position: -468px 0
- }
- 100%{
- background-position: 468px 0
- }
- }
- .animated-background {
- animation-duration: 1s;
- animation-fill-mode: forwards;
- animation-iteration-count: infinite;
- animation-name: placeHolderShimmer;
- animation-timing-function: linear;
- background: #f6f7f8;
- background: linear-gradient(to right, #eeeeee 8%, #dddddd 18%, #eeeeee 33%);
- background-size: 800px 104px;
- height: 40px;
- position: relative;
- }
- .background-masker {
- background: #fff;
- position: absolute;
- }
- .background-masker.header-top,
- .background-masker.header-bottom,
- .background-masker.subheader-bottom {
- top: 0;
- left: 40px;
- right: 0;
- height: 10px;
- }
- .background-masker.header-left,
- .background-masker.subheader-left,
- .background-masker.header-right,
- .background-masker.subheader-right {
- top: 10px;
- left: 40px;
- height: 8px;
- width: 10px;
- }
- .background-masker.header-bottom {
- top: 18px;
- height: 6px;
- }
- .background-masker.subheader-left,
- .background-masker.subheader-right {
- top: 24px;
- height: 6px;
- }
- .background-masker.header-right,
- .background-masker.subheader-right {
- width: auto;
- left: 300px;
- right: 0;
- }
- .background-masker.subheader-right {
- left: 230px;
- }
- .background-masker.subheader-bottom {
- top: 30px;
- height: 10px;
- }
- .background-masker.content-top,
- .background-masker.content-second-line,
- .background-masker.content-third-line,
- .background-masker.content-second-end,
- .background-masker.content-third-end,
- .background-masker.content-first-end {
- top: 40px;
- left: 0;
- right: 0;
- height: 6px;
- }
- .background-masker.content-top {
- height:20px;
- }
- .background-masker.content-first-end,
- .background-masker.content-second-end,
- .background-masker.content-third-end{
- width: auto;
- left: 380px;
- right: 0;
- top: 60px;
- height: 8px;
- }
- .background-masker.content-second-line {
- top: 68px;
- }
- .background-masker.content-second-end {
- left: 420px;
- top: 74px;
- }
- .background-masker.content-third-line {
- top: 82px;
- }
- .background-masker.content-third-end {
- left: 300px;
- top: 88px;
- }
- </style>
- <body>
- <div id="app">
- <div v-for="user in users" class="items" v-if="loading">
- <user-item :name="user.name" :email="user.email"></user-item>
- </div>
- <div v-for="load in loades" v-if="!loading">
- <loading-item></loading-item>
- </div>
- </div>
- </body>
- <script>
- // https://cloud.tencent.com/developer/article/1006169
- Vue.component('user-item', {
- props: ['email', 'name'],
- template: `<div>
- <h2 v-text="name"></h2>
- <p v-text="email"></p>
- </div>`
- })
- Vue.component('loading-item', {
- template: `<div class="animated-background">
- <div class="background-masker header-top"></div>
- <div class="background-masker header-left"></div>
- <div class="background-masker header-right"></div>
- <div class="background-masker header-bottom"></div>
- <div class="background-masker subheader-left"></div>
- <div class="background-masker subheader-right"></div>
- <div class="background-masker subheader-bottom"></div>
- </div>`
- })
- var app = new Vue({
- el: '#app',
- data: {
- users: [],
- loading: false,
- loades: 10
- },
- methods: {
- getUserDetails: function() {
- fetch('https://jsonplaceholder.typicode.com/users')
- .then(result => result.json())
- .then(result => {
- this.users = result
- this.loading = true
- });
- }
- },
- beforeMount: function() {
- setTimeout(() => {
- this.getUserDetails()
- }, 3000);
- }
- });
- </script>
- </html>
基于Vuejs实现 Skeleton Loading 骨架图的更多相关文章
- Skeleton Screen -- 骨架屏--应用
案例:使用 现已经在支付的项目使用 用户体验一直是前端开发需要考虑的重要部分,在数据请求时常见到锁屏的loading动画,而现在越来越多的产品倾向于使用Skeleton Screen Loading( ...
- Skeleton Screen — 骨架屏
用户体验一直是前端开发需要考虑的重要部分,在数据请求时常见到锁屏的loading动画,而现在越来越多的产品倾向于使用Skeleton Screen Loading(骨架屏)替代,以优化用户体验. Sk ...
- 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器(图形界面版)
===================================================== 最简单的基于libVLC的例子文章列表: 最简单的基于libVLC的例子:最简单的基于lib ...
- 基于Echarts的股票K线图展示
发布时间:2018-10-31 技术:javascript+html5+canvas 概述 基于echarts的股票K线图展示,只需引用单个插件,通过简单配置,导入数据,即可实现炫酷复杂的K线 ...
- 基于jQuery果冻式按钮焦点图切换代码
基于jQuery果冻式按钮焦点图切换代码.这是一款基于jQuery+CSS3实现的图片切换代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class=&quo ...
- 基于js全屏动画焦点图幻灯片
今天给大家分享一款基于js全屏动画焦点图幻灯片.这款焦点图内的内容以动画形式出现和消失.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="sl ...
- 基于VueJS的render渲染函数结合自定义组件打造一款非常强大的IView 的Table
基于VueJS的render渲染函数结合自定义组件打造一款非常强大的IView 的Table https://segmentfault.com/a/1190000015970367
- css skeleton loading & skeleton components
css skeleton loading css & :empty See the Pen Skeleton Screen with CSS by xgqfrms (@xgqfrms) on ...
- (新手向)基于Bootstrap的简单轮播图的手机实现
个人电脑里存了不少适合手机欣赏的图片,但是放手机里看是件很占据资源的事.鉴于家里有一台电脑经常开着,正好用来做家庭局域网共享,于是笔者就设想通过一种比较简单环保的思路.通过手机访问电脑内的图片. 首先 ...
随机推荐
- [Debug] Debug Node.js Application by using Chrome Dev tools
For example you have a server.js file, and you want to debug some problems; What you can do is: node ...
- IOS遇到的问题总结
1.NSString *path = [[NSBundle mainBundle] pathForResource:@"desc" ofType @"plist" ...
- 检查许可证所需的adobe application manager 丢失或损坏
安装Adobe公司的一般都需要账号,记得以前安装Flex也是,这里提供一个公用账号: 帐号:992829179@qq.com 密码:521521 在安装Acrobat_Ⅺ_Pro_11.0.03后,弹 ...
- STL - 容器 - Array
Array是C++ 11给STL新增加的容器 ArrayTest.cpp #include <array> #include <algorithm> #include < ...
- tomcat之组成结构
1 - Tomcat Server的组成部分 1.1 - Server A Server element represents the entire Catalina servlet containe ...
- SHELL有用的命令
[root@gechong /]# find / -name "gechong*" -print [root@gechong /]# find / -name "[A-Z ...
- javascript 设计模式
了解JavaScript设计模式我们需要知道的一些必要知识点:(内容相对基础,高手请跳过) 闭包:关于闭包这个月在园子里有几篇不错的分享了,在这我也从最实际的地方出发,说说我的理解. 1.闭包最常用的 ...
- SIT与UAT的分别
在企业级软件的测试过程中,经常会划分为三个阶段——单元测试,SIT和UAT,如果开发人员足够,通常还会在SIT之前引入代码审查机制(Code Review)来保证软件符合客户需求且流程正确.下面简单介 ...
- 解决itextpdf行高问题
解法:PdfPCell.setFixedHeight(value);
- HTML字符实体举例说明
html代码的意思 <>& ©∧∨"&qpos; 下面网址有详细说明: http://en.wikipedia.org/wiki/List_of_XML_and_ ...