vue更多筛选项小组件使用详解

作者:contour 时间:2023-07-02 17:06:01 

本文实例为大家分享了vue更多筛选项小组件的实现方法,供大家参考,具体内容如下

效果:

就是一个简单的小效果,当有很多筛选条件时,默认只展示几项,不会觉得很冗余,有需要可以点击展开,进行更过的条件筛选。并且能够自动判断界面的尺寸,决定是否需要更多筛选项。直接把“查询、重置”内置到组件里面了,便于组件样式的实现,还可以进行插槽。

正常大屏

vue更多筛选项小组件使用详解

分辨率变小

vue更多筛选项小组件使用详解

可见出现了更多筛选的按钮,可以点击下拉

vue更多筛选项小组件使用详解

插槽

vue更多筛选项小组件使用详解

代码:


<template>
 <div :class="['colla-wrap']" ref="filter">
   <div class="colla-box" ref="filterCont" :style="maxWidth ? 'max-width:' + maxWidth: ''">
     <slot></slot>
   </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>
       <slot name="moreBtns"></slot>
       <div class="deal-b" @click="showCollapse" v-if="autoExpend.more">
         <i class="el-icon-arrow-down turnDown" v-if="!autoExpend.collapseVisible"></i>
         <i class="el-icon-arrow-up turnUp" v-if="autoExpend.collapseVisible"></i>
         <div v-if="!autoExpend.collapseVisible" class="more-words">更多筛选项</div>
         <div v-if="autoExpend.collapseVisible" class="more-words">收起筛选</div>
       </div>
     </div>
   </div>
 </div>
</template>
<script>
export default={
data(){
 return{
    collapseData:{
      collapseVisible:false
    },
    //自动折叠显示更多筛选项
    autoExpend:{
      more:false,
      collapseVisible:false,
      hasTop:false,
      hasFilter:false
    },
 }
},
props:['maxWidth'],
 mounted(){
   this.watchScrollHeight()
   window.addEventListener("resize", () => {
     this.watchScrollHeight()
   });
 },
 methods:{
   clickSearch(){
    this.$emit('clickSearch')
  },
  clickReset(){
    this.$emit('clickReset')
  },
  showCollapse(){
    this.methods('showCollapse')
  },
  showCollapse(){
    this.autoExpend.collapseVisible = !this.autoExpend.collapseVisible
    this.$refs.filterCont.style.height = this.autoExpend.collapseVisible?'auto':'50px'
  }

//尝试监控这个高度
  watchScrollHeight(){
    let filter = this.$refs.filter;
    if(filter){
      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
    }
  }
 }

}
</script>
<style scoped lang="scss">
 .colla-wrap{
   width: 100%;
   .colla-box{
     max-width: calc(100% - 400px);
     float: left;
     box-sizing: border-box;
     overflow: hidden;
     height: 50px;
     >div,button{
       float: left;
       margin-right: 20px;
       margin-bottom: 20px;
     }
   }
   .ctrl{
     display: flex;
     align-items: flex-start;
     justify-content: flex-start;
     color: #409EFF;
     button{
       margin-right: 20px;
     }
     .deal-b{
       display: flex;
       align-items: flex-start;
       flex-wrap: nowrap;
       .deal-b{
         margin-right: 0;
         margin-bottom: 0;
         margin-top: 5px;
         display: flex;
         align-items: center;
         cursor: pointer;
         color: #409EFF;
         .more-words{
           min-width: 75px;
         }
         i{
           color: #409EFF;
           margin-right: 5px;
         }
       }
     }
   }
 }
</style>

来源:https://blog.csdn.net/qq_44706619/article/details/117994610

标签:vue,筛选,组件
0
投稿

猜你喜欢

  • Python下的常用下载安装工具pip的安装方法

    2021-08-31 05:05:35
  • 详解Ubuntu环境下部署Django+uwsgi+nginx总结

    2021-06-15 06:23:43
  • 对Python 数组的切片操作详解

    2022-06-09 23:29:39
  • 详解Python直接赋值,深拷贝和浅拷贝

    2023-05-18 12:09:34
  • Spring Security 将用户数据存入数据库

    2024-01-13 03:31:46
  • 使用ASP实现广告代理

    2010-05-27 12:15:00
  • 为WordPress增加微博功能

    2010-08-31 15:01:00
  • Python SSL证书验证问题解决方案

    2022-11-06 13:54:35
  • python调用函数、类和文件操作简单实例总结

    2022-04-09 22:28:53
  • 浅析Python 序列化与反序列化

    2023-05-01 14:36:16
  • python类别数据数字化LabelEncoder VS OneHotEncoder区别

    2023-10-12 07:46:46
  • SQL Server 数据文件收缩和查看收缩进度的步骤

    2024-01-12 19:34:03
  • 关于pyinstaller 打包多个py文件的问题

    2022-01-19 17:49:10
  • SQL Server 对表的主键设计问题及解决办法

    2010-06-07 13:29:00
  • 解决python 3 urllib 没有 urlencode 属性的问题

    2022-03-31 12:42:44
  • 防止web项目中的SQL注入

    2024-01-26 00:44:25
  • web项目中golang性能监控解析

    2024-02-18 17:28:23
  • 关于CSS中字号控制的兼容性研究

    2010-01-23 12:48:00
  • 细数nn.BCELoss与nn.CrossEntropyLoss的区别

    2021-04-16 16:29:28
  • 对python函数签名的方法详解

    2021-09-22 10:14:25
  • asp之家 网络编程 m.aspxhome.com