• Vue项目中使用element-plus UI库-并对下拉搜索框样式修改-el-select代码封装


    对下列列表进行自定义 

    基础代码

    样式

    样式修改

    1. <style lang="less">
    2. // .ly-tab-sou {
    3. // .el-input__suffix {
    4. // display: none;
    5. // }
    6. // }
    7. .popper-ly-tab-sou {
    8. --el-bg-color-overlay: #1f2328;
    9. --el-border-color-light: #30353c;
    10. .el-scrollbar {
    11. --el-fill-color-light: #484d56;
    12. }
    13. .el-popper__arrow {
    14. display: none;
    15. }
    16. .el-select-dropdown__item.selected {
    17. color: #31daff;
    18. }
    19. .el-select-dropdown__item {
    20. color: #eaecef;
    21. }
    22. }
    23. style>

    使用

    1. <SearchSelect
    2. class="ly-tab-ssu"
    3. v-model="selectVal"
    4. :options="CurrencyList"
    5. :filterable="true"
    6. :prefix="true"
    7. placeholder="搜索"
    8. @onChangeSelect="selectChange"
    9. />
    10. <script setup>
    11. import { ref } from 'vue';
    12. import SearchSelect from '@/views/Prices/components/SearchBar/SearchSelect.vue';
    13. const selectVal = ref('');
    14. const options = ref([
    15. {
    16. value: '选项1',
    17. label: '选项1'
    18. },
    19. {
    20. value: '选项2',
    21. label: '选项2'
    22. }
    23. ]);
    24. const selectChange = (val) => {
    25. console.log('selectChange', val);
    26. };
    27. script>

     代码封装

    1. <template>
    2. <el-select
    3. class="ly-tab-sou"
    4. popper-class="popper-ly-tab-sou"
    5. v-model="selectVal"
    6. :filterable="filterable"
    7. :placeholder="placeholder"
    8. @change="selectChange"
    9. >
    10. <template #prefix v-if="prefix">
    11. <img src="@/assets/images/prices/search.svg" />
    12. template>
    13. <el-option
    14. v-for="item in options"
    15. :key="item.value"
    16. :label="item.label"
    17. :value="item.value"
    18. />
    19. el-select>
    20. template>
    21. <script setup>
    22. import { ref, defineProps, defineEmits, computed } from 'vue';
    23. const props = defineProps({
    24. modelValue: {
    25. type: [Number, String],
    26. default: ''
    27. },
    28. options: {
    29. type: Array,
    30. default: () => []
    31. // [{label: '全部合约',value: 'all'}]
    32. },
    33. filterable: {
    34. type: Boolean,
    35. default: false
    36. },
    37. prefix: {
    38. type: Boolean,
    39. default: false
    40. },
    41. align: {
    42. type: String,
    43. default: 'right'
    44. },
    45. placeholder: {
    46. type: String,
    47. default: '搜索'
    48. }
    49. });
    50. const emits = defineEmits(['update:modelValue', 'onChangeSelect']);
    51. const selectVal = computed({
    52. get() {
    53. return props.modelValue;
    54. },
    55. set(val) {
    56. emits('update:modelValue', val);
    57. }
    58. });
    59. const selectChange = (val) => {
    60. // console.log('selectChange', val);
    61. emits('onChangeSelect', val);
    62. };
    63. script>
    64. <style lang="less" scoped>
    65. .ly-tab-sou {
    66. width: 225px;
    67. height: 40px;
    68. flex-shrink: 0;
    69. border-radius: 4px;
    70. border: 1px solid #404040;
    71. background: #121212;
    72. display: flex;
    73. align-items: center;
    74. :deep(.el-input__inner) {
    75. color: #fff;
    76. }
    77. :deep(.select-trigger) {
    78. width: 100%;
    79. }
    80. // :deep(.el-input__suffix) {
    81. // .el-input__suffix-inner {
    82. // .el-icon {
    83. // background-image: url('@/assets/images/prices/arrow.svg');
    84. // width: 6px;
    85. // height: 4px;
    86. // background-size: cover;
    87. // svg {
    88. // display: none;
    89. // }
    90. // }
    91. // }
    92. // }
    93. }
    94. style>
    95. <style lang="less">
    96. // .ly-tab-sou {
    97. // .el-input__suffix {
    98. // display: none;
    99. // }
    100. // }
    101. .popper-ly-tab-sou {
    102. --el-bg-color-overlay: #1f2328;
    103. --el-border-color-light: #30353c;
    104. .el-scrollbar {
    105. --el-fill-color-light: #484d56;
    106. }
    107. .el-popper__arrow {
    108. display: none;
    109. }
    110. .el-select-dropdown__item.selected {
    111. color: #31daff;
    112. }
    113. .el-select-dropdown__item {
    114. color: #eaecef;
    115. }
    116. }
    117. style>

  • 相关阅读:
    【数据结构】堆(万字详解)
    从底层分析并详解SpringAOP底层实现
    车辆调度算法
    static总结
    Python 网页爬虫的原理是怎样的?
    连续信号与系统的频域分析之傅里叶级数
    Windows OpenGL 图像阴影
    selenium自动化测试入门 —— 键盘鼠标事件ActionChains
    掌握测评补单技术对Shopee、Lazada店铺有什么好处?
    will be initialized after [-Werror=reorder]
  • 原文地址:https://blog.csdn.net/JackieDYH/article/details/132901809