修改el-select下拉框高度;更新:支持动态修改

news/2024/12/29 0:09:23/

文章目录

  • 效果
  • 动态修改:效果
  • 代码
    • 固定高度版本
    • 动态修改高度版本(2024-12-25 更新: 支持动态修改下拉框高度)

效果

在这里插入图片描述

动态修改:效果

在这里插入图片描述

代码

固定高度版本

注意点:
popper-class 尽量独一无二,防止影响其他页面样式

popper-append-to-body 的使用 及全局样式 & 样式穿透问题

<template><div><!-- :popper-append-to-body="false"  --><el-select v-model="value" popper-class="custom-select-popper"><el-optionv-for="item in options":key="item.value":label="item.label":value="item.value"></el-option></el-select></div>
</template><script>javascript">export default {data() {return {options: [{value: '选项1',label: '黄金糕'}, {value: '选项2',label: '双皮奶'}, {value: '选项3',label: '蚵仔煎'}, {value: '选项4',label: '龙须面'}, {value: '选项5',label: '北京烤鸭'}],value: ''}}
}
</script>// 二选其一:// 如果el-select添加了 popper-append-to-body="false"
// 并且style标签添加了 scoped,需要使用 ::v-deep 选择器
<style lang="scss" scoped>
::v-deep .custom-select-popper {height: 150px; // max-height 不生效.el-scrollbar {height: 100%;.el-select-dropdown__wrap {overflow-x: hidden; // 此处是隐藏底部自定义横向滚动条}}
}
</style>// 未添加 popper-append-to-body="false" 时,popper是插入在body子级
// 需要去掉 scoped,但是无比务必使用独一无二的class,防止影响其他样式
<style lang="scss">
.custom-select-popper {height: 150px;.el-scrollbar {height: 100%;.el-select-dropdown__wrap {overflow-x: hidden;}}
}
</style>

底部横向滚动条(样式按需修改):
在这里插入图片描述

动态修改高度版本(2024-12-25 更新: 支持动态修改下拉框高度)

<template><div><!-- :popper-append-to-body="false"  --><!-- 当popper插入在select元素下时,--popper-height 需要在 el-select 标签 --><el-selectv-model="value"popper-class="custom-select-popper":style="{'--popper-height': height}"><el-optionv-for="item in options":key="item.value":label="item.label":value="item.value"></el-option></el-select><el-button type="primary" @click="addOption">add option</el-button></div>
</template><script>javascript">export default {data() {return {options: [{value: '选项1',label: '黄金糕'}, {value: '选项2',label: '双皮奶'}],value: ''}},// 动态修改下拉框高度computed: {height() {// 这里:34 是el-option的高度,+17 是popper标签有marginconst maxHeight = this.options.length * 34 + 17return `${maxHeight > 150 ? 150 : maxHeight}px`}},// popper 插入在 body 时使用// 动态修改 body css变量watch: {height: {immediate: true, // 初始化时进行一次高度计算async handler(n) {await this.$nextTick()document.body.style.setProperty('--popper-height', n)}}},methods: {addOption() {const length = this.options.lengththis.options.push({value: '选项' + length + 1,label: '选项' + length + 1})}}
}
</script>// 二选其一:// 如果el-select添加了 popper-append-to-body="false"
// 并且style标签添加了 scoped,需要使用 ::v-deep 选择器
<style lang="scss" scoped>
::v-deep .custom-select-popper {// height: 150px; // max-height 不生效height: var(--popper-height);.el-scrollbar {height: 100%;.el-select-dropdown__wrap {overflow-x: hidden; // 此处是隐藏底部自定义横向滚动条}}
}
</style>// 未添加 popper-append-to-body="false" 时,popper是插入在body子级
// 需要去掉 scoped,但是无比务必使用独一无二的class,防止影响其他样式
<style lang="scss">
.custom-select-popper {// height: 150px; // 固定高度: 适用于option选项固定选项height: var(--popper-height); // 动态高度:适用于option不固定时.el-scrollbar {height: 100%;.el-select-dropdown__wrap {overflow-x: hidden;}}
}
</style>

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

相关文章

移动机器人推动制造业向自动化转升级

这位客户&#xff0c;作为一家制造业巨头&#xff0c;坐拥多个仓库及错综复杂的生产体系&#xff0c;在制造业智能化浪潮中勇立潮头&#xff0c;展现了非凡的数字化与智能化转型决心。 在启动智能化升级之初&#xff0c;客户进行了多方调研和比较&#xff0c;最终选择富唯智能…

uniapp打包h5应用如何开启history模式,以及资源管理器直接打开存在问题

uniapp的h5应用默认开启是hash模式&#xff0c;导致在浏览器中老是要输入#很不方便&#xff0c;解决办法&#xff1a; manifest.json中修改h5.router.mode: history即可 设置资源管理器打开只需要配置

Docker--Redis

What is Redis? Redis is the world’s fastest data platform. It provides cloud and on-prem solutions for caching, vector search, and NoSQL databases that seamlessly fit into any tech stack—making it simple for digital customers to build, scale, and deplo…

QT:一个TCP客户端自动连接的测试模型

版本 1:没有取消按钮 测试效果&#xff1a; 缺陷&#xff1a; 无法手动停止 测试代码 CMakeLists.txt cmake_minimum_required(VERSION 3.19) project(AutoConnect LANGUAGES CXX)find_package(Qt6 6.5 REQUIRED COMPONENTS Core Widgets Network)qt_standard_project_setup(…

寻找目标值 (最优解)

题目来源 LCR 121. 寻找目标值 - 二维数组 - 力扣&#xff08;LeetCode&#xff09; 题目描述 m*n 的二维数组 plants 记录了园林景观的植物排布情况&#xff0c;具有以下特性&#xff1a; 每行中&#xff0c;每棵植物的右侧相邻植物不矮于该植物&#xff1b;每列中&#xff0…

智慧楼盘二维、三维组件融合 720三维全景可视化

本系统通过数字孪生技术&#xff0c;实现小区楼盘系统的可视化展示&#xff0c;整合楼盘内各个系统的数据源&#xff0c;将楼盘模型与房间模型、720三维全景图相结合&#xff0c;实现了从楼盘周边到室内布局的全方位展示&#xff0c;为购房者提供全方位的可视化信息。 整个项目…

鸿蒙Next如何实现打开相册选图片功能?

问题描述&#xff1a;鸿蒙Next如何实现打开相册选图片功能 应用场景&#xff1a;用户个人中心自定义头像的时候&#xff0c;需要选择相册上传照片。 解决方案&#xff1a; 使用picker这个API实现从系统上获取相册图片这个点的&#xff0c; 1、首先要实例一个选择参数PhotoS…

《网络对抗》—— Web安全基础实践

1.实验后回答问题 &#xff08;1&#xff09;SQL注入攻击原理&#xff0c;如何防御. 原理&#xff1a; SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序&#xff0c;而这些输入大都是SQL语法里的一些组合&#xff0c;通过执行SQL语句进而执行攻击者所要的操作&a…