柔軟なスケルトン画面の構築

JavaScriptJavaScriptBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

このプロジェクトでは、Vue.jsを使って柔軟なスケルトン画面コンポーネントを作成する方法を学びます。スケルトン画面は、実際のコンテンツが読み込まれる前に、ユーザーインターフェイスの簡略化されたバージョンを表示するUIパターンであり、従来のロードインジケータと比較して、より良いユーザーエクスペリエンスを提供します。

👀 プレビュー

Skeleton screen animation preview

🎯 タスク

このプロジェクトでは、以下を学びます。

  • Vue.jsを使って再利用可能なスケルトン画面コンポーネントを作成する方法
  • 提供されたデータに基づいてスケルトン画面の構造を実装する方法
  • スケルトン画面要素に点滅アニメーションを適用する方法

🏆 成果

このプロジェクトを完了すると、以下ができるようになります。

  • Vue.jsを使って柔軟なスケルトン画面コンポーネントを作成する
  • スケルトン画面要素に動的なスタイルとクラスを適用する
  • スケルトン画面に点滅アニメーション効果を実装する

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/DOMManipulationGroup(["DOM Manipulation"]) javascript/BasicConceptsGroup -.-> javascript/obj_manip("Object Manipulation") javascript/DOMManipulationGroup -.-> javascript/dom_select("DOM Selection") javascript/DOMManipulationGroup -.-> javascript/dom_manip("DOM Manipulation") javascript/DOMManipulationGroup -.-> javascript/event_handle("Event Handling") javascript/DOMManipulationGroup -.-> javascript/dom_traverse("DOM Traversal") subgraph Lab Skills javascript/obj_manip -.-> lab-445777{{"柔軟なスケルトン画面の構築"}} javascript/dom_select -.-> lab-445777{{"柔軟なスケルトン画面の構築"}} javascript/dom_manip -.-> lab-445777{{"柔軟なスケルトン画面の構築"}} javascript/event_handle -.-> lab-445777{{"柔軟なスケルトン画面の構築"}} javascript/dom_traverse -.-> lab-445777{{"柔軟なスケルトン画面の構築"}} end

プロジェクト構造をセットアップする

このステップでは、プロジェクトファイルと構造をセットアップします。以下の手順に従ってこのステップを完了します。

プロジェクトフォルダを開きます。ディレクトリ構造は以下の通りです。

├── components
│   ├── List
│   │   ├── content.js
│   │   └── index.js
│   └── Skeleton
│       ├── index.js
│       └── item.js
├── css
│   └── style.css
├── index.html
└── lib
    └── vue.min.js

その中で:

  • index.html はメインページです。
  • components/list は提供されたリストコンポーネントです。
  • components/Skeleton はスケルトン画面コンポーネントです。
  • lib はプロジェクト依存関係を格納するフォルダです。
  • css はプロジェクトのスタイルを格納するフォルダです。

WebIDEの右下隅にある Go Live ボタンをクリックして、プロジェクトを実行します。

次に、VMの上部にある「Web 8080」を開き、手動で更新するとページが表示されます。

Initial Effect

スケルトン画面コンポーネントを作成する

このステップでは、index.html から渡されるデータ paragraph を使い、Vueの再帰コンポーネントの知識を組み合わせて、スケルトン画面コンポーネントの記述を完了する方法を学びます。

  1. components/Skeleton/item.js ファイルを開きます。
  2. ItemTemplate 変数に、以下のコードを追加します。
let ItemTemplate = ``;
// TODO
ItemTemplate += `
<div :class="'ske-'+paragraph.type+'-container'">
  <div v-for="item in arrIs(paragraph)" :class="classIs(item)" :style="styleIs(item)" >
    <item :paragraph="item" :active="active"></item>
  </div>
</div>
`;

このコードは、paragraph データに基づいてスケルトン画面の構造を作成します。

  1. Vue.component("item", {...}) セクションで、以下のメソッドを実装します。
data() {
  return {
    typeList: ["rect", "circle"],
    classPrefix: "ske ske-",
    activeClass: " ske-ani"
  };
},
methods: {
  arrIs(obj) {
    if (obj?.rows) return obj.rows;
    else if (obj?.cols) return obj.cols;
    else return [];
  },
  classIs(obj) {
    if (this.typeList.includes(obj.type)) {
      return (
        this.classPrefix + obj.type + (this.active? this.activeClass : "")
      );
    } else {
      return this.classPrefix + obj.type;
    }
  },
  styleIs(obj) {
    if (obj?.style && obj?.rowStyle) return {...obj.style,...obj.rowStyle };
    else if (obj?.style) return obj.style;
    else if (obj?.rowStyle) return obj.rowStyle;
    else if (obj?.colStyle) return obj.colStyle;
    else return {};
  }
}

arrIs メソッドは、ネストされたコンポーネントをレンダリングするために、paragraph オブジェクトの rows または cols プロパティを使用するかどうかを判断します。classIs メソッドは、type プロパティに基づいてスケルトン画面要素に適用するCSSクラスを判断します。styleIs メソッドは、stylerowStyle、および colStyle プロパティに基づいてスケルトン画面要素に適用するスタイルを判断します。

  1. item.js ファイルを保存します。

完了後のエフェクトは以下の通りです。

Image description
✨ 解答を確認して練習

まとめ

おめでとうございます!このプロジェクトを完了しました。実力を向上させるために、LabExでさらに多くの実験を行って練習してください。