前端中骨架屏的三種運(yùn)用方式介紹
一、骨架屏的三大運(yùn)用方式及案例
1.靜態(tài)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>
關(guān)鍵點(diǎn):通過CSS動(dòng)畫模擬加載效果,需精確匹配真實(shí)DOM結(jié)構(gòu)
2.組件化方案(Vue/React)
// Vue動(dòng)態(tài)骨架屏組件
<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>
優(yōu)勢(shì):可復(fù)用組件,動(dòng)態(tài)控制顯示狀態(tài)
3.自動(dòng)化生成方案
// 使用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
})
]
}
}
特點(diǎn):通過路由匹配自動(dòng)生成對(duì)應(yīng)骨架屏
二、關(guān)鍵實(shí)現(xiàn)要點(diǎn)
1.視覺一致性原則
- 占位元素需與真實(shí)內(nèi)容布局1:1對(duì)應(yīng)
- 使用與UI風(fēng)格協(xié)調(diào)的漸變色系
- 動(dòng)畫持續(xù)時(shí)間控制在1-1.5秒
2.性能優(yōu)化策略
- 骨架屏代碼應(yīng)控制在5KB以內(nèi)
- 避免使用圖片資源,純CSS實(shí)現(xiàn)
- 與PWA的預(yù)緩存策略結(jié)合使用
3.狀態(tài)管理規(guī)范
// 鴻蒙APP中的狀態(tài)管理案例
Page({
data: {
loading: true,
error: false,
empty: false
},
onLoad() {
fetchData().then(res => {
this.setData({
loading: false,
list: res.data || []
});
}).catch(() => {
this.setData({ error: true });
});
}
})
最佳實(shí)踐:需處理加載失敗/數(shù)據(jù)為空等邊界情況
到此這篇關(guān)于前端中骨架屏的三種運(yùn)用方式介紹的文章就介紹到這了,更多相關(guān)前端骨架屏運(yùn)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java遇到微信小程序 "支付驗(yàn)證簽名失敗" 問題解決
這篇文章主要介紹了java遇到微信小程序 "支付驗(yàn)證簽名失敗" 問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
微信小程序?qū)崿F(xiàn)驗(yàn)證碼倒計(jì)時(shí)效果
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)驗(yàn)證碼倒計(jì)時(shí)效果,手機(jī)登錄、填手機(jī)號(hào)獲取驗(yàn)證碼,倒計(jì)時(shí)后重新獲取效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
一文帶你詳細(xì)拆解JavaScript中Promise的原理和真實(shí)應(yīng)用
本文從中文語義出發(fā),逐層深入到 .then 源碼、resolve 與 then 的聯(lián)動(dòng)機(jī)制、await 的編譯真相,最后用一道面試實(shí)戰(zhàn)題把所有知識(shí)串起來,讀完之后,Promise 對(duì)你來說不再是一個(gè)需要記憶的 API,而是一個(gè)可以用直覺推導(dǎo)的思維模型2026-03-03
javascript開發(fā)實(shí)現(xiàn)貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了javascript開發(fā)實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07
完美實(shí)現(xiàn)js選項(xiàng)卡切換效果(二)
這篇文章主要為大家詳細(xì)介紹如何完美實(shí)現(xiàn)js選項(xiàng)卡切換效果,通過設(shè)置定時(shí)器實(shí)現(xiàn)延時(shí)0.5s切換選項(xiàng)卡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
JS實(shí)現(xiàn)勻加速與勻減速運(yùn)動(dòng)的方法示例
這篇文章主要介紹了JS實(shí)現(xiàn)勻加速與勻減速運(yùn)動(dòng)的方法,涉及javascript結(jié)合時(shí)間函數(shù)與數(shù)學(xué)運(yùn)算動(dòng)態(tài)操作頁面元素樣式的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-09-09
javascript 面向?qū)ο骹unction詳解及實(shí)例代碼
這篇文章主要介紹了javascript 面向?qū)ο骹unction詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02

