在使用el-select的时候,其样式会按照Elementui自带的默认样式为基准;

 但往往开发过程中,下拉框的样式可能并不是我们想要的;这是我遇到过的一个案例,开发需求上与elementui默认样式大相径庭;

 如何进行修改呢?

通过Element-ui的Select Attributes可发现,有这样一个属性 popper-append-to-body

popper-append-to-body是一个Popper.js库的选项,用于指定Popper元素是否应该附加到文档的body元素上。如果设置为true,则Popper元素将附加到body元素上,否则将附加到参考元素的父元素上。这个选项可以用来解决一些样式问题,例如在使用z-index时,如果Popper元素不附加到body元素上,可能会被其他元素遮挡。

<body>
           <el-select
            v-model="pageInfo.projectStatus"
            size="small"
            placeholder="请选择项目状态"
            style="width: 100%"
            clearable
            :loading="projectStatusLoading"
            :popper-append-to-body="false"
            @change="projectStatusChange"
          >
            <el-option
              v-for="item in projectStatusSel"
              :key="item.typeValue"
              :label="item.typeLabel"
              :value="item.typeValue"
            ></el-option>
          </el-select>
</body>

我们先把其popper-append-to-body的属性设为false,让其可以修改el-select的局部样式;

之后按照其ui视图对样式进行分析;

 需要知道的有el-select里层元素,对里层元素进行样式操作

  • el-input__inner的背景色——外层的两级父元素设置为透明色;
  • el-input聚焦的时候——外层的border会有一个样式;

  • el-input上下图标——样式设置 ;

  • el-select最外层.el-select-dropdown 我这边给加了opacity及定位属性;

  • .el-select-dropdown__item——单个选项的样式修改

  • .el-select-dropdown__item:hover——hover时的样式

  • .popper__arrow::after——修改的是下拉框选项内容上方的尖角

<style lang="less" scoped>
     // 未选中任何选项的时候 placeholder的样式 需要先选中父元素 增加权重
  /deep/ input::-webkit-input-placeholder {
    color: #fff;
  }
  /deep/  input::-moz-input-placeholder {
    color: #fff;
  }
  /deep/  input::-ms-input-placeholder {
    color: #fff;
  }

  //修改的是el-input的样式 
  //一种方法是设置最里层el-input__inner的背景色 外层的两级父元素设置为透明色
  //另一种方法是从el-select到el-input__inenr的背景色都设置为需要的颜色
  /deep/ .el-select,
  /deep/ .el-input,
  /deep/ .el-input__inner{
    background-color:#09162F ;
    color:#fff;
    // border:0px;
    border-radius:0px;
  }

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

  //修改的是el-input上下的小图标的颜色
  /deep/ .el-select .el-input .el-select__caret{
    color:#fff;
  }

  //修改总体选项的样式 最外层
  /deep/ .el-select-dropdown{
    background-color: #09162F;
    margin: 0px;
    // border:0px;
    border: 1px solid #70A9FF;
    border-radius: 0px;
    position: fixed !important;
    top: 90px !important;
    left: 10px !important;
    opacity: .9 !important;
  }

  //修改单个的选项的样式
  /deep/ .el-select-dropdown__item{
    background-color: transparent;
    color:#fff;
  }

  //item选项的hover样式
  /deep/ .el-select-dropdown__item.hover, 
  /deep/ .el-select-dropdown__item:hover{
    color:#409eff;
    background: white;
  }

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

仅供参考:按项目ui为准;

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐