线上体验地址https://jsfiddle.net/z13wtr0q/。先说优缺点,毕竟骨架屏实现的方案有很多种。
通过伪元素实现骨架样式,通过操作样式实现骨架和页面的动态切换
通过after伪元素生成骨架样式,并通过absolute覆盖到实际元素上
.skt-loading {
pointer-events: none; /* 加载中阻止事件 */
.skeleton {
position: relative;
overflow: hidden;
border: none !important;
border-radius: 5px;
background-color: transparent !important;
background-image: none !important;
&::after {
content: '';
position: absolute;
left: 0;
top: 0;
z-index: 9;
width: 100%;
height: 100%;
background-color: #EBF1F8;
display: block;
}
/* 下面这部分都是自定义的,看需求修改 */
&:not(.not-round)::after {
border-radius: 4px;
}
&:not(.not-before)::before {
position: absolute;
top: 0;
width: 30%;
height: 100%;
content: "";
background: linear-gradient(to right,rgba(255,255,255,0) 0,
rgba(255,255,255,.3) 50%,rgba(255,255,255,0) 100%);
transform: skewX(-45deg);
z-index: 99;
animation: skeleton-ani 1s ease infinite;
display: block;
}
&.badge {
&::after {
background-color: #F8FAFC;
}
}
}
}
@keyframes skeleton-ani { /* 骨架屏动画 */
from {
left: -100%;
}
to {
left: 150%;
}
}
只需要在你认为合理的骨架粒度元素上添加skeleton类即可
控制好skt-loading类的切换
after伪元素无法插入到inputimg等非容器元素中,所以如果需要添加skleton,则需要再加一层元素将其包裹
对于像vuereact数据驱动页面需要先有mock数据以生成dom
原文:https://segmentfault.com/a/1190000020437426
一份来自 Akamai 的研究报告显示,在对 1048 名网购户进行采访后发现:约 47% 的用户期望他们的页面在两秒之内加载完成。如果页面加载时间超过 3s,约 40% 的用户会选择离开或关闭页面。
让我们先来看一下时间线,打开 Chrome Devtool 中性能面板:不难发现,在 HTML 下载完毕之后,浏览器仍然需要等待样式(index.css)下载完毕才开始渲染骨架屏。
什么是骨架屏呢?骨架屏(Skeleton Screen)是指在页面数据加载完成前,先给用户展示出页面的大致结构(灰色占位图),在拿到接口数据后渲染出实际页面内容然后替换掉。Skeleton Screen 是近两年开始流行的加载控件
项目要不要 加载loading状态 通常是在项目完成后才考虑的事情,当然,有时候直接就不考虑了。开发人员的职责不只是提高性能,同时优化网络差时,请求接口缓慢导致的页面的慢渲染也是非常重要的。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!