如何在 Vuetify 组件上应用 custom/override CSS?
How to apply custom/override CSS on Vuetify component?
假设我在我的 Vue 组件中添加了 Vuetify 的 v-text-field
组件,例如
<v-text-field v-model="email"name="email" type="email" color="#90C143" label="Email">
当我检查那个元素时,它生成正常的 HTML 就像
<div class="v-input v-input--has-state theme--light v-text-field v-text-field--is-booted" style="">
<div class="v-input__control">
<div class="v-input__slot">
<div class="v-text-field__slot">
<label for="input-39" class="v-label theme--light" style="left: 0px; right: auto; position: absolute;">Email
</label>
<input name="email" id="input-39" type="email">
</div>
<div class="v-input__append-inner">
<div class="v-input__icon v-input__icon--">
<i role="button" class="v-icon notranslate v-icon--link material-icons theme--light" style="">
</i>
</div>
</div>
</div>
</div>
</div>
如果我想在不影响功能的情况下为 v-text-field
自定义整个 CSS,我必须处理的内容
在组件里面添加一个cssclass:
<style scoped>
.text-field{
color: #90C143 !important; /* this will override the existing property applied */
/* add whatever properties you want */
}
</style>
然后在组件中将此添加到 class 而不是颜色 属性:
<v-text-field v-model="email"name="email" type="email" class="text-field" label="Email">
您只能使用 vuetify documentation 中给出的预定义 classes。
如果你想在颜色 属性 上使用自定义颜色,你可以设置你的
在 main.js:
中的 Vuetify 对象中拥有自己的主题
Vue.use(Vuetify)
const vuetify = new Vuetify({
theme: {
themes: {
light: {
primary: '#90C143',
secondary: '#b0bec5',
anchor: '#8c9eff',
},
},
},
})
现在您可以在任何组件中使用指定的主题覆盖:
<v-text-field v-model="email"name="email" type="email" color="primary" label="Email">
您也可以在 app.vue
中全局应用 CSS:
<style>
/* don't use scoped css */
.theme--light.v-text-field>.v-input__control>.v-input__slot:before {
border-color: #90C143;
}
.theme--light.v-label {
color: #90C143;
}
.theme--light.v-input:not(.v-input--is-disabled) input, .theme--light.v-input:not(.v-input--is-disabled) textarea {
color: #90C143;
}
</style>
假设我在我的 Vue 组件中添加了 Vuetify 的 v-text-field
组件,例如
<v-text-field v-model="email"name="email" type="email" color="#90C143" label="Email">
当我检查那个元素时,它生成正常的 HTML 就像
<div class="v-input v-input--has-state theme--light v-text-field v-text-field--is-booted" style="">
<div class="v-input__control">
<div class="v-input__slot">
<div class="v-text-field__slot">
<label for="input-39" class="v-label theme--light" style="left: 0px; right: auto; position: absolute;">Email
</label>
<input name="email" id="input-39" type="email">
</div>
<div class="v-input__append-inner">
<div class="v-input__icon v-input__icon--">
<i role="button" class="v-icon notranslate v-icon--link material-icons theme--light" style="">
</i>
</div>
</div>
</div>
</div>
</div>
如果我想在不影响功能的情况下为 v-text-field
自定义整个 CSS,我必须处理的内容
在组件里面添加一个cssclass:
<style scoped>
.text-field{
color: #90C143 !important; /* this will override the existing property applied */
/* add whatever properties you want */
}
</style>
然后在组件中将此添加到 class 而不是颜色 属性:
<v-text-field v-model="email"name="email" type="email" class="text-field" label="Email">
您只能使用 vuetify documentation 中给出的预定义 classes。
如果你想在颜色 属性 上使用自定义颜色,你可以设置你的 在 main.js:
中的 Vuetify 对象中拥有自己的主题Vue.use(Vuetify)
const vuetify = new Vuetify({
theme: {
themes: {
light: {
primary: '#90C143',
secondary: '#b0bec5',
anchor: '#8c9eff',
},
},
},
})
现在您可以在任何组件中使用指定的主题覆盖:
<v-text-field v-model="email"name="email" type="email" color="primary" label="Email">
您也可以在 app.vue
中全局应用 CSS:
<style>
/* don't use scoped css */
.theme--light.v-text-field>.v-input__control>.v-input__slot:before {
border-color: #90C143;
}
.theme--light.v-label {
color: #90C143;
}
.theme--light.v-input:not(.v-input--is-disabled) input, .theme--light.v-input:not(.v-input--is-disabled) textarea {
color: #90C143;
}
</style>