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

推薦する

MySQL 8.0 のメモリ関連パラメータの概要

理論的には、MySQL によって使用されるメモリ = グローバル共有メモリ + max_connec...

HTML でよく使用されるエスケープ文字の概要

HTML でよく使用されるエスケープ文字をまとめると次のようになります。 &nbsp; 改行...

年末ですが、MySQL パスワードは安全ですか?

序文:年末です。データベースを検査する時期ではないでしょうか?一般的に、検査では、パスワードの複雑さ...

Dockerコンテナを終了した後も実行を継続する方法

現象:イメージを実行します (例: ubuntu14.04)。 docker run -it --r...

MySQL 5.7 をインストールした後にコマンドライン ウィンドウを開くとクラッシュする問題の解決方法

序文最近、MySQL 5.7 をインストールしましたが、問題が見つかりました。コマンド ライン ウィ...

UIエンジニアのキャリアについての私たちの考え

私は長い間落ち込んでいます、なぜでしょうか?以前、お客様から、提供されたソフトウェアが正常に動作しな...

Centos7環境でYUMを構築する方法

1. yumソースの設定ファイルを入力します 2.lsで設定ファイルを表示する 3. ディレクトリを...

js での Object.create インスタンスの使用法の詳細な説明

1. Object.create() メソッドを使用して新しいオブジェクトを作成し、既存のオブジェク...

Ubuntu の空き容量を増やす 5 つの簡単な方法

序文ほとんどの人は、システム ディスク ストレージが少ないときにこの操作を実行するか、Linux シ...

JSベースの手持ち連射機能+テキスト揺れ特殊効果コードの簡単実装

少し前にTikTokで揺れる連打が流行っていたので真似してみることにしました。さっそく効果をみてみま...

CSS3はブラウザのスクロールバーのスタイルを変更します

注意: この方法は、Webkit ベースのブラウザにのみ適用されます。ブラウザのスクロールバーが広す...

5つのCSSスクロール天井実装方法の比較(パフォーマンス向上版)

改訂版のプレビューこの記事は 3 日前に書かれたものです。先輩の同僚から改訂の提案をいくつかいただき...

Nginx サービス クイック スタート チュートリアル

目次1. Nginx の紹介1. Nginx とは何ですか? 2. Nginx を使用する理由3. ...

Dockerが独自のローカルイメージリポジトリを構築するための手順

1. 環境と準備1. Ubuntu 14.04 2.Docker環境2. 建設プロセス1. ミラーソ...

非表示のフォームテキストを表示するJavaScript

この記事では、フォームの隠しテキストを表示するためのJavaScriptの具体的なコードを参考までに...