摘要:常用于文章列表動(dòng)態(tài)列表頁(yè)等相對(duì)比較規(guī)則的列表頁(yè)面。很多項(xiàng)目中都有應(yīng)用餓了么版本知乎等網(wǎng)站中都有應(yīng)用。歡迎討論,點(diǎn)個(gè)贊再走吧
骨架屏
最近在項(xiàng)目不時(shí)有用到骨架屏的需求,所以抽時(shí)間對(duì)骨架屏的方案作了一下調(diào)研,骨架屏的實(shí)踐已經(jīng)有很多了,也有很多人對(duì)自己的方案作了介紹.在這里按照個(gè)人的理解做了一個(gè)匯總和分類,分享給大家.
關(guān)于骨架屏(簡(jiǎn)介)骨架屏就是在頁(yè)面數(shù)據(jù)尚未加載前先給用戶展示出頁(yè)面的大致結(jié)構(gòu),直到請(qǐng)求數(shù)據(jù)返回后再渲染頁(yè)面,補(bǔ)充進(jìn)需要顯示的數(shù)據(jù)內(nèi)容。常用于文章列表、動(dòng)態(tài)列表頁(yè)等相對(duì)比較規(guī)則的列表頁(yè)面。
很多項(xiàng)目中都有應(yīng)用:ex:餓了么h5版本,知乎,facebook等網(wǎng)站中都有應(yīng)用。
借個(gè)圖舉例如下:
簡(jiǎn)介中作了關(guān)于用途的說(shuō)明,但是仍然可以繼續(xù)細(xì)分:
作為spa中路由切換的loading,結(jié)合組件的生命周期和ajax請(qǐng)求返回的時(shí)機(jī)來(lái)使用.
作為首屏渲染的優(yōu)化.
第一類用途第一類用途需要自己編寫骨架屏,推薦兩個(gè)成熟方便定制的svg組件定制為骨架屏的方案
react-content-loader
vue-content-loader
作為首屏渲染(自動(dòng)化方案)該方案是餓了么在骨架屏的實(shí)踐中總結(jié)出的一套方案:
骨架屏的dom結(jié)構(gòu)和css通過(guò)離線生成后構(gòu)建的時(shí)候注入模板中的節(jié)點(diǎn)下面.
原理相關(guān)eleme骨架屏插件實(shí)現(xiàn)原理
方案的項(xiàng)目地址:page-skeleton-webpack-plugin
使用時(shí)候的注意點(diǎn):
cssUnit的配置: 需要使用自適應(yīng)的單位,按照文檔給出的選擇范圍選,直接用 px 生成的比例會(huì)不合適
puppeteer有大概80M, 安裝的時(shí)候有可能不能一次下載成功.
原理:
通過(guò) puppeteer 在服務(wù)端操控 headless Chrome 打開開發(fā)中的需要生成骨架屏的頁(yè)面,在等待頁(yè)面加載 渲染完成之后,在保留頁(yè)面布局樣式的前提下,通過(guò)對(duì)頁(yè)面中元素進(jìn)行刪減或增添,對(duì)已有元素通過(guò)層疊樣 式進(jìn)行覆蓋,這樣達(dá)到在不改變頁(yè)面布局下,隱藏圖片和文字,通過(guò)樣式覆蓋,使得其展示為灰色塊。然后 將修改后的 HTML 和 CSS 樣式提取出來(lái),這樣就是骨架屏了.其他方案
結(jié)合ssr render/prerender來(lái)使用:
事先編寫好骨架屏組件通過(guò)ssr render 解析注入html文件中(除了需要自己編寫外其實(shí)過(guò)程類似于上面的自動(dòng)化方案)參考文章
1中事先編寫好的骨架屏組件可以用圖片代替 (svg) ;或者設(shè)計(jì)師設(shè)計(jì)好.
小程序的骨架屏不存在預(yù)渲染的概念,但是還是可以通過(guò)自己預(yù)先編寫骨架屏組件放在頁(yè)面中,等到異步請(qǐng)求的數(shù)據(jù)回來(lái)后更新頁(yè)面.
廣而告之本文發(fā)布于薄荷前端周刊,歡迎Watch & Star ★,轉(zhuǎn)載請(qǐng)注明出處。
歡迎討論,點(diǎn)個(gè)贊再走吧 ????? ~文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98393.html
摘要:常用于文章列表動(dòng)態(tài)列表頁(yè)等相對(duì)比較規(guī)則的列表頁(yè)面。很多項(xiàng)目中都有應(yīng)用餓了么版本知乎等網(wǎng)站中都有應(yīng)用。歡迎討論,點(diǎn)個(gè)贊再走吧 骨架屏 最近在項(xiàng)目不時(shí)有用到骨架屏的需求,所以抽時(shí)間對(duì)骨架屏的方案作了一下調(diào)研,骨架屏的實(shí)踐已經(jīng)有很多了,也有很多人對(duì)自己的方案作了介紹.在這里按照個(gè)人的理解做了一個(gè)匯總和分類,分享給大家. 關(guān)于骨架屏(簡(jiǎn)介) 骨架屏就是在頁(yè)面數(shù)據(jù)尚未加載前先給用戶展示出頁(yè)面的大...
摘要:常用于文章列表動(dòng)態(tài)列表頁(yè)等相對(duì)比較規(guī)則的列表頁(yè)面。很多項(xiàng)目中都有應(yīng)用餓了么版本知乎等網(wǎng)站中都有應(yīng)用。歡迎討論,點(diǎn)個(gè)贊再走吧 骨架屏 最近在項(xiàng)目不時(shí)有用到骨架屏的需求,所以抽時(shí)間對(duì)骨架屏的方案作了一下調(diào)研,骨架屏的實(shí)踐已經(jīng)有很多了,也有很多人對(duì)自己的方案作了介紹.在這里按照個(gè)人的理解做了一個(gè)匯總和分類,分享給大家. 關(guān)于骨架屏(簡(jiǎn)介) 骨架屏就是在頁(yè)面數(shù)據(jù)尚未加載前先給用戶展示出頁(yè)面的大...
摘要:可以通過(guò)的提供的直接控制模擬大部分用戶操作來(lái)進(jìn)行或者作為爬蟲訪問(wèn)頁(yè)面來(lái)收集數(shù)據(jù)。 ??骨架屏是在頁(yè)面數(shù)據(jù)尚未加載完成前先給用戶展示出頁(yè)面的大致結(jié)構(gòu),直到請(qǐng)求數(shù)據(jù)返回后再顯示真正的頁(yè)面內(nèi)容;隨著單頁(yè)應(yīng)用( SPA )的越來(lái)越流行,單頁(yè)應(yīng)用的用戶體驗(yàn)也越來(lái)越得到前端開發(fā)者的關(guān)注;為了優(yōu)化用戶體驗(yàn),在數(shù)據(jù)到達(dá)用戶之前,往往會(huì)在頁(yè)面上加上 loading 的效果,而現(xiàn)在,越來(lái)越多的場(chǎng)景傾向于使...
github 地址: VV-UI/VV-UI 演示地址: vv-ui 文檔地址:skeleton 關(guān)于骨架屏介紹 骨架屏的作用主要是在網(wǎng)絡(luò)請(qǐng)求較慢時(shí),提供基礎(chǔ)占位,當(dāng)數(shù)據(jù)加載完成,恢復(fù)數(shù)據(jù)展示。這樣給用戶一種很自然的過(guò)渡,不會(huì)造成頁(yè)面長(zhǎng)時(shí)間白屏或者閃爍等情況。 常見的骨架屏實(shí)現(xiàn)方案有ssr服務(wù)端渲染和prerender兩種解決方案。這里主要通過(guò)代碼為大家展示如何一步步做出這樣一個(gè)骨架屏: show...
github 地址: VV-UI/VV-UI 演示地址: vv-ui 文檔地址:skeleton 關(guān)于骨架屏介紹 骨架屏的作用主要是在網(wǎng)絡(luò)請(qǐng)求較慢時(shí),提供基礎(chǔ)占位,當(dāng)數(shù)據(jù)加載完成,恢復(fù)數(shù)據(jù)展示。這樣給用戶一種很自然的過(guò)渡,不會(huì)造成頁(yè)面長(zhǎng)時(shí)間白屏或者閃爍等情況。 常見的骨架屏實(shí)現(xiàn)方案有ssr服務(wù)端渲染和prerender兩種解決方案。這里主要通過(guò)代碼為大家展示如何一步步做出這樣一個(gè)骨架屏: show...
閱讀 2050·2021-11-08 13:22
閱讀 2510·2021-09-04 16:40
閱讀 1155·2021-09-03 10:29
閱讀 1723·2019-08-30 15:44
閱讀 2127·2019-08-30 11:13
閱讀 2795·2019-08-29 17:07
閱讀 1972·2019-08-29 14:22
閱讀 1252·2019-08-26 14:00