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 形式を返します

推薦する

HTMLシールドの右クリックメニューと左クリック入力機能の例

右クリックメニューを無効にする <body oncontextmenu=self.event....

LinuxにNginxをインストールする詳細な手順

1. Nginxのインストール手順1.1 公式サイトの紹介http://nginx.org/en/d...

MySQL で最大接続数を正しく変更する 3 つの方法

MySQL データベースをインストールすると、デフォルトの MySQL データベースの最大接続数が ...

Ubuntu 18.04 で中国語入力方法を設定する方法

Ubuntuの最新バージョンでは、ユーザーは中国語入力方法を別途ダウンロードする必要がなくなりました...

MySql 最適化のための my.ini 中国語構成スキームの詳細な説明: InnoDB、4GB メモリ、および複数のクエリ

この記事は、4G メモリ システム用の MySQL 構成ファイル ソリューションです (主に Inn...

vue.js ルーターのネストされたルートの実例

目次序文Vue CLI での設定基本コードVueルーターの登場ネストされたルートの設定要約する序文V...

Linux で履歴コマンドを表示および実行する方法

履歴コマンドを表示し、指定されたコマンドを実行します owen@owen:~/owen/softwa...

高可用性 Web クラスターを実装するための Keepalived+Nginx+Tomcat サンプル コード

高可用性 Web クラスターを実現する Keepalived+Nginx+Tomcat 1. Ngi...

MySQLのデフォルトのソートルールに基づく落とし穴

MySQL のデフォルトの varchar 型は大文字と小文字を区別しません (insensitiv...

Apache ストレステストツールのインストールと使用

1. ダウンロードApacheの公式サイトhttp://httpd.apache.org/にアクセス...

MySQL 8.0.18 のさまざまなバージョンのインストールとインストール中に発生した問題 (要点の要約)

概要: MYSQLの問題解決記録:どのようなインストール方法 (rpm、gz、gz.xz) を使用す...

HTML テーブル マークアップ チュートリアル (16): タイトルの水平方向の配置属性 ALIGN

デフォルトでは、表のタイトルは水平方向に中央揃えされます。ALIGN 属性を使用して、タイトル テキ...

HTML タグのネスト規則の紹介

XHTML タグには、div、ul、li、dl、dt、dd、h1~h6、p、a、addressa、s...

MySQL 8.0.18 のインストールと設定方法のグラフィック チュートリアル (Linux)

この記事では、Linux MySQL 8.0.18のインストールと設定のグラフィックチュートリアルを...

ウェブ計算機を実装するためのjs

HTML、CSS、JS を使用してシンプルな Web 計算機を作成する方法は?コンピュータには次の...