广告位联系
返回顶部
分享到

浅谈只要css就能实现的骨架屏方案

css 来源:互联网搜集 作者:秩名 发布时间:2019-09-20 22:40:09 人浏览
摘要

线上体验地址 https://jsfiddle.net/z13wtr0q/ 先说优缺点,毕竟骨架屏实现的方案有很多种 优点 简单,不需要工程,不用puppeteer生成骨架dom,也不需要二次开发维护 定制程度高,想怎么搞就怎么搞 不臃肿,只给你想要的 缺点 自动化程度低,需要在骨架dom上

线上体验地址

先说优缺点,毕竟骨架屏实现的方案有很多种

优点
 

  • 简单,不需要工程,不用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

版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://www.jb51.net/css/694160.html
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计