Element UI el-select样式定制:popper-append-to-body=false原理与实战避坑
1. 问题缘起为什么我的el-select样式改不动最近在做一个后台管理系统UI框架用的是Element UI。有个需求是产品经理觉得默认的el-select下拉框样式太“素”了希望在下拉框里加个搜索框并且把下拉菜单的背景色改成浅灰色边框加粗一点。听起来很简单对吧我心想这不就是写点CSS的事儿嘛。于是我熟练地打开浏览器开发者工具找到那个el-select组件渲染出来的下拉菜单元素它通常是一个叫.el-select-dropdown的div外面还套着一个.el-popper的容器。我信心满满地在项目的全局样式文件里写下了几行代码.el-select-dropdown { background-color: #f5f7fa !important; border: 2px solid #409eff !important; }保存刷新页面。嗯没变化。下拉框还是那个白底蓝边的默认样式。我检查了一下选择器没错啊。我又试着把样式写在当前组件的style scoped里甚至动用了深度选择器::v-deep在Vue 2里是/deep/或style scoped ::v-deep .el-select-dropdown { background-color: #f5f7fa; border: 2px solid #409eff; } /style刷新依然纹丝不动。这就有点邪门了。我明明看到DOM树里有这个元素为什么样式就是应用不上去呢这个问题相信不少刚开始用Element UI的开发者都遇到过。其核心原因就藏在el-select组件的一个默认行为里下拉菜单Popper默认被附加到了document.body上。2. 理解Popper.js与append-to-body机制要彻底搞明白这个问题我们得先理解el-select下拉框的渲染机制。Element UI的下拉、弹出框、Tooltip等组件其弹出层部分都依赖于一个叫做Popper.js的库。Popper.js是一个用于管理弹出元素如工具提示、下拉菜单、弹出框位置的库。它的核心作用是计算弹出元素应该出现在屏幕的哪个位置才能确保它不会超出可视区域并且能紧挨着它的“触发元素”比如我们的el-select输入框。为了实现这种灵活、智能的定位Popper.js通常需要一个“自由”的容器来放置这个弹出元素。最理想、最通用的容器就是document.body。因为body是页面的根元素将弹出层放在这里可以最大程度地避免被父级元素的CSS属性如overflow: hidden、transform、position等影响其定位计算。所以Element UI的el-select组件默认设置了:popper-append-to-bodytrue。这意味着组件在挂载时会在body标签的末尾动态创建一个新的DOM节点。这个节点内部包含了我们想要样式化的.el-select-dropdown。这个节点通过Popper.js与el-select输入框建立关联实现跟随和定位。这就解释了为什么我们的CSS不生效.el-select-dropdown并不在当前组件的DOM子树内它“跳”到了body下面。在Vue的scoped样式作用下当前组件样式表中的选择器无法匹配到body下的这个“远方亲戚”。即便在全局样式中写也可能因为样式优先级或渲染时机问题而难以精准控制。注意这里说的“优先级”不是单纯的CSS权重问题。即使你用了!important如果样式表加载的时机晚于组件渲染或者有其他更具体的选择器覆盖依然可能失败。更重要的是这种全局样式会影响到页面所有的el-select组件这通常不是我们想要的。那么解决方案就呼之欲出了如果我们能让这个下拉菜单不“跑”到body里而是留在当前组件的DOM结构内那么scoped样式就能轻松地作用到它。这就是属性:popper-append-to-bodyfalse的用武之地。3.:popper-append-to-body“false“的正确使用与效果这个属性是el-select组件的一个Prop。将其设置为false就是告诉组件“不要把我的下拉菜单插到body里就放在我旁边。”template el-select v-modelvalue :popper-append-to-bodyfalse placeholder请选择 el-option v-foritem in options :keyitem.value :labelitem.label :valueitem.value /el-option /el-select /template设置之后你再打开开发者工具查看DOM结构会发现变化设置前.el-select-dropdown作为body的直接子元素存在。设置后.el-select-dropdown被渲染在了.el-select组件根元素的后面、同级的位置但依然在Vue当前组件的DOM作用域之内。现在你就可以在组件的style scoped中使用深度选择器来修改它的样式了而且这份样式只会作用于当前这个特定的el-select组件style scoped /* 使用 ::v-deep 深度穿透到子组件根元素下的 .el-select-dropdown */ ::v-deep .el-select-dropdown { background-color: #f5f7fa; border: 2px solid #409eff; border-radius: 6px; box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.2); } /* 甚至可以修改下拉项 */ ::v-deep .el-select-dropdown__item { font-size: 14px; padding: 8px 20px; } ::v-deep .el-select-dropdown__item.hover { background-color: #ecf5ff; } /style一切似乎都很完美。但是先别急着庆祝。这个属性并不是“银弹”它带来便利的同时也引入了一些新的问题和限制。在实际项目中我踩过好几个坑。4. 关键陷阱popper-append-to-body的副作用与应对策略将popper-append-to-body设为false最直接的影响就是Popper.js的定位计算环境变了。它不再拥有body那样“一览众山小”的全局视野而是被限制在了当前组件的DOM上下文中。这会引发一系列连锁反应4.1 定位异常被“关”在盒子里的下拉框这是最常见的问题。如果你的el-select组件外层有一个设置了overflow: hidden或overflow: auto的容器当下拉菜单尝试在这个容器边缘弹出时它可能会被直接裁切掉或者出现奇怪的滚动条。场景复现 假设你的组件结构如下template div classcontainer el-select :popper-append-to-bodyfalse ... !-- 选项 -- /el-select /div /template style scoped .container { height: 200px; overflow: auto; /* 或 hidden */ border: 1px solid #ccc; padding: 20px; } /style当下拉框展开并且选项较多时下拉菜单的一部分可能会消失在.container的边界之外因为它的“活动范围”被这个容器的overflow属性限制了。解决方案审查父级样式首先检查el-select所有上级容器特别是那些可能设置了overflow、position: relative|absolute|fixed、transform、filter或will-change属性的元素。这些属性会创建新的“层叠上下文”或“包含块”影响Popper.js的定位。如果可能调整这些容器的样式为下拉框留出空间。使用popper-optionsel-select提供了一个popper-options属性允许你直接向底层的Popper.js实例传递配置。这是解决复杂定位问题的利器。el-select :popper-append-to-bodyfalse :popper-options{ boundariesElement: viewport, // 尝试以视口为边界 preventOverflow: { enabled: true }, // 防止溢出 modifiers: { flip: { enabled: true }, // 允许翻转 // 强制使用固定定位策略脱离父级overflow限制 computeStyle: { gpuAcceleration: false } } } 这里的关键是computeStyle: { gpuAcceleration: false }。Popper.js默认会使用transform进行定位而transform会使元素受制于父级的overflow。关闭GPU加速即不使用transformPopper.js会回退到使用top/left进行绝对定位这样就有可能“突破”某些overflow的限制。但这并非百分百有效且可能影响性能。终极方案调整DOM结构或放弃false如果上述方法都无法解决你可能需要重新思考组件的DOM结构或者评估是否真的必须使用popper-append-to-body“false“。有时通过其他方式如定义全局的、带特定类名的样式来修改样式可能是更稳健的选择。4.2 层级z-index战争当弹出层不再位于body下它的z-index层级就只相对于其父级上下文有效。如果页面中存在其他也设置了高z-index的元素比如一个全屏的Dialog对话框你的下拉框可能会被压在下面。解决方案 在自定义下拉框样式时显式地设置一个足够大的z-index值。::v-deep .el-select-dropdown { /* ... 其他样式 ... */ z-index: 9999 !important; /* 确保足够高 */ }同时你需要了解页面中其他高阶元素的z-index范围避免“军备竞赛”。更好的做法是建立一个项目级的z-index管理规范。4.3 性能与可访问性考量性能理论上将Popper附加到body是更优的做法因为它减少了因父组件样式变化导致的Popper重新计算。设为false后如果父组件有复杂的布局或频繁更新可能会对性能有细微影响。但对于绝大多数后台管理系统这点差异可以忽略不计。可访问性对于屏幕阅读器等辅助技术保持弹出层在DOM中的逻辑位置有时更有益。但这也需要开发者自己确保焦点管理例如按下Esc关闭下拉框键盘导航选择选项在自定义样式后依然正常工作。Element UI组件本身处理了大部分逻辑但如果你完全重写了DOM结构就需要格外小心。5. 实战从零开始定制一个带搜索框的el-select样式理论说完了我们来个实战。目标是实现一个带搜索功能、且样式完全自定义的el-select。我们会用到popper-append-to-body“false“和popper-options。步骤1基础组件搭建首先我们创建一个使用el-select并启用过滤功能的组件。template div classcustom-select-demo el-select v-modelselectedValue filterable clearable placeholder请输入关键词搜索或选择 :popper-append-to-bodyfalse changehandleChange el-option v-foritem in filteredOptions :keyitem.value :labelitem.label :valueitem.value :disableditem.disabled /el-option /el-select /div /template script export default { data() { return { selectedValue: , options: [ { value: option1, label: 黄金糕 }, { value: option2, label: 双皮奶 }, { value: option3, label: 蚵仔煎, disabled: true }, { value: option4, label: 龙须面 }, { value: option5, label: 北京烤鸭 }, // ... 更多数据 ] }; }, computed: { filteredOptions() { // 这里可以加入自定义的过滤逻辑如果el-select自带的filterable不满足需求 return this.options; } }, methods: { handleChange(value) { console.log(选中的值:, value); } } }; /script步骤2深度定制下拉框样式现在我们在style scoped中深度定制下拉菜单目标是模仿一个现代感更强的设计。style scoped .custom-select-demo { width: 300px; margin: 50px auto; } /* 1. 定制下拉框整体 */ ::v-deep .el-select-dropdown { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%) !important; border: none; border-radius: 12px; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2); padding: 0; /* 清除默认内边距 */ overflow: hidden; /* 确保子元素圆角生效 */ } /* 2. 定制搜索输入框 */ ::v-deep .el-select-dropdown .el-input__inner { background-color: rgba(255, 255, 255, 0.9); border: 2px solid rgba(255, 255, 255, 0.5); border-radius: 20px; color: #333; margin: 15px; width: calc(100% - 30px); /* 减去左右margin */ box-sizing: border-box; } ::v-deep .el-select-dropdown .el-input__inner:focus { border-color: #fff; background-color: #fff; box-shadow: 0 0 0 2px rgba(102, 126, 234, 0.3); } ::v-deep .el-select-dropdown .el-input__suffix { right: 25px; /* 调整搜索图标位置 */ } /* 3. 定制下拉列表区域 */ ::v-deep .el-select-dropdown__list { padding: 0 15px 15px 15px; /* 上边距为0与搜索框紧贴 */ max-height: 300px; /* 控制最大高度 */ } /* 4. 定制每个选项项 */ ::v-deep .el-select-dropdown__item { color: #fff; padding: 12px 15px; border-radius: 8px; margin-bottom: 5px; transition: all 0.3s ease; font-size: 14px; position: relative; overflow: hidden; } /* 悬停和选中状态 */ ::v-deep .el-select-dropdown__item.hover, ::v-deep .el-select-dropdown__item:hover { background-color: rgba(255, 255, 255, 0.15) !important; transform: translateX(5px); } ::v-deep .el-select-dropdown__item.selected { background-color: rgba(255, 255, 255, 0.25) !important; font-weight: bold; color: #fff; } /* 禁用状态 */ ::v-deep .el-select-dropdown__item.is-disabled { color: rgba(255, 255, 255, 0.5); cursor: not-allowed; background-color: transparent !important; } ::v-deep .el-select-dropdown__item.is-disabled:hover { transform: none; background-color: transparent !important; } /* 5. 定制空状态和无匹配数据状态 */ ::v-deep .el-select-dropdown__empty, ::v-deep .el-select-dropdown__loading { color: rgba(255, 255, 255, 0.7); padding: 30px 0; text-align: center; } /* 6. 定制滚动条Webkit内核浏览器 */ ::v-deep .el-select-dropdown__list::-webkit-scrollbar { width: 6px; } ::v-deep .el-select-dropdown__list::-webkit-scrollbar-track { background: rgba(255, 255, 255, 0.1); border-radius: 3px; } ::v-deep .el-select-dropdown__list::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.3); border-radius: 3px; } ::v-deep .el-select-dropdown__list::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.5); } /style步骤3处理定位问题由于我们使用了渐变色背景和圆角并且popper-append-to-body为false如果父容器有overflow限制圆角可能被裁切。我们可以通过popper-options尝试优化。template el-select v-modelselectedValue filterable clearable :popper-append-to-bodyfalse :popper-optionscustomPopperOptions placeholder请输入关键词搜索或选择 !-- ... 选项 ... -- /el-select /template script export default { data() { return { selectedValue: , customPopperOptions: { placement: bottom-start, // 弹出位置 modifiers: { // 防止下拉框溢出视窗并设置一个偏移量 preventOverflow: { boundariesElement: viewport, padding: 10 }, // 允许在空间不足时翻转如向上弹出 flip: { enabled: true, behavior: [bottom-start, top-start, bottom-end, top-end] }, // 添加一个向下的偏移量让下拉框和输入框有点间距 offset: { offset: 0, 5 }, // 可选关闭gpu加速尝试解决某些overflow裁剪问题 computeStyle: { gpuAcceleration: false // 谨慎使用可能影响性能 } } } }; } }; /script经过以上三步你就得到了一个样式独特、带有搜索功能、且样式完全受控的el-select组件。它不再受全局样式污染所有样式定义都封装在当前组件内。6. 进阶在Vue 3与Element Plus中的变化如果你正在使用Vue 3和基于它开发的Element Plus情况略有不同但核心思想一致。属性名变更在Element Plus中这个属性的名称变成了:teleportedfalse。teleported这个词更形象地描述了“传送”到body的行为。将其设为false效果等同于Element UI的:popper-append-to-bodyfalse。!-- Element Plus -- el-select v-modelvalue :teleportedfalse !-- ... -- /el-select样式深度选择器Vue 3的style scoped中深度选择器的语法推荐使用:deep()。style scoped .custom-select :deep(.el-select-dropdown) { background-color: #f5f7fa; } /style或者你也可以使用CSS Modules或者不带scoped的style标签配合具体类名来限定样式作用域。Composition API在组合式API中你可以更灵活地动态计算popper-options。例如根据下拉框内容长度动态调整弹出方向。script setup import { ref, computed } from vue; const options ref([...]); // 你的选项数据 const selectedValue ref(); const customPopperOptions computed(() { // 如果选项很多优先向下弹出选项少可以向上 const placement options.value.length 5 ? bottom-start : top-start; return { placement, modifiers: [{ name: offset, options: { offset: [0, 8] } }] }; }); /script template el-select v-modelselectedValue :teleportedfalse :popper-optionscustomPopperOptions !-- ... -- /el-select /template7. 替代方案当popper-append-to-body“false“不是最佳选择时尽管popper-append-to-body“false“给了我们巨大的样式控制权但它带来的定位复杂度也是实实在在的。在以下场景你可能需要考虑替代方案场景一组件被多层嵌套在复杂布局容器中。调整所有父容器的overflow和position属性成本太高。场景二需要同时修改页面中大量el-select的样式且样式一致。为每个组件都设置false并写一遍样式太冗余。替代方案1使用全局样式 自定义类名这是最传统也是最稳定的方法。利用el-select的popper-class属性给下拉框的根元素添加一个唯一的类名然后在全局样式表中针对这个类名编写样式。template el-select v-modelvalue popper-classmy-custom-select-dropdown !-- ... -- /el-select /template style /* 在全局样式表如App.vue或独立的.css文件中 */ .my-custom-select-dropdown { background-color: #f5f7fa; border: 2px solid #409eff; } .my-custom-select-dropdown .el-select-dropdown__item { color: #666; } /style优点完全避免定位问题样式由浏览器自然层叠管理。缺点全局样式可能引发冲突需要良好的命名规范。替代方案2渲染到指定容器Element Plus支持Element Plus的teleported属性可以接受一个String选择器指示弹出层渲染到哪个容器而不是默认的body。template div idapp div classdialog-container !-- 这个对话框里的el-select下拉框会渲染到 .dialog-container 里 -- el-dialog el-select :teleported.dialog-container !-- ... -- /el-select /el-dialog /div /div /template这样下拉框既没有跑到body下引发样式隔离问题也没有留在可能具有overflow:hidden的父元素内而是到了一个你指定的、相对“干净”的容器中。这是一个非常灵活的折中方案。替代方案3完全自定义下拉内容使用slot对于样式定制需求极其复杂、甚至要改变DOM结构的情况el-select提供了slot来自定义下拉列表的内容。你可以完全不用el-option自己用div渲染列表并自己处理过滤、选中等所有逻辑。这给了你百分之百的控制权但代价是需要手动实现大量交互逻辑仅推荐在极端定制化场景下使用。在我经历的项目中大部分情况下方案1全局样式自定义类名是修改单个或少量通用样式的首选因为它简单可靠。而popper-append-to-body“false“则更适合用于某个特定页面或组件内需要对下拉框进行“手术刀”式精细样式打磨的场景前提是你已经准备好应对可能出现的定位问题。理解每种方法的优劣根据实际场景选择才是前端样式攻坚的正确姿势。

相关新闻

个人所得税计算全解析:从应纳税所得额到年度汇算清缴

个人所得税计算全解析:从应纳税所得额到年度汇算清缴

1. 从“糊涂账”到“明白账”:为什么我们需要自己算个税?每个月发工资的时候,看着工资条上“个人所得税”那一栏被扣掉的钱,你是不是也和我一样,偶尔会有点懵?这笔钱到底是怎么算出来的?公司财务…

2026/8/19 14:51:39 阅读更多 →
C/C++库开发全解析:从静态/动态库原理到CMake实战

C/C++库开发全解析:从静态/动态库原理到CMake实战

1. 项目概述:从“轮子”到“工具箱”的进化 如果你写过几行C或C代码,大概率已经和“库”打过交道了。比如,你想在屏幕上打印一行字,会调用 printf 或 cout ;你想计算一个数的平方根,会调用 sqrt 。这…

2026/8/19 19:04:14 阅读更多 →
Electron安装全攻略:从环境配置到深度排错,解决卡顿与报错

Electron安装全攻略:从环境配置到深度排错,解决卡顿与报错

1. 项目概述:为什么“正确姿势”如此重要? 如果你正在接触桌面应用开发,或者想把你的Web技术栈扩展到桌面端,那么Electron这个名字你一定不陌生。它让前端开发者用HTML、CSS和JavaScript就能构建出跨平台的桌面应用,像…

2026/8/18 13:27:34 阅读更多 →

最新新闻

Pangolin-NPU 避坑清单:CPU 回退禁令、HF32 时序要求与 5 个高频错误

Pangolin-NPU 避坑清单:CPU 回退禁令、HF32 时序要求与 5 个高频错误

Pangolin-NPU 避坑清单:CPU 回退禁令、HF32 时序要求与 5 个高频错误 【免费下载链接】pangolin-npu 项目地址: https://ai.gitcode.com/atlasleong/pangolin-npu 在昇腾 NPU 上跑通 Pangolin RNA 剪接位点预测模型,远比想象中容易踩坑。Pangoli…

2026/8/20 20:00:10 阅读更多 →
kglab社区发现实战:用igraph+leidenalg挖掘图谱中的隐藏社区结构

kglab社区发现实战:用igraph+leidenalg挖掘图谱中的隐藏社区结构

kglab社区发现实战:用igraphleidenalg挖掘图谱中的隐藏社区结构 【免费下载链接】kglab Graph Data Science: an abstraction layer in Python for building knowledge graphs, integrated with popular graph libraries – atop Pandas, NetworkX, RAPIDS, RDFlib,…

2026/8/20 20:00:10 阅读更多 →
Python网络爬虫实战:解析抖音视频直链与批量下载技术指南

Python网络爬虫实战:解析抖音视频直链与批量下载技术指南

在实际项目中,有时需要将抖音平台上的短视频内容进行本地化保存,用于个人学习、内容分析或合规的素材收集。手动下载效率低下,而市面上许多工具要么收费,要么功能受限,甚至存在安全风险。因此,一个免费、开…

2026/8/20 20:00:10 阅读更多 →
Glite ARF:验证器驱动的并行LLM代码生成与质检框架实践

Glite ARF:验证器驱动的并行LLM代码生成与质检框架实践

1. 项目缘起:当代码生成遇上“质检员”最近在折腾一个自动化代码生成的项目,核心想法很简单:让大语言模型(LLM)像流水线工人一样,并行地为我生成多个代码片段,然后从中筛选出最好的那个。听起来…

2026/8/20 20:00:10 阅读更多 →
故障排查手册:Qwen3.8-27B-4bit 常见报错的 8 个解决方案

故障排查手册:Qwen3.8-27B-4bit 常见报错的 8 个解决方案

故障排查手册:Qwen3.8-27B-4bit 常见报错的 8 个解决方案 【免费下载链接】Qwen3.8-27B-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Qwen3.8-27B-4bit Qwen3.8-27B-4bit 是 mlx-community 社区基于 MLX 框架发布的 4bit 量化多模态大…

2026/8/20 20:00:10 阅读更多 →
为什么你的Mac菜单栏总是乱糟糟?用Dozer三区域机制彻底解决图标收纳难题

为什么你的Mac菜单栏总是乱糟糟?用Dozer三区域机制彻底解决图标收纳难题

为什么你的Mac菜单栏总是乱糟糟?用Dozer三区域机制彻底解决图标收纳难题 【免费下载链接】Dozer Hide menu bar icons on macOS 项目地址: https://gitcode.com/gh_mirrors/do/Dozer 每次打开Mac,屏幕右上角的菜单栏都像一场"图标大聚会&quo…

2026/8/20 19:59:09 阅读更多 →

日新闻

Framework笔记本BIOS更新变砖,“可维修”承诺遭遇芯片级维修考验!

Framework笔记本BIOS更新变砖,“可维修”承诺遭遇芯片级维修考验!

Framework笔记本BIOS更新引“变砖”危机2026年7月7日,Framework向用户quantum5发送邮件,建议其安装BIOS 3.20更新。然而,更新后电脑出现严重问题,屏幕显示三角形和随机像素图案,风扇狂转,系统完全挂起。qua…

2026/8/20 0:00:46 阅读更多 →
2026还在担忧建站平台哪家好?手把手带你搭建自家网站!

2026还在担忧建站平台哪家好?手把手带你搭建自家网站!

2026还在担忧建站平台哪家好?手把手带你搭建自家网站!据艾瑞咨询发布的《2026年中国企业数字化服务市场研究报告》,2025年国内网站建设市场规模已达896亿元,同比增长18.7%。中国互联网络信息中心数据显示,截至2025年底…

2026/8/20 0:00:46 阅读更多 →
2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?

2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?

2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?据艾瑞咨询《2026年中国企业数字化服务市场研究报告》,2025年国内网站建设市场规模已达896亿元,其中高端定制网站服务占比突破42%。更值得关注的是,91%的规模以上企业…

2026/8/20 0:00:46 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/19 11:55:18 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/19 9:46:27 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/19 11:55:16 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/20 6:11:08 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/19 7:42:22 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/19 11:55:13 阅读更多 →