【vue】- 简易版筛选组件可展开/收起

news/2024/11/29 4:38:57/

仅做记录,未整理格式
css部分未完全,每个筛选条件为固定宽度

实现效果

单行筛选条件时不触发更多按钮,且做占位处理单行筛选条件
多行筛选条件时默认收起


同时设定最大/最小宽度并监听该组件宽度变化
在这里插入图片描述
在这里插入图片描述

filter.vue组件
<template><div :class="`new-filter-block ${!showMoreFilter?'new-filter-block_hidden':''}`"><div id="resize-element" ref="filter" class="new-filter-slotBox" ><slot /><div v-show="seizeList.length"  v-for="(item, index) in seizeList" :key="index"  class="new-filter-item_seize"/></div><div class="new-filter-btnBox"><el-button class="new-second-btn" @click="search" >搜索</el-button><el-button @click="reset" >重置</el-button><div :class="`new-filter-more ${!moreFilter?'new-filter-more_hidden':''}`" @click="handleMoreFilter" >{{ showMoreFilter ? '收起' : '更多' }} <i class="el-icon-arrow-down" /></div></div></div>
</template><script>
export default {name: 'LFilters',emits: ['search', 'reset'],props: {},data() {return {showMoreFilter: false,moreFilter: false,observer: null,oldWidth: 0,// 记录下旧的数据,避免重复触发回调函数seizeList:[],//空白占位数据filterCount:0,//筛选条件的个数,保证不受占位符的影响}},mounted() {this.filterCount=this.$refs.filter.children.lengthconst resizeObserver = new ResizeObserver(entries => {// 回调const curBoxWidth = entries[0].contentBoxSize[0].inlineSizethis.handleFilterResize(curBoxWidth)})// 监听筛选条件盒子resizeObserver.observe(this.$refs.filter)},methods: {/*** 高级筛选*/handleMoreFilter() {this.showMoreFilter = !this.showMoreFilter},// 触发搜索事件search() {this.$emit('search')},reset() {this.$emit('reset')},// 处理筛选条件宽度变化handleFilterResize(boxW) {if (!boxW || this.oldWidth === boxW) returnthis.oldWidth = boxWconst itemMinW = 280const marginR = 10const filterItemW = itemMinW + marginRconst rowCount = Math.floor(boxW / filterItemW)const filterCount = this.filterCountthis.moreFilter = filterCount > rowCountif(this.moreFilter){//设置占位列表长度,最多为rowCountlet excessiveCount=filterCount%rowCountthis.seizeList=new Array(rowCount-excessiveCount).fill('')}}}
}
</script><style lang="scss" scoped>
@import '@/styles/variables.scss';
::v-deep{.el-input__inner,.el-date-editor,.el-range-separator,.el-input__icon {height: 32px !important;line-height: 32px !important;}.el-select, .el-cascader, .el-input  {width: 100%;min-width: 140px;.el-input__inner{padding-right: 12px !important;}}.el-cascader__tags {// display: none;.el-tag{display: none;}}.el-date-editor {width: 100%;.el-range-separator {width: 16px;padding: 0;}}
}
.new-filter-block{padding: 12px;background-color: #F8F8F8;display: flex;// flex-wrap: wrap;.new-filter-slotBox{flex: 1;display: flex;flex-wrap: wrap;.new-filter-item_seize,.new-filter-item{flex: 1;min-width: 280px;max-width: 340px;margin-bottom: 10px;display: flex;flex-wrap: nowrap;align-items: center;font-size: 14px;color: $text-col-3;margin-right: 10px;}.new-filter-itemLabel {width: 88px;text-align: right;margin-right: 12px;word-break: keep-all;}}.new-filter-btnBox{display: flex;font-size: 12px !important;.el-button {width: 54px;height: 32px;padding: 0;}.new-filter-more{width: 54px;height: 32px;line-height: 32px;margin-left: 10px;color:$blue;cursor: pointer;}.new-filter-more_hidden{visibility: hidden;}}
}
.new-filter-block_hidden{height: 56px;overflow: hidden;
}</style>
使用<LFilters @search="()=>search()" @reset="()=>emptyQuery()" >//...等宽筛选条件</LFilters>

http://www.ppmy.cn/news/653828.html

相关文章

《移动互联网技术》第九章 感知与多媒体: 了解质感设计的基本原则和设计方法

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

PC端微信扫码登陆

1、跳转URL扫码 https://open.weixin.qq.com/connect/qrconnect?appidAPPID&redirect_uriREDIRECT_URI&response_typecode&scopeSCOPE&stateSTATE#wechat_redirect 2、内置微信二维码扫码登陆 mounted() {// 编码回调地址let url encodeURIComponent(proces…

h5房卡棋牌平台怎么搭建

首先&#xff0c;要做一款游戏&#xff0c;如果你要做一款有网络的游戏&#xff0c;有用户数据保存的&#xff0c;那么首先就要有一个服务器&#xff0c;然后我们才能基于unity开发的这个客户端去跟服务器通信&#xff0c;&#xff08;如果是做单机&#xff0c;那么就请忽略这第…

棋牌识别ocr

分享下自己开发的一套棋牌识别&#xff0c;挺好玩的。 &#xff08;1&#xff09;识别各个玩家的棋牌&#xff0c;辅助记牌。 &#xff08;2&#xff09;提供ios系统.a库&#xff1b;提供安卓.aar或so库&#xff1b; &#xff08;3&#xff09;快速实时识别。 欢迎您加我q好…

PC网站实现微信扫码登录功能(一)

铁汁我正在参加博客之星评选活动&#xff0c;如果感觉文章对你有所帮助&#xff0c;能够给我投个票吗~拜谢https://bbs.csdn.net/topics/611391073https://bbs.csdn.net/topics/611391073 现在微信的使用用户越来越多&#xff0c;如果网站添加上微信登录&#xff0c;就能节省很…

微信扫码登录asp微信扫码登陆代码

网站接入微信扫码登录并获取用户基本信息(完美绕过微信开放平台) 电脑版网站实现微信扫码登录&#xff0c;注册会员还要设密码太麻烦&#xff0c;会员也记不住密码&#xff0c;采用微信扫码登录网站更方便&#xff0c;会员无需设密码&#xff0c;用他的微信做为系统登录用户名…