我在vue组件中有下拉列表,该元素的类是“表单控件”,它有自己的样式。我需要覆盖该类的样式。为此,我做了如下编码(在vue组件中),
<style scoped> .form-control{ border-radius: 50px !important; color: #823F98 !important; border: 1px solid #3FA294 !important; } </style>
但这个对我不起作用,那怎么破解?谢谢大家!
fkvaft9z1#
使用无作用域样式可能非常危险,尤其是像form-control这样的通用类名。我认为在父组件中使用深层样式是一种更好的方法:
form-control
<style scoped> >>>.form-control{ border-radius: 50px !important; color: #823F98 !important; border: 1px solid #3FA294 !important; } </style>
但是如果你可以重构你的子组件,并添加一个像formControlStyle这样的 prop 和你的CSS样式,这将是避免副作用的最佳解决方案.你可以添加一个默认值给这个 prop ,它是你在子组件中的样式.
formControlStyle
hts6caw32#
您应该删除scoped。如果您保留scoped,它将不会应用于其他组件,包括您导入的组件。或者在app.css或app.scss中移动css。
p4rjhz4m3#
使用深度选择器,即::deep(. whatever样式名称),您要在当前组件中覆盖它
<style scoped> :deep(.form-control) { border-radius: 50px; color: #823F98; border: 1px solid #3FA294; } </style>
通过这样做,你可以消除使用'!important'在每一行css代码需要overiding.更多信息请参见Vue官方文档。
3条答案
按热度按时间fkvaft9z1#
使用无作用域样式可能非常危险,尤其是像
form-control
这样的通用类名。我认为在父组件中使用深层样式是一种更好的方法:
但是如果你可以重构你的子组件,并添加一个像
formControlStyle
这样的 prop 和你的CSS样式,这将是避免副作用的最佳解决方案.你可以添加一个默认值给这个 prop ,它是你在子组件中的样式.hts6caw32#
您应该删除scoped。如果您保留scoped,它将不会应用于其他组件,包括您导入的组件。
或者在app.css或app.scss中移动css。
p4rjhz4m3#
使用深度选择器,即::deep(. whatever样式名称),您要在当前组件中覆盖它
通过这样做,你可以消除使用'!important'在每一行css代码需要overiding.
更多信息请参见Vue官方文档。