スケルトンスクリーン効果を実現する 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 スクリプトを動的に読み込みます。例

推薦する

使用状況分析を備えたMySQL

持つことの使用法having 句を使用すると、グループ化後にさまざまなデータをフィルター処理できます...

Vueはプライベートフィルターと基本的な使用法を定義します

プライベート フィルターとグローバル フィルターのメソッドと概念は同じですが、プライベート フィルタ...

デジタル時計効果を実現するJavaScript

この記事の例では、JavaScriptでデジタル時計効果を実装するための具体的なコードを参考までに共...

ハッシュテーブルのJavaScript実装の詳細な説明

目次1. ハッシュテーブルの原理2. ハッシュテーブルの概念3. ハッシュ競合問題1. チェーンアド...

MySQL スロークエリを通じて MySQL のパフォーマンスを最適化する方法

アクセス数が増えると、MySQL データベースへの負荷が増大します。MySQL アーキテクチャを使用...

Nginx SSL証明書設定エラーの解決策

1. はじめにWeb プロジェクトを Linux サーバーで公開する場合、SSL 証明書を構成する必...

MySQL ストレステストツールの使い方

1. MySQL 独自のストレステストツール - Mysqlslap mysqlslap は、mys...

Vuex のモジュール化と名前空間の例のデモ

1. 目的:コードの保守が容易になり、さまざまなデータの分類が明確になります。 2. store/i...

Docker Docker の保存場所を変更する コンテナイメージのサイズ制限を変更する操作

これは新しいバージョンではもう不可能なようで、推奨されません。そうでない場合は、ソフト リンクを直接...

Vue3 ページ、メニュー、ルートの使用

目次1. メニューをクリックしてジャンプ1. ページ名の統一2. 管理ページを追加3. ルートを追加...

Webサービスのリモートデバッグとタイムアウト動作原理の分析

Webサービスのリモートデバッグ.NET では、WEBSERVICE のリモート デバッグ機能はデフ...

MySql 8.0.11 のインストール プロセスと Navicat とのリンク時に発生する問題の概要

私のシステムとソフトウェアのバージョンは次のとおりです。システム環境: win7、64ビットMySQ...

CSS と HTML とフロントエンド テクノロジーのレイヤー図

フロントエンドテクノロジー層 (写真は少し極端ですが、参考までに) Javascript と DOM...

K8S クラスターを構築し、Hyper-V で Docker をインストールする方法

Win10 システムをインストールしていて、k8s クラスターを構築する場合、Win10 に付属する...

フレームセットの高さを設定する際のインターフェース変形の解決策

現在、プロジェクトを作成しました。インターフェースは次のとおりです。これはフレームセットを使用して行...