vue更多筛选项小组件使用详解
作者:contour 时间:2023-07-02 17:06:01
本文实例为大家分享了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