vue.js - 如何仅更改默认选择选项的颜色,而不更改 Vue 中的其他选项?
问题描述
我正在尝试为默认选择的选项“请选择一个组合”应用不同的颜色(新颜色),而其他组合选项“A”、“B”、“C”、D”应该是黑色。
我只希望禁用的默认选项为绿色,而所有其他选项为黑色。
我们如何做到这一点?我一直在尝试使用条件类,但它适用于所有选项,而不仅仅是第一个默认选项。
<select
v-model="comboSet"
class="combo-padding"
:class="{ 'new-color': comboSet !== null }"
>
<option value="" selected disabled hidden style="color: green">
Please pick a combo
</option>
<option
v-for="option in comboOptions"
placeholder="Please Select a Combo"
:value="option"
:key="option"
>
{{ option }}
</option>
</select>
data () {
comboOptions = ["A", "B", "C", D"]
}
.new-color {
color: green !important;
}
谢谢您的帮助!
解决方案
请记住,选择样式选项是有限的,您可以将类应用于选项元素。条件样式可以像这样应用:
<option
v-for="(i, index) in items"
:class="{ steely: styleMe == 1, purple: styleMe != 1 }"
:key="index">
{{ i }}
</option>
模板是:
<template>
<div>
<h1>Select example</h1>
<select
:class="{ 'new-color': comboSet == 'Default option' }"
v-model="comboSet">
<option selected disabled class="new-color">Default option</option>
<option
v-for="(i, index) in items"
:class="{ steely: styleMe == 1, purple: styleMe != 1 }"
:key="index">
{{ i }}
</option>
</select>
<button @click.prevent="styleMe = !styleMe">Change</button>
</div>
</template>
使用如下所示的数据:
data() {
return {
items: ["Option One", "Option Two", "Option Three"],
styleMe: false,
comboSet: "Default option",
}
}
样式如下所示:
.new-color {
color: green;
}
.steely {
color: steelblue;
}
.purple {
color: purple;
}
我在这里用条件类创建了一个更完整的例子:code sandbox select example VueJs
希望这是有道理的并回答了这个问题。
推荐阅读
- reactjs - 在 makeStyles 主题材料-ui 上设置和高度
- ios - 关闭 iOS 14 Google Cast 网络访问提示后,方向更改为纵向
- python - 使用pytest,如何正确模拟外部模块的功能?
- c# - 如何将使用 system.text.json 的 sharepoint 2019 项目部署到本地实例?
- teradata-sql-assistant - Teradata 在创建/替换过程时删除多行注释
- sql - 如何在选择中使用函数以及 Sequalize 中的所有记录?
- azure - Azure 应用服务插槽配置并在交换期间重新启动
- install4j - 使用 javaagents 安装 4j?
- java - Apache Storm 的 Stream API 中的并行性
- apache-kafka - 相当于 Flink Kafka 源码中结构化流的 minPartitions