第 2 节:基础扩展 - 下拉弹窗常用原生属性

第 2 节:基础扩展 - 下拉弹窗常用原生属性

本节给 el-select 增加弹窗相关配置,理解控制下拉面板行为的属性,重点都是控制弹出层。

核心:el-select 的下拉面板底层是 el-popover,很多属性是透传给 popover 的

修改 SelectDemo.vue

复制代码
<template>
  <div class="demo-box">
    <h3>el-select 弹窗常用属性</h3>
    <!--
      popper-class:给下拉弹窗单独加css类,用来修改弹窗样式
      popper-append-to-body:是否把弹窗DOM挂载到body(默认true,防止父元素overflow裁剪弹窗)
      dropdown-height:下拉面板最大高度,超出滚动
      placeholder:提示文字
      clearable:清空按钮
    -->
    <el-select
      v-model="value"
      placeholder="请选择"
      popper-class="my-select-popper"
      :popper-append-to-body="true"
      dropdown-height="200px"
      clearable
    >
      <el-option
        v-for="item in options"
        :key="item.value"
        :label="item.label"
        :value="item.value"
      />
    </el-select>
  </div>
</template>

<script setup>
import { ref } from 'vue'
const value = ref('')
// 多加几条数据,用来测试滚动效果
const options = ref([
  { label: '选项1', value: '1' },
  { label: '选项2', value: '2' },
  { label: '选项3', value: '3' },
  { label: '选项4', value: '4' },
  { label: '选项5', value: '5' },
  { label: '选项6', value: '6' },
  { label: '选项7', value: '7' },
])
</script>

<style scoped>
.demo-box {
  padding: 30px;
}
</style>

<!-- 注意:popper挂载到body,scoped样式无法生效,所以写在外面 -->
<style>
.my-select-popper {
  background-color: #fafafa;
}
</style>

本节知识点

  1. popper-class:给下拉弹窗添加自定义类,⚠️不能写在 scoped 样式里,因为弹窗 DOM 在 body 下,不在当前组件 DOM 树
  2. popper-append-to-body:
    • true:弹窗 DOM 挂载到 body。解决父容器 overflow:hidden 截断下拉框的问题(默认 true)
    • false:弹窗挂载在当前组件 DOM 内;父容器 overflow 会裁掉弹窗
  3. dropdown-height:下拉面板最大高度,选项超过高度会出现滚动条
  4. clearable:选中后显示清空图标,点击清空选中值

测试任务

  1. 点开下拉,查看下拉面板背景是否变成 #fafafa
  2. 滚动下拉列表,超过 200px 高度是否出现滚动条
  3. 选中一项,是否出现清空按钮,点击清空能否重置 value
  4. 可以尝试把 popper-append-to-body 改成 false,给外层 .demo-box 添加 overflow:hidden,观察弹窗是否被裁剪
相关推荐
徐小夕21 小时前
开源Vector-Graph-RAG:向量+图谱双引擎,打破纯向量RAG的效果天花板
前端·vue.js·github
FungLeo1 天前
成为全栈·Vue 管理后台篇·Vue3 + Vite + Naive UI:后台工程基座怎么搭
前端·vue.js·ui·typescript·vite·前端工程化·biome
FungLeo1 天前
成为全栈·Vue管理后台篇·<scriptsetup>:把页面拆成可读、可测的 Vue 组件
前端·javascript·vue.js·typescript·前端组件化·composition api·vue sfc
软件技术NINI2 天前
基于SpringBoot和Vue的新能源汽车销售推荐系统
java·vue.js·spring boot·后端·汽车·毕业设计·毕设
招风的黑耳2 天前
SpringBoot+Vue+MySQL 民宿在线预定平台 完整可运行版(源码+文档)
vue.js·spring boot·mysql
10share3 天前
基于大模型的 i18n 方案:把中文原文当 Key,轻松搞定多语言维护
前端·vue.js
啾咪orJIUMI3 天前
Vue 3 + 高德地图封装实战:点位、区域、Loca 流光与 Vue 信息窗体
前端·vue.js
FRing033 天前
vue2干货总结8(路由模块封装、router-link、声明式导航、路由重定向、编程式导航)
开发语言·前端·vue.js·vue2
无懈可击3 天前
Vue 可视化AI表单设计器 FcDesigner v3.6 版本发布,支持导出 SQL功能!
vue.js·开源·ai编程
徐小夕3 天前
JitArchives,一款基于JitWord协同AI文档打造的企业级电子档案系统
前端·vue.js·github