Vue プロジェクトで垂直テーブルを 2 つの方法で実装するアイデアの分析

Vue プロジェクトで垂直テーブルを 2 つの方法で実装するアイデアの分析

問題の説明

私たちのプロジェクトでは、水平方向のテーブルが一般的ですが、必要に応じて垂直方向のテーブルを作成することもあります。たとえば、以下の縦の表:

このようなレンダリングを見ると、まず頭に浮かぶのは、UI フレームワークを使用していくつかの変更を加え、問題を解決することです。ただし、Ele.me UI はそのような例を直接提供していません。一部の学生は、Ele.me UI の el-table を使用して行と列を結合してこれを実現したい場合があります。実際、これを行うと面倒になります。たとえば、次の行と列が結合されます。

このようなレンダリングでは、必ずしも UI コンポーネントを使用する必要はありません。ネイティブ メソッドを使用して実行できる場合もあります。むしろ便利になります。この記事では、このようなシンプルな垂直テーブルを実装する 2 つの方法を紹介します。実際のシナリオはもっと複雑かもしれませんが、私が言ったように、アイデアさえあれば、大きな問題にはなりません。プログラミングの鍵は考えることです。

方法1(ネイティブメソッド)は推奨されません

アイデアは、テーブルスタイルを自分で描き、フローティングを使用して左から右に配置することです。

<テンプレート>
  <div id="アプリ">
    <ul class="proWrap">
      <template v-for="(item, index) in data">
        <li class="proItem" :key="index">
          <span>{{ item.title }}</span>
          <span>{{ item.value == "" ? "完了予定" : item.value }}</span>
        </li>
      </テンプレート>
    </ul>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  データ() {
    戻る {
      データ: [
        {
          タイトル:「重要度レベル」、
          値: "666",
        },
        {
          タイトル: 「先行販売状況」、
          値: "666",
        },
        {
          タイトル:「協力状況」
          価値: ""、
        },
        {
          タイトル: 「先行販売状況」、
          価値: ""、
        },
        {
          タイトル: 「技術契約ステータス」、
          価値: ""、
        },
        {
          タイトル: 「落札者」
          価値: ""、
        },
        {
          タイトル:「協力状況」
          価値: ""、
        },
        {
          タイトル:「協力フィードバックタイム」
          価値: ""、
        },
      ]、
    };
  },
  メソッド: {},
};
</スクリプト>

<style lang="less" スコープ>
#アプリ {
  幅: 100%;
  最小高さ: 100vh;
  ボックスのサイズ: 境界線ボックス;
  パディング: 50px;
  .proラップ{
    幅: 100%;
    境界線: 1px 実線 #e9e9e9;
    右境界線: 0;
    下境界線: 0;
    // 各行にいくつのグループが配置されるか? ここでは特定の数で割ります。proItem {
      幅: 100% / 3;
      float: left; // 左にフロートします。
      スパン {
        表示: インラインブロック;
        幅: calc(50% - 2px);
        高さ: 50px;
        行の高さ: 50px;
        テキスト配置: 中央;
        右境界線: 1px 実線 #e9e9e9;
        下境界線: 1px 実線 #e9e9e9;
      }
      span:n番目の子(1) {
        背景: #fafafa;
      }
    }
    // フロートをクリアします。クリアしないと左端の境界線が消えてしまいます。&::after {
      コンテンツ: "";
      表示: ブロック;
      クリア: 両方;
    }
  }
}
// liのデフォルトスタイルを削除します{
  リストスタイルタイプ: なし;
}
</スタイル>

方法2(グリッドレイアウトコンポーネントの使用)が推奨されます

Ele.me に付属するグリッド システムを使用するとより便利です。el-col の :span 属性を制御することで、各行に表示されるグループの数を設定できます。グループがさらに多い場合は、自動的に折り返されます。テーブルのスタイルに関しては、自分で設定できます。この方法は非常に簡単です。添付コード:

<テンプレート>
  <div id="アプリ">
    <el-col :span="howWidth" v-for="(item, index) in tableArr" :key="index">
      <div class="box">
        <div class="content1">{{ item.key }}</div>
        <div class="content2">{{ item.value == "" ? "完了予定" : item.value }}</div>
      </div>
    </el-col>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  データ() {
    戻る {
      テーブルArr: [
        {
          キー: "名前",
          値: "孫悟空"、
        },
        {
          キー: "年齢",
          値: 500、
        },
        {
          キー: "高さ"、
          価値:「山のように高い」
        },
        {
          キー:「性別」、
          値: "男性",
        },
        {
          キー: "アドレス"、
          価値:「花果山の水幕洞窟」、
        },
        {
          キー:「教育」、
          値: "Tian Ting Bi Ma Wen の学歴",
        },
        {
          キー: 「機能」、
          値: "強い"、
        },
        {
          キー: "ニックネーム",
          価値:「偉大な賢者」、
        },
      ]、
      幅: 8,
    };
  },
  メソッド: {},
};
</スクリプト>

<style lang="less" スコープ>
#アプリ {
  幅: 100%;
  最小高さ: 100vh;
  ボックスのサイズ: 境界線ボックス;
  パディング: 50px;
  。箱 {
    幅: 100%;
    高さ: 40px;
    ディスプレイ: フレックス;
    左境界線: 1px 実線 #e9e9e9;
    上境界線: 1px 実線 #e9e9e9;
    .content1 {
      幅: 40%;
      高さ: 40px;
      行の高さ: 40px;
      テキスト配置: 中央;
      背景色: #fafafa;
      右境界線: 1px 実線 #e9e9e9;
      下境界線: 1px 実線 #e9e9e9;
      色: #333;
      フォントサイズ: 14px;
    }
    .content2 {
      幅: 60%;
      高さ: 40px;
      行の高さ: 40px;
      テキスト配置: 中央;
      背景色: #fff;
      右境界線: 1px 実線 #e9e9e9;
      下境界線: 1px 実線 #e9e9e9;
      色: #b0b0b2;
      フォントサイズ: 14px;
    }
  }
}
</スタイル>

これで、Vue プロジェクトで垂直テーブルを実装する 2 つの方法の分析に関するこの記事は終了です。Vue の垂直テーブルに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue+Element カスタム垂直テーブルヘッダーチュートリアル

<<:  MySQL ベースのストレージエンジンとログの説明 (包括的な説明)

>>:  vmware workstation12 インストール CentOS プロンプト VMware Player と Device/Credential Guard に互換性がない、理由と解決策

推薦する

Vue 仮想 Dom から実際の Dom への変換

別のツリー構造があるJavascriptオブジェクトでは、このツリーが本物であると伝えるだけでよいD...

JavaScriptはイベントリスナーをイベント委任にバッチで追加します。詳細なプロセス

1. イベント委任とは何ですか?イベント委譲: イベントバブリングの特性を利用して、子要素に登録すべ...

Linuxシステムの入出力管理とvimの共通機能の詳細な説明

####システム内の入出力の管理#### 1. システムの入力と出力のリダイレクトを理解する入力リダ...

VantフレームワークをWeChatアプレットに導入するプロセス全体の記録

序文WeChat ミニプログラムのネイティブ UI が少し物足りないと感じることがあるので、サードパ...

node.js の require メソッドの読み込みルールの詳細な説明

require メソッドの読み込みルールキャッシュからの読み込みを優先するコアモジュールパス形式のモ...

DIV と画像の水平および垂直の中央揃えは複数のブラウザと互換性があります

最初のタイプ: 完全な CSS コントロール、レイヤーフローティング (ログインページに適しています...

ユーザー中心設計

最近、デジタル デザイン コミュニティで「誰が何を担当するのか」という明らかな混乱についてよく質問さ...

{{ }} で関数を直接使用する WeChat アプレットの例

序文WeChat アプレット開発 (ネイティブ wxml、wxcss) で、{{ }} 内で直接メソ...

JavaScript Alert関数の実行順序の詳細な説明

目次質問分析する解決するAlert() 関数を置き換えるsetTimeOut関数まとめ質問数日前、J...

Nginxにモジュールを動的に追加する方法

前面に書かれた多くの場合、現在のプロジェクトの状況とビジネスニーズに基づいて Nginx をインスト...

フォームのmethod=post/getの違い

フォームは、get と post の 2 つのデータ転送方法を提供します。どちらもデータを送信する方...

Mysqlの同時パラメータ調整の詳細な説明

目次クエリキャッシュの最適化概要クエリプロセスクエリキャッシュ構成クエリキャッシュの無効化メモリ管理...

コードの互換性を高めるために、HTMLを次のように記述します。

たとえば、スクリーン リーダー ソフトウェアを必要とするユーザーなどです。フロントエンド開発者として...

MySQL マルチインスタンス構成のアプリケーションシナリオ

目次MySQL 複数インスタンスマルチインスタンスの概要マルチインスタンスとは何ですか?複数のインス...

HTML ドラッグ アンド ドロップ機能の実装コード

Vueベースこの機能の核となるアイデアは、JavaScript コードを通じてページ上のノードの左余...