如何更改/覆盖 vuetify 中开关标签的默认颜色?

问题描述 投票:0回答:7

从 vuetify 的官方文档中可以看到,开关的标签有自己预定义的颜色。我如何覆盖它们以获得黑色文本?我将开关作为道具从称为表单结构的全局组件传递到我命名为“Primary”的另一个组件

https://vuetifyjs.com/en/components/selection-controls

<v-switch v-if="externalSwitch" model="switch2":label="externalSwitchLabel"> 
</v-switch>

<v-layout v-for="info in information" :key="info.title">
  <v-flex>
    <form-structure :externalSwitchLabel="`${info.title}`" 
      :externalSwitch="true" :hasSubTitle="true" :subTitle="`${info.status}`" 
      :script="`${info.script}`">
    </form-structure>
  </v-flex>
</v-layout>

我的数组看起来像这样:

information : [
  {title: "Something1", status:"active", script: "Hello"},
  {title: "Something2", status:"in Progress", script: "Ciao" }
]

我的 CSS 看起来像这样:

<style scoped>
.v-label.theme--light {
  color: black
}
</style>
vue.js vuejs2 vue-component vuetify.js nuxt.js
7个回答
7
投票

我尝试了插槽方法,它对我有用:

<v-switch>
   <template v-slot:label>
      <span class="input__label">Label text</span>
   </template>
</v-switch>

CSS 看起来像这样:

.input__label {
   color: black;
}

1
投票

您可以通过提供

color
rgb
值来使用
hexadecimal
属性,如下所示:

new Vue({
  el: '#app',
  data () {
    return {
   
      switch1: true,
      switch2: true
    }
  }
})
.v-input__slot .v-label{
color: black!important
}
<script src="https://cdn.jsdelivr.net/npm/babel-polyfill/dist/polyfill.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons">
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/vuetify.min.css">
<div id="app">
  <v-app id="inspire">
    <v-container fluid px-0>
     
      <v-switch
        :label="`Switch 1: ${switch1.toString()}`"
        v-model="switch1"
                color="#f45525"
      ></v-switch>
       <v-switch
        :label="`Switch 2: ${switch2.toString()}`"
        v-model="switch2"
                color="rgb(0,150,45)"
      ></v-switch>
    </v-container>
  </v-app>
</div>


1
投票

如果您不想覆盖标签的默认样式,您可以将一个槽传递给

v-switch
以及您想要的样式元素。

示例:

<v-switch v-model="enableScreenshot" label="Enable Screenshot">
   <template v-slot:label>
      <span class="v-label-white">Enable Screenshot</span>
   </template>
</v-switch>

那么你的风格:

.v-label-white {
  color: white;
  font-weight: bolder
}

1
投票

我的 Vuetify v3 解决方案

更新父级和拇指的默认颜色:

.v-selection-control__wrapper,.v-switch__thumb {
  color: deeppink;
}

并继续使用

color
作为活动颜色

v-switch off/on

代码笔

注意:CSS 没有作用域,但您可以添加更具体的选择器以确保只有您的特定开关受到影响


1
投票

不久前我在 vue2 的 vuetify 中偶然发现了这个问题。我在某个地方找到了解决方案,可能是在 stackOverflow 上。对我有帮助的是使用这个:

  <style scoped>   
  .v-input--checkbox >>> label {
      color: black ;
      /* background-color: orange; */
  } 
  </style>

将项目升级到vue3时,使用vuetify for vue3,问题又回来了。我找到了解决方案,这里重要的是将不透明度重置为 100。

  <style scoped>   
  .v-checkbox :deep(label) {
      /* color: black ; */
      /* background-color: orange; */
      opacity: 100;   
  } 
  </style>

在你们问之前:不,我不知道

>>>
是什么意思,我只知道它有效。


0
投票

您只需从样式中删除scoped

<style>
.v-label.theme--light{
  color: black
}
</style>

这意味着该样式将在应用程序中全局应用。


0
投票

试试这个。

.v-input--is-label-active label {
    color: red !important;
}
© www.soinside.com 2019 - 2024. All rights reserved.