css实现的骨架屏方案

更新日期: 2019-09-20 阅读: 3.5k 标签: 骨架屏

线上体验地址https://jsfiddle.net/z13wtr0q/。先说优缺点,毕竟骨架屏实现的方案有很多种。

优点

  • 简单,不需要工程,不用puppeteer生成骨架dom,也不需要二次开发维护
  • 定制程度高,想怎么搞就怎么搞
  • 不臃肿,只给你想要的

缺点

  • 自动化程度低,需要在骨架dom上手动添加类
  • 协同要求高,不像工程化能通过工程去约束


思路

通过伪元素实现骨架样式,通过操作样式实现骨架和页面的动态切换


实现

css部分(scss写法)

通过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%;
    }
  }


html部分

只需要在你认为合理的骨架粒度元素上添加skeleton类即可


js部分

控制好skt-loading类的切换


使用注意

after伪元素无法插入到inputimg等非容器元素中,所以如果需要添加skleton,则需要再加一层元素将其包裹

对于像vuereact数据驱动页面需要先有mock数据以生成dom

原文:https://segmentfault.com/a/1190000020437426


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/5421

一种对开发更友好的前端骨架屏自动生成方案

一份来自 Akamai 的研究报告显示,在对 1048 名网购户进行采访后发现:约 47% 的用户期望他们的页面在两秒之内加载完成。如果页面加载时间超过 3s,约 40% 的用户会选择离开或关闭页面。

让骨架屏更快渲染

让我们先来看一下时间线,打开 Chrome Devtool 中性能面板:不难发现,在 HTML 下载完毕之后,浏览器仍然需要等待样式(index.css)下载完毕才开始渲染骨架屏。

前端骨架屏自动生成方案

什么是骨架屏呢?骨架屏(Skeleton Screen)是指在页面数据加载完成前,先给用户展示出页面的大致结构(灰色占位图),在拿到接口数据后渲染出实际页面内容然后替换掉。Skeleton Screen 是近两年开始流行的加载控件

使用CSS自定义属性实现骨架屏

项目要不要 加载loading状态 通常是在项目完成后才考虑的事情,当然,有时候直接就不考虑了。开发人员的职责不只是提高性能,同时优化网络差时,请求接口缓慢导致的页面的慢渲染也是非常重要的。

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!