前端中骨架屏的三种运用方式介绍

 更新时间:2025年05月21日 08:34:19   作者:拉不动的猪  
这篇文章主要为大家详细介绍了前端中骨架屏的三种运用方式,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下

一、骨架屏的三大运用方式及案例

1.静态HTML/CSS方案

<!-- 电商商品详情页案例 -->
<div class="skeleton-container">
  <div class="skeleton-header"></div>
  <div class="skeleton-gallery">
    <div class="skeleton-image"></div>
    <div class="skeleton-thumbnails">
      <div class="skeleton-thumb"></div>
      <div class="skeleton-thumb"></div>
    </div>
  </div>
  <div class="skeleton-content">
    <div class="skeleton-line" style="width:80%"></div>
    <div class="skeleton-line" style="width:60%"></div>
  </div>
</div>

<style>
.skeleton-image {
  background: linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 50%,#f2f2f2 75%);
  animation: shimmer 1.5s infinite;
  height: 300px;
}
@keyframes shimmer {
  to { background-position-x: -200%; }
}
</style>

关键点:通过CSS动画模拟加载效果,需精确匹配真实DOM结构

2.组件化方案(Vue/React)

// Vue动态骨架屏组件
<template>
  <div v-if="loading" class="skeleton-wrapper">
    <SkeletonItem v-for="i in 5" :key="i" 
      :width="i===1 ? '80%' : '100%'" 
      :height="i===1 ? '24px' : '16px'"/>
  </div>
  <div v-else>
    <ActualContent :data="contentData"/>
  </div>
</template>

<script>
export default {
  components: {
    SkeletonItem: {
      props: ['width','height'],
      template: `<div class="skeleton-item" :style="{width, height}"/>`
    }
  }
}
</script>

优势:可复用组件,动态控制显示状态

3.自动化生成方案

// 使用vue-skeleton-webpack-plugin
const SkeletonWebpackPlugin = require('vue-skeleton-webpack-plugin');

module.exports = {
  configureWebpack: {
    plugins: [
      new SkeletonWebpackPlugin({
        webpackConfig: {
          entry: './src/skeleton.js'
        },
        minimize: true,
        quiet: true
      })
    ]
  }
}

特点:通过路由匹配自动生成对应骨架屏

二、关键实现要点

1.视觉一致性原则

  • 占位元素需与真实内容布局1:1对应
  • 使用与UI风格协调的渐变色系
  • 动画持续时间控制在1-1.5秒

2.性能优化策略

  • 骨架屏代码应控制在5KB以内
  • 避免使用图片资源,纯CSS实现
  • 与PWA的预缓存策略结合使用

3.状态管理规范

// 鸿蒙APP中的状态管理案例
Page({
  data: {
    loading: true,
    error: false,
    empty: false
  },
  onLoad() {
    fetchData().then(res => {
      this.setData({ 
        loading: false,
        list: res.data || []
      });
    }).catch(() => {
      this.setData({ error: true });
    });
  }
})

最佳实践:需处理加载失败/数据为空等边界情况

到此这篇关于前端中骨架屏的三种运用方式介绍的文章就介绍到这了,更多相关前端骨架屏运用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript匿名函数之模仿块级作用域

    JavaScript匿名函数之模仿块级作用域

    这篇文章主要介绍了JavaScript匿名函数之模仿块级作用域的相关资料,需要的朋友可以参考下
    2015-12-12
  • javascript中apply/call和bind的使用

    javascript中apply/call和bind的使用

    本文主要介绍了javascript中apply/call和bind的使用。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 如何使用uniapp开发微信小程序获取当前位置详解

    如何使用uniapp开发微信小程序获取当前位置详解

    uni-app小程序项目无法直接获取到地理位置,只能通过获取到的经纬度,调用第三方地图Api获取,下面这篇文章主要给大家介绍了关于如何使用uniapp开发微信小程序获取当前位置的相关资料,需要的朋友可以参考下
    2022-10-10
  • js跨域访问示例(客户端/服务端)

    js跨域访问示例(客户端/服务端)

    有关跨域访问的的文章,可以搜到很多,基本上大同小异,下面有个不错的访问示例,大家可以参考下
    2014-05-05
  • 使用JS实现图片轮播的实例(前后首尾相接)

    使用JS实现图片轮播的实例(前后首尾相接)

    下面小编就为大家带来一篇使用JS实现图片轮播的实例(前后首尾相接)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • JS实现transform实现扇子效果

    JS实现transform实现扇子效果

    这篇文章主要为大家详细介绍了JS实现transform实现扇子效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • JS 组件系列之 bootstrap treegrid 组件封装过程

    JS 组件系列之 bootstrap treegrid 组件封装过程

    最近产品需要设计一套相对完整的组织架构的解决方案,由于组织架构涉及到层级关系,在表格里面展示层级关系,自然就要用到所谓的treegrid。下面小编通过本文给大家分享JS 组件系列之 bootstrap treegrid 组件的封装过程,需要的朋友可以参考下
    2017-04-04
  • uniapp @click事件冒泡问题解决示例

    uniapp @click事件冒泡问题解决示例

    这篇文章主要为大家介绍了uniapp @click事件冒泡问题解决示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 使用JavaScript实现等比缩放的几种常见方法

    使用JavaScript实现等比缩放的几种常见方法

    这篇文章主要介绍了如何使用JavaScript对HTML中的元素和任意DOM元素进行等比缩放,通过获取容器或元素的尺寸信息,计算缩放比例,并应用CSS变换(transform属性)来实现等比缩放,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • JS 实现双色表格实现代码

    JS 实现双色表格实现代码

    通过为<tr>元素添加属性或类型选择器,再通过CSS设置可以实现双色表格,但如果表格很长,逐个元素添加可真麻烦。而且这样的代码维护起来不容易。所以比较好的方式是用JS实现。
    2009-11-11

最新评论