Vue のフィルターウィジェットの詳細な使用方法

Vue のフィルターウィジェットの詳細な使用方法

この記事では、参考までにVue More Filter Itemウィジェットの実装方法を例として紹介します。具体的な内容は以下のとおりです。

効果:

シンプルな小さなエフェクトです。フィルタリング条件が多数ある場合、デフォルトではいくつかの項目のみが表示されるため、冗長に感じません。必要に応じて、クリックして展開し、より多くの条件をフィルタリングできます。また、インターフェースのサイズを自動的に決定し、さらにフィルタリング項目が必要かどうかを判断することもできます。 「クエリとリセット」はコンポーネントに直接組み込まれているため、コンポーネント スタイルの実装が容易になり、スロットにも使用できます。

通常の大画面

解像度が低い

他にもフィルタリングボタンがあるのがわかります。ドロップダウンをクリックすると

スロット

コード:

<テンプレート>
  <div :class="['colla-wrap']" ref="フィルター">
    <div class="colla-box" ref="filterCont" :style="maxWidth ? 'max-width:' + maxWidth: ''">
      <スロット></スロット>
    </div>
    <div class="ctrl">
      <div class="deal-b" >
        <el-button size="mini" type="primary" icon="el-icon-search" @click="clickSearch">検索</el-button>
        <el-button size="mini" plain icon="el-icon-refresh-left" @click="clickReset">リセット</el-button>
        <スロット名="moreBtns"></スロット>
        <div class="deal-b" @click="showCollapse" v-if="autoExpend.more">
          <i class="el-icon-arrow-down turnDown" v-if="!auto​​Expend.collapseVisible"></i>
          <i class="el-icon-arrow-up turnUp" v-if="autoExpend.collapseVisible"></i>
          <div v-if="!auto​​Expend.collapseVisible" class="more-words">その他のフィルター項目</div>
          <div v-if="autoExpend.collapseVisible" class="more-words">フィルターを折りたたむ</div>
        </div>
      </div>
    </div>
  </div>
</テンプレート>
<スクリプト>
エクスポート デフォルト={
 データ(){
  戻る {
     折りたたみデータ:{
       折りたたみ表示:false
     },
     // より多くのフィルター項目を表示するために自動的に折りたたむ autoExpend:{
       詳細:false、
       折りたたみ表示:false、
       hasTop:false、
       フィルター:false
     },
  }
 },
 プロパティ:['maxWidth'],
  マウントされた(){
    this.watchScrollHeight()
    window.addEventListener("サイズ変更", () => {
      this.watchScrollHeight()
    });
  },
  方法:{
    クリックサーチ(){
     this.$emit('clickSearch')
   },
   クリックリセット(){
     this.$emit('clickReset')
   },
   表示折りたたみ(){
     this.methods('showCollapse')
   },
   表示折りたたみ(){
     this.autoExpend.collapseVisible = !this.autoExpend.collapseVisible
     this.$refs.filterCont.style.height = this.autoExpend.collapseVisible?'auto':'50px'
   }
 
   //この高さを監視してみるwatchScrollHeight(){
     filter = this.$refs.filter; とします。
     if(フィルター){
       this.$nextTick(() => {
         this.autoExpend.more = $(filter).find(".colla-box")[0].scrollHeight > 50;
       })
       
     }
     // このスロットが表示されるかどうかを決定するために、下に要素ノードがあるかどうかを判断します // 通常の検索ボックスの位置スロットを判断します if (this.$refs.filterCont&&this.$refs.filterCont.childNodes.length) {
       this.autoExpend.hasFilter = true
     }
   }
  }
  
}
</スクリプト>
<スタイル スコープ lang="scss">
  .colla-wrap{
    幅: 100%;
    .colla-box{
      最大幅: calc(100% - 400px);
      フロート: 左;
      ボックスのサイズ: 境界線ボックス;
      オーバーフロー: 非表示;
      高さ: 50px;
      >div、ボタン{
        フロート: 左;
        右マージン: 20px;
        下マージン: 20px;
      }
    }
    .ctrl{
      ディスプレイ: フレックス;
      align-items:flex-start;
      コンテンツの配置: flex-start;
      色: #409EFF;
      ボタン{
        右マージン: 20px;
      }
      .deal-b{
        ディスプレイ: フレックス;
        align-items:flex-start;
        flex-wrap: nowrap;
        .deal-b{
          右マージン: 0;
          下マージン: 0;
          上マージン: 5px;
          ディスプレイ: フレックス;
          アイテムの位置を中央揃えにします。
          カーソル: ポインタ;
          色: #409EFF;
          .more-words{
            最小幅: 75px;
          }
          私{
            色: #409EFF;
            右マージン: 5px;
          }
        }
      }
    }
  }
</スタイル>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue.jsは、複数条件のフィルタリング、検索、並べ替え、ページングのテーブル機能を実装します。
  • Vue分類フィルタ方法の簡単な例
  • VuejsはfilterByとorderByを使用して検索フィルタリングとデータの降順ソートを実装します。
  • vue-router beforEachを使用して、ユーザーログインジャンプルートフィルタリングを判断する機能を実装する
  • Vue ベースの多条件フィルタリング機能の詳細説明 (JD.com や Taobao の機能に類似)
  • VUEはモバイルリストフィルタリング機能を実装
  • ant-design-vueのセレクタは入力値をフィルタリングします
  • Vue 入力 入力ボックス キーワード フィルタリング 検索 リスト データ表示
  • Vue はフロントエンドリストの複数条件フィルタリングを実装します
  • Vueは入力によってデータをフィルタリングします

<<:  MySQL 上級学習ノート (パート 3): MySQL 論理アーキテクチャの紹介、MySQL ストレージ エンジンの詳細な説明

>>:  Zabbix redis 自動ポート検出スクリプトは json 形式を返します

推薦する

Serv-U FTPとADの完璧な統合ソリューションの詳細な説明

会社が現在使用しているソリューションを確認するためにバックエンドにログインしました。使用される FT...

高速でクールな揺れアニメーション効果を実現するCSS

1. Animate.css の紹介Animate.css は、Web プロジェクトですぐに使用で...

jQueryはショッピングカートの完全な機能を実現します

この記事では、ショッピングカートの完全な機能を実現するためのjQueryの具体的なコードを参考までに...

Web デザイン リファレンス Firefox デフォルト スタイル

W3C は HTML の標準をいくつか確立していますが、ブラウザは独自の定義済みスタイルに従って W...

HTML フォームとフォーム内部タグの使用

コードをコピーコードは次のとおりです。 <html> <ヘッド> <t...

vue プロジェクトのデプロイと Nginx でのプロキシ設定の問題の分析

1. nginxをインストールして起動する # nginxをインストールする sudo apt-ge...

Portainer を使用した Docker コンテナのデプロイのプロジェクト実践

目次1. 背景2. 操作手順3. Portinerをインストールする3.1 Dockerのデプロイメ...

ウェブページの HTML コード: スクロールテキストの作成

このセクションでは、Web ページ内のテキストをスクロールしたり、スクロール プロパティを制御できる...

Vue 条件付きレンダリング v-if と v-show

目次1. 動詞-if 2. <template> で v-if を使用する3. キーを使...

Linux で Squid プロキシ サーバーを構築するための完全な手順

序文この記事では、Linux で Squid プロキシ サーバーを設定することに関する関連コンテンツ...

実用的なクイックスタートReactルーティング開発

インストールインストールするには、次のコマンドを入力します。 // ネプ npm で react-r...

継続的インテグレーションテストにおけるDocker Swarmの適用の詳細な説明

背景アジャイル モデルは広く使用されており、テストは特に重要です。新しいバージョンは頻繁にリリースす...

HTML+CSS+JavaScript でガールフレンド版のスクラッチ カードを作成します (一度見ればすぐに覚えられます)

誰もがスクラッチ チケットで遊んだことがあると思います。子供の頃、ポケットにお金が入るとすぐに友達に...

MySQLクラスタのDockerデプロイメントの実装

シングルノードデータベースの欠点大規模なインターネットプログラムはユーザーベースが大きいため、アーキ...

MySQL 8.0.24 リリースノートのいくつかの改善点

目次1. 接続管理2. オプティマイザレベルでの改善3. 機能の改善4. パフォーマンススキーマの最...