首页 > 开发 > CSS > 正文

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

2024-07-11 08:42:30
字体:
来源:转载
供稿:网友

线上体验地址 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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表