スケルトンスクリーン効果を実現する CSS

スケルトンスクリーン効果を実現する CSS

ネットワーク データを読み込むときは、ユーザー エクスペリエンスを向上させるために、通常は円形の読み込みアニメーションが使用されるか、プレースホルダーとしてスケルトン スクリーンが使用されます。読み込みアニメーションと比較すると、スケルトン スクリーン効果はより鮮明で実装が簡単です。シンプルなスケルトン スクリーンは CSS を使用して実装できます。

アイデア

  • HTML スケルトン
  • CSSスタイル
  • CSS とアニメーション

骨組みを作ることから始めましょう

スケルトン構造は非常にシンプルで、好きなブロックレベルの要素をいくつか配置するだけです。

<div class='スクリーンルート'>
  <ul>
    <li/>
    <li/>
    <li/>
  </ul>
</div>

ほら、とても簡単なんです。

CSS カラーリング

よく見かけるスケルトンスクリーンはこんな感じです

説明を容易にし、コントラストを高めるために、まずゴーストバージョンを作成します

まず、CSSのlinear-gradientプロパティを使用して、赤に緑がかったグラデーション画像を描画し、それをliの背景塗りつぶしとして使用します。

ラベル

linear-gradient() は複数の色を使った線形グラデーション画像を作成できます。詳細については、こちらをご覧ください。

li{
    背景画像: 線形グラデーション(90度、#ff0000 25%、#41de6a 37%、#ff0000 63%);
    幅: 100%;
    高さ: 0.6rem;
    リストスタイル: なし;
} 

実際に使用する場合は、グラデーション画像を通常の色に置き換えます。例: background-image: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%)

動かす

残っているのは、中央の緑色をアニメーション化するだけです

それを動かす方法を何か思いつきますか?

ここで使用されるのは、背景画像を引き伸ばし、背景配置のパーセンテージを動的に設定し、背景配置を変更し、コンテナに対する画像のさまざまなオフセット値を計算して、アニメーション効果を実現することです。

li{
    背景画像: 線形グラデーション(90度、#ff0000 25%、#41de6a 37%、#ff0000 63%);
    幅: 100%;
    高さ: 0.6rem;
    リストスタイル: なし;
    背景サイズ: 400% 100%;
    背景位置: 100% 50%;
    アニメーション: スケルトンのロード 1.4 秒、緩和時間無限;
}

@keyframes スケルトン読み込み {
  0% {
    背景位置: 100% 50%;
  }
  100% {
    背景位置: 0 50%;
  }
}

ここでは、 background-positionプロパティに 2 つの値が設定されています。最初の値はコンテナに対する水平オフセットを表し、2 番目の値はコンテナに対する垂直オフセットを表します。

パーセンテージを使用してbackground-position値を設定すると、実際の配置値を計算するための数式が実行されます(container width - image width) * (position x%) = (x offset value)に、設定されたパーセンテージ配置値が掛けられます。結果が実際のオフセット値です。background background-size幅を 400% に設定する目的の 1 つは、コンテナとの幅の差を作成することです。

学生の中には、 background-size値を 50% に設定すると、コンテナーとの幅に差が生じるのではないかと疑問に思う人もいるかもしれません。はい、しかしこの方法では背景画像がコンテナ全体にタイル表示され、緑の点が二重になることに驚かれるでしょう。

background-size にさまざまな値を設定してみて、その動作を観察し、なぜそうなるのか考えてみましょう。

最後に、キーフレームアニメーションを使用して、x座標のbackground-position値を100%から0%に設定します。

@keyframes スケルトン読み込み {
  0% {
    背景位置: 100% 50%;
  }
  100% {
    背景位置: 0 50%;
  }
}

コンテナの幅が100pxだとすると、背景画像の幅は400pxになります。上記の式を使用すると、アニメーションの最初のフレームでは、コンテナに対する背景画像のオフセットの実際の値は次のようになります。

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

最後のフレームの実際のオフセット

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

アニメーション プロセスは、実際には、コンテナーの幅の 3 倍の線形背景イメージのプロセスであり、コンテナーに対するオフセットは-300pxから0に変化します。

要約する

CSS で Skeleton Screen を実装する方法についての記事はこれで終わりです。CSS で Skeleton Screen を実装する方法についての詳細は、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  ウェブページのフッターで注意すべきことのまとめ

>>:  HTML は CSS スタイルと JS スクリプトを動的に読み込みます。例

推薦する

vue3 プロジェクトを素早く構築し、関連機能を紹介する vite+ts の詳細な説明

目次ヴィテ建てる構成vite.config.tsルーターtsタイプvue3 の知識設定小道具コンテク...

vuexの強制リフレッシュによるデータ損失問題の分析

vuex 永続状態基本原則: すべての vuex データをローカルストレージに保存し、ページが更新さ...

Linux のバックグラウンドで & と nohup を使用する方法

ターミナルやコンソールで作業しているときは、メールを読むなど、もっと重要な作業があるかもしれないので...

MySQL がデフォルトの分離レベルとして繰り返し読み取りを選択する理由

目次Oracle 分離​​レベルMySQL 分離レベル要約する多くの読者は、MySQL のトランザク...

HTML ヘッドタグの詳細な紹介

HTML のヘッド部分には、ブラウザによる Web ページのレンダリングや SEO などに関連するタ...

Flexレイアウトを使用してヘッドの固定コンテンツ領域のスクロールを実現する方法

ページ ヘッダーの固定レイアウトは、以前は position:fixed を使用して実装されていまし...

MySQL データベース インデックスの面接の質問 (基本的なプログラマー スキル)

目次導入インデックスの原則1. データページ2. ページディレクトリ3. インデックス原則分析要約す...

Vueはリストのシームレスなスクロールを実装します

この記事の例では、リストのシームレスなスクロールを実現するためのvueの具体的なコードを参考までに共...

MySQL の時間設定に関する考慮事項の詳細な要約

時間は本当に存在するのでしょうか?時間は人間が考え出した概念に過ぎず、物事の変化を測る基準に過ぎない...

MySQL でパーセンテージと最初の数パーセントを表示する方法

目次必要とする実装コードデータベース数日前、友人からこれを書くのを手伝ってほしいと頼まれました。ただ...

JavaScriptはフォームデータの非同期送信を実装します

この記事では、フォームデータの非同期送信を実装するためのJavaScriptの具体的なコードを参考ま...

グリッドはページのレイアウトプランです

<br /> 英語原文: http://desktoppub.about.com/od/...

Vueでドラッグ可能なコンポーネントを実装する方法

この記事では、Vueでドラッグ可能なコンポーネントとドラッグ可能なコンポーネントを実装する方法を参考...

CSS変数を使用してスタイルを変更する方法の例

質問js を使用して CSS 疑似クラス スタイルを変更するにはどうすればよいでしょうか?しかし、j...