搜尋
首頁web前端css教學使用 CSS 實作一個簡單的骨架螢幕(Skeleton Screen)

使用 CSS 實作一個簡單的骨架螢幕(Skeleton Screen)

前言

在載入網路資料時,為了提升使用者體驗,通常會使用一個轉圈圈的loading動畫,或是使用Skeleton Screen佔位。相較於loading動畫,Skeleton Screen的效果更生動,實現起來也很簡單。利用CSS就可以實作一個簡單的Skeleton Screen。 (什麼是骨架螢幕(Skeleton Screen)?

推薦學習:CSS影片教學CSS教學(圖文)

想法

  • HTML建立骨架

  • CSS加上樣式

  • CSS加動畫

從搭建骨架開始

骨架結構很簡單,只是隨意的放幾個你喜歡的區塊級元素就ok了。

<p>
  </p>
        
  •     
  •     
  •   

你看,就是這樣簡簡單單。

CSS著色

我們常看到的骨架螢幕是這個樣子的

使用 CSS 實作一個簡單的骨架螢幕(Skeleton Screen)

為了方便描述,增強對比,我會先做一個鬼畜版的

使用 CSS 實作一個簡單的骨架螢幕(Skeleton Screen)

#先利用css的linear-gradient 屬性畫一個紅中帶點綠的漸變圖片,並把它當作背景填充給li標籤

#linear-gradient()可以創建一個多種顏色線性漸變的圖片,想了解更多可以看這裡

li{    background-image: linear-gradient(90deg, #ff0000 25%, #41de6a 37%, #ff0000 63%);    width: 100%;    height: 0.6rem;    list-style: none;
}
使用 CSS 實作一個簡單的骨架螢幕(Skeleton Screen)

#實際使用中將漸層圖換成正常的顏色,如:background-image: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%)

讓它動起來

#要做的就是讓中間的綠色動起來

你可以想有什麼辦法讓它動?

這裡用到的是,透過拉伸背景圖片,動態設定背景定位百分比,改變背景定位,從而計算得到圖片相對容器的不同偏移值,以此實現了動畫的效果。

li{    background-image: linear-gradient(90deg, #ff0000 25%, #41de6a 37%, #ff0000 63%);    width: 100%;    height: 0.6rem;    list-style: none;    background-size: 400% 100%;    background-position: 100% 50%;    animation: skeleton-loading 1.4s ease infinite;
}

@keyframes skeleton-loading {
  0% {    background-position: 100% 50%;
  }
  100% {    background-position: 0 50%;
  }
}

這裡給background-position屬性設定了兩個值,第一個值代表水平位置相對容器的偏移,第二個代表垂直位置相對容器的偏移。

使用百分比設定background-position值時,它會執行一個計算實際定位值公式(container width - image width) * (position x%) = (x offset value),即容器和圖片的寬度差乘以設定的百分比定位值,得到的結果就是實際的偏移值,將background-size的寬度設定為400%的其中一個目的就是,這樣就會和容器產生寬度差。

有同學可能會問,將background-size值設為50%,也可以和容器產生寬度差。是的,但是這樣,背景圖片會平鋪整個容器,你會驚訝的發現,綠點變成了double。

你可以試著為background-size設定不同的值,觀察它的表現,並想為什麼會這樣。

最後利用關鍵影格動畫,設定background-position在x座標的值從100%0%

@keyframes skeleton-loading {
  0% {    background-position: 100% 50%;
  }
  100% {    background-position: 0 50%;
  }
}

假設容器的寬度是100px,那麼背景圖片的寬度就是400px,利用上邊的公式,第一幀的動畫中,背景圖相對容器偏移的真實值是

(100px-400px)*100% = -300px

最後一幀實際偏移

(100px-400px)*0% = 0

動畫的過程實際上就是一個3倍容器寬的線性背景圖片相對於容器的偏移從-300px 0的變化的過程。

更多相關教學推薦:《PHP程式設計入門教學

#

以上是使用 CSS 實作一個簡單的骨架螢幕(Skeleton Screen)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:juejin。如有侵權,請聯絡admin@php.cn刪除
CSS的優勢是什麼?CSS的優勢是什麼?Apr 28, 2025 pm 05:17 PM

本文討論了CSS在Web開發中的優勢,重點是將內容與演示分離,增強可維護性和改善用戶體驗。

我們為什麼使用CSS?我們為什麼使用CSS?Apr 28, 2025 pm 05:16 PM

CSS對於造型網頁,將設計與內容分開,確保一致性以及增強響應能力,維護和用戶體驗至關重要。

丟失的CSS技巧cohost.org丟失的CSS技巧cohost.orgApr 25, 2025 am 09:51 AM

在這篇文章中,布萊克·莫里(Blackle Mori)向您展示了一些駭客,同時試圖推動同位HTML支持的極限。如果您敢於使用這些,以免您也被標記為CSS罪犯。

光標的下一個CSS樣式光標的下一個CSS樣式Apr 23, 2025 am 11:04 AM

具有CSS的自定義光標很棒,但是我們可以將JavaScript提升到一個新的水平。使用JavaScript,我們可以在光標狀態之間過渡,將動態文本放置在光標中,應用複雜的動畫並應用過濾器。

世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測世界碰撞:使用樣式查詢的鑰匙幀碰撞檢測Apr 23, 2025 am 10:42 AM

互動CSS動畫和元素相互啟動的元素在2025年似乎更合理。雖然不需要在CSS中實施乒乓球,但CSS的靈活性和力量的增加,可以懷疑Lee&Aver Lee有一天會成為一種

使用CSS背景過濾器進行UI效果使用CSS背景過濾器進行UI效果Apr 23, 2025 am 10:20 AM

有關利用CSS背景濾波器屬性來樣式用戶界面的提示和技巧。您將學習如何在多個元素之間進行背景過濾器,並將它們與其他CSS圖形效果集成在一起以創建精心設計的設計。

微笑嗎?微笑嗎?Apr 23, 2025 am 09:57 AM

好吧,事實證明,SVG的內置動畫功能從未按計劃進行棄用。當然,CSS和JavaScript具有承載負載的能力,但是很高興知道Smil並沒有像以前那樣死在水中

'漂亮”在情人眼中'漂亮”在情人眼中Apr 23, 2025 am 09:40 AM

是的,讓#039;跳上文字包裝:Safari Technology Preview In Pretty Landing!但是請注意,它與在鉻瀏覽器中的工作方式不同。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),