插件窝 干货文章 如何自定义Element UI多选框中单个选项的样式?

如何自定义Element UI多选框中单个选项的样式?

Checkbox label 样式 style 409    来源:    2025-03-21

在Element UI中,自定义多选框(Checkbox)中单个选项的样式可以通过以下几种方式实现:

1. 使用 scoped 样式

你可以在组件的 <style> 标签中使用 scoped 属性来限定样式的作用范围,然后通过选择器来定制单个选项的样式。

<template>
  <el-checkbox-group v-model="checkedCities">
    <el-checkbox label="Beijing">北京</el-checkbox>
    <el-checkbox label="Shanghai">上海</el-checkbox>
    <el-checkbox label="Guangzhou">广州</el-checkbox>
    <el-checkbox label="Shenzhen">深圳</el-checkbox>
  </el-checkbox-group>
</template>

<script>
export default {
  data() {
    return {
      checkedCities: []
    };
  }
};
</script>

<style scoped>
/* 自定义北京选项的样式 */
.el-checkbox__label[for="Beijing"] {
  color: red;
  font-weight: bold;
}

/* 自定义上海选项的样式 */
.el-checkbox__label[for="Shanghai"] {
  color: blue;
  font-style: italic;
}
</style>

2. 使用 classstyle 绑定

你可以通过 classstyle 绑定来动态地为每个选项添加样式。

<template>
  <el-checkbox-group v-model="checkedCities">
    <el-checkbox 
      v-for="city in cities" 
      :key="city.label" 
      :label="city.label" 
      :class="city.class"
    >
      {{ city.name }}
    </el-checkbox>
  </el-checkbox-group>
</template>

<script>
export default {
  data() {
    return {
      checkedCities: [],
      cities: [
        { label: 'Beijing', name: '北京', class: 'beijing-style' },
        { label: 'Shanghai', name: '上海', class: 'shanghai-style' },
        { label: 'Guangzhou', name: '广州', class: 'guangzhou-style' },
        { label: 'Shenzhen', name: '深圳', class: 'shenzhen-style' }
      ]
    };
  }
};
</script>

<style>
.beijing-style .el-checkbox__label {
  color: red;
  font-weight: bold;
}

.shanghai-style .el-checkbox__label {
  color: blue;
  font-style: italic;
}

.guangzhou-style .el-checkbox__label {
  color: green;
  text-decoration: underline;
}

.shenzhen-style .el-checkbox__label {
  color: purple;
  font-size: 1.2em;
}
</style>

3. 使用 slot 自定义内容

Element UI 的 el-checkbox 组件支持使用 slot 来自定义选项的内容,你可以通过这种方式来完全控制每个选项的样式。

<template>
  <el-checkbox-group v-model="checkedCities">
    <el-checkbox label="Beijing">
      <span class="custom-label">北京</span>
    </el-checkbox>
    <el-checkbox label="Shanghai">
      <span class="custom-label">上海</span>
    </el-checkbox>
    <el-checkbox label="Guangzhou">
      <span class="custom-label">广州</span>
    </el-checkbox>
    <el-checkbox label="Shenzhen">
      <span class="custom-label">深圳</span>
    </el-checkbox>
  </el-checkbox-group>
</template>

<script>
export default {
  data() {
    return {
      checkedCities: []
    };
  }
};
</script>

<style>
.custom-label {
  color: orange;
  font-weight: bold;
  font-size: 1.1em;
}
</style>

4. 使用全局样式

如果你希望在整个应用中都应用相同的样式,可以直接在全局样式文件中定义样式。

/* 全局样式文件,如 styles.css */
.el-checkbox__label[for="Beijing"] {
  color: red;
  font-weight: bold;
}

.el-checkbox__label[for="Shanghai"] {
  color: blue;
  font-style: italic;
}

然后在 main.jsApp.vue 中引入这个全局样式文件。

import './styles.css';

总结

以上几种方式都可以实现自定义Element UI多选框中单个选项的样式。根据你的需求选择合适的方式即可。如果你只需要在某个组件中自定义样式,推荐使用 scoped 样式或 class 绑定;如果你希望在整个应用中应用相同的样式,可以使用全局样式。