【发布时间】:2020-05-10 15:46:58
【问题描述】:
【问题讨论】:
标签: javascript vue.js settings vuetify.js default
【问题讨论】:
标签: javascript vue.js settings vuetify.js default
您可以从VTextField(参见treeshaking)创建一个包装器组件和extends,并自定义默认值。
import Vue from 'vue';
import { VTextField } from 'vuetify/lib';
Vue.component('TextFieldOutlined', {
extends: VTextField,
props: {
outlined: {
type: Boolean,
default: true
}
}
})
像这样使用它:
<text-field-outlined
label="Some label"
clearable
dense>
</text-field-outlined>
FWIW,扩展一个组件意味着所有基础组件的道具都被传递,因此同样可用。
【讨论】:
默认情况下,v-text-field 使用应用程序的原色。
如果你想改变单个v-text-field的轮廓颜色当它被聚焦时,你可以简单地使用color prop。
<v-text-field
outlined
color="red"
/>
这将改变所有v-text-field的颜色当他们被聚焦时:
import Vue from 'vue'
import Vuetify from 'vuetify/lib/framework'
Vue.use(Vuetify)
export default new Vuetify({
theme: {
options: {
customProperties: true
},
themes: {
light: {
primary: '#5E72E4'
}
}
}
})
现在,如果你想在元素没有聚焦的情况下改变轮廓的颜色,你可以使用SASS variable API。
如果您通过 Vue CLI 安装了 Vuetify,请创建一个 src/scss/variables.scss 文件:
$material-light: ( 'text-fields': (
'filled': rgba(0, 0, 0, 0.06),
'filled-hover': rgba(0, 0, 0, 0.12),
'outlined': rgba(0, 0, 0, 0.2),
'outlined-disabled': rgba(0, 0, 0, 0.1),
'outlined-hover': rgba(0, 0, 0, 0.4)
));
$text-field-outlined-fieldset-border: 1px solid currentColor;
这样您就可以完全控制集中状态和初始状态。上面的例子使轮廓更轻,焦点轮廓宽度减小到 1px;
【讨论】:
v-text-field 设置概述属性的问题。这不是简单地改变轮廓颜色吗?默认情况下列出所有字段怎么样?此外,通过设置原色,您实际上会影响依赖原色的所有其他组件。例如,仅仅因为您想将文本字段的默认轮廓颜色设置为#5E72E4,并不一定意味着您希望所有“活动”v-tabs 都使用相同的颜色,对吧?那么,为什么不直接使用 $text-field-outlined-fieldset-border 变量呢?
outlined 文本字段的外观。这并不完全是设置或使用该属性。而且您基本上是在强制 filled 和 outlined 文本字段看起来相似,因为显然 v-text-field--outlined 不会使用这种方法设置。