ElementUI,修改el-select下拉框的样式

  1. 在使用到el-select组件中设置:popper-append-to-body=“false”
<el-select
    v-model="value"
    :popper-append-to-body="false"
    placeholder="请选择"
>
	  <el-option
	      v-for="item in options"
	      :key="item.value"
	      :label="item.label"
	      :value="item.value">
	  </el-option>
</el-select>
  1. 修改样式
<style lang="scss" scoped>
//修改的是el-input的样式

//一种方法是设置最里层el-input__inner的背景色 外层的两级父元素设置为透明色

//另一种方法是从el-select到el-input__inenr的背景色都设置为需要的颜色

::v-deep .el-select,
::v-deep .el-input,
::v-deep .el-input__inner{
  border-radius: 10px;
  color:#fff;
  //border: 1px solid green;
  border-radius:0px;
  border-color:green;
  text-align: center;
}

//el-input聚焦的时候 外层的border会有一个样式
::v-deep .el-select .el-input.is-focus .el-input__inner{
  //border:0px;
  border: 1px solid green;
}

//修改的是el-input上下的小图标的颜色

::v-deep .el-select .el-input .el-select__caret{
  color: green;

}

//修改总体选项的样式 最外层

::v-deep .el-select-dropdown{
  //rgba(87,133,87,0.8)
  background: rgba(87, 133, 87, 0.78);
  //margin: 0px;
  border:0px;
  //border-radius: 0px;
  //left: 0px !important;

}

//修改单个的选项的样式

::v-deep .el-select-dropdown__item{
  background-color: transparent;
  color:#fff;
}

//item选项的hover样式

::v-deep .el-select-dropdown__item.hover,

::v-deep .el-select-dropdown__item:hover{
  color: rgb(21, 94, 38);
  background: rgba(87, 133, 87, 0.3);
}

//修改的是下拉框选项内容上方的尖角
::v-deep .el-popper .popper__arrow, .el-popper .popper__arrow::after{
  display: none;
}
</style>

  1. 效果
    在这里插入图片描述

参考:
https://blog.youkuaiyun.com/qq_26695613/article/details/127870263

https://blog.youkuaiyun.com/Alone_Endeavor/article/details/130986687

### 解决方案 当 `el-select` 的下拉框在 `dialog` 中出现位置偏移时,可以通过调整其弹出层的行为来解决问题。以下是几种可行的方法: #### 方法一:修改 `popper-append-to-body` 属性 通过查阅官方文档可以得知,默认情况下,`el-select` 组件会将弹出框插入到 `<body>` 元素中,这可能导致定位问题[^1]。因此,可以尝试将 `popper-append-to-body` 属性设置为 `false`,从而让弹出框保持在其父级容器内部。 ```vue <template> <el-dialog :visible.sync="dialogVisible"> <el-select v-model="value" popper-append-to-body="false"> <el-option label="选项1" value="option1"></el-option> <el-option label="选项2" value="option2"></el-option> </el-select> </el-dialog> </template> <script> export default { data() { return { dialogVisible: true, value: '' }; } }; </script> ``` 这种方法适用于大多数场景,能够有效解决因弹出框脱离原有 DOM 结构而导致的位置偏差问题。 --- #### 方法二:调整页面样式 如果方法一只能部分解决问题或者无法满足需求,则可以从 CSS 样式的角度入手。具体来说,在当前页面的 `<body>` 和根节点上应用特定样式可以帮助改善定位效果[^2]。 ```css body { position: relative; } #app { margin-top: 70px; /* 调整顶部间距 */ } ``` 此方式通过对全局样式的控制间接影响子组件的表现形式,尤其适合那些依赖于外部环境才能正常渲染的情况。 --- #### 方法三:利用自定义类名覆盖默认行为 对于更复杂的项目结构而言,可能还需要进一步定制化处理逻辑。此时可以在初始化阶段引入额外参数来自定义 dropdown 容器的选择依据,并结合实际业务需求灵活运用[^3]。 例如: ```javascript import Vue from 'vue'; import ElementUI from 'element-ui'; Vue.use(ElementUI, { size: 'small', zIndex: 3000 // 提升层级优先级 }); ``` 同时也可以借助 slot 插槽机制重新定义展示区域的具体实现细节。 --- 以上三种途径均能在不同程度上缓解乃至彻底消除由对话框引发的选择器错位现象,请根据具体情况选取最合适的策略加以实施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值