我想通过类来覆盖 Vuetify 样式。
例如,更改来自 Vuetify 的按钮背景颜色。
因此,我创建了一个带有类的按钮:
<div id="app">
<v-btn class="some" color="success">Success</v-btn>
</div>
.some {
background-color:red;
}
但是 vuetify 覆盖了背景颜色红色。
如何在不使用 important 和 themes 的情况下解决此问题?
我想通过类来覆盖 Vuetify 样式。
例如,更改来自 Vuetify 的按钮背景颜色。
因此,我创建了一个带有类的按钮:
<div id="app">
<v-btn class="some" color="success">Success</v-btn>
</div>
.some {
background-color:red;
}
但是 vuetify 覆盖了背景颜色红色。
如何在不使用 important 和 themes 的情况下解决此问题?
使用Vue和作用域元素,您将遇到/deep/, >>>, ::v-deep选择器。一切都在这里解释说明。因此,如果要深层覆盖样式,也就是根Vuetify组件的子级样式,您需要使用::v-deep
选择器以及scoped
属性。
这将使您获得:
<style scoped>
.parent-element >>> .vuetify-class {
// values
}
</style>
<style lang="scss" scoped>
.vuetify-class {
::v-deep other-class {
// your custom css properties
}
}
</style>
希望这能帮助到您。
在使用Vuetify及其各种样式“怪癖”时,我认为它所有的问题都归结于编写比Vuetify更具特定性的CSS。
直接给元素(img
)应用样式并不是一个好习惯。相反,应该应用自己的类。
这样一来,您可以声明 .my-card.v-card
并赢得特定性战争,同时保持样式的作用范围(在Vue文件中,非作用域样式可能很难调试)。
有些Vuetify样式声明使用了 !important
... 所以我发现覆盖这些样式的唯一方法就是在覆盖样式中也使用 !important
。
我认为Vuetify决定使用任何一个 !important
样式都是非常糟糕的决策。
了解 >>>, /deep/, ::v-deep
也是很好的,因为这些内容可以提供解决方案,避免样式无法过滤的问题。
input
,select
和button
都没有边框了。 在一个表单密集的应用程序中,为每个元素都添加类很耗时间。 即使将它们添加到<style>
标签中也没有帮助。这对开发人员来说非常不友好。 - trpt4himmain.js
中。也就是说...只有当您想要覆盖 所有 的 Vuetify 输入样式时才需要这样做。这样可以避免向 Vuetify 元素添加类等操作。 - 4uroraskyebody:not(#_){ ... code here }
中来增加其特定性(假设您的<body>
元素没有id="_"
)。显然,您不需要* per se *使用body
,但将:not()
的断言限制为尽可能少的元素是一个好习惯。如果您愿意,它是一种自定义的!important
,不会越过不能被内联样式覆盖的界限(因此不会破坏JS样式),并且正如您所看到的,它不需要知道任何祖先id
或class
。 - tao!important
。 - 4uroraskye<body>
<img :src="userImg" alt="avatar">
</body>
这行不通
<style scoped>
.img {
width: 120px;
height: 120px;
margin: 0 auto;
border-radius: 50% !important;
overflow: hidden;
}
.img img {
width: 100%;
}
</style>
这将会生效。
<style>
.img {
width: 120px;
height: 120px;
margin: 0 auto;
border-radius: 50% !important;
overflow: hidden;
}
.img img {
width: 100%;
}
</style>
我找到的一个解决方法是通过给包含元素添加ID,针对自定义CSS中的特定元素进行定位,示例如下:
<v-btn-toggle
id="btnGroup"
borderless
dense
group
class="d-flex flex-column"
>
<v-btn active-class="dnrSelected">
<v-icon right class="mr-2">mdi-close</v-icon>
<span>Do Not Recommend</span>
</v-btn>
<v-btn active-class="rSelected">
<v-icon right class="mr-1">mdi-check</v-icon>
<span>Recommend</span>
</v-btn>
<v-btn active-class="srSelected">
<v-icon right class="mr-1">mdi-check-all</v-icon>
<span>Strongly Recommend</span>
</v-btn>
</v-btn-toggle>
然后使用此id
来指定目标元素,如下所示。
#btnGroup .dnrSelected {
background-color: #ef9a9a !important;
}
#recommendationBtnGroup .rSelected {
background-color: #dcedc8 !important;
}
#recommendationBtnGroup .srSelected {
background-color: #81c784 !important;
}
使用 Vuetify 3
时,你会看到一个警告信息:::v-deep usage as a combinator has been deprecated. Use ::v-deep(<inner-selector>) instead
关于::v-deep
的用法。其他方法没有任何单个警告,并且无效。
更改样式的方式取决于您是否需要覆盖样式(添加!important;
)或仅附加新样式(不需要!important;
),这里提供一个示例:
:deep() {
.v-field__outline__end {
border-radius: 25px!important;
color: red;
}
}
不确定这是否/将会是你遇到的问题,但我曾经被卡在这里很长时间。
如果你使用了作用域样式(应该这么做),你将需要使用深度选择器>>>
来定位子组件的类。然而,我从未能够让深度选择器与SASS一起工作,所以你要么放弃使用SASS,要么同时使用两者。
<style scoped>
.parent-element >>> .vuetify-class {
// values
}
</style>
<style lang="scss" scoped>
// SASS styling
</style>
对我来说,最简单的方法是添加我的自定义reset.css文件,我在其中放置了我的修复内容。 例如,如果您像这样加载vuetify css:
import 'vuetify/dist/vuetify.min.css'
您可以在该行之后导入您的custom-reset.css文件,这样您的导入将如下所示:
import Vue from 'vue'
import Vuetify from 'vuetify'
import 'vuetify/dist/vuetify.min.css'
import '<your_path>/custom-reset.css'
import '@mdi/font/css/materialdesignicons.css'
我遇到了问题,vuetify 样式破坏了 AdminLte 2 的样式。在我的情况下,custom-reset.css 文件可以是这样的:
.row {
display: block;
margin-right: -15px;
margin-left: -15px;
}
.row > .col, .col-1, .col-2, .col-3, .col-4, .col-5, .col-6,
.col-7, .col-8, .col-9, .col-10, .col-11, .col-12,
.col-auto, .col-lg, .col-lg-1, .col-lg-2, .col-lg-3,
.col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8,
.col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg-auto,
.col-md, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5,
.col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11,
.col-md-12, .col-md-auto, .col-sm, .col-sm-1, .col-sm-2, .col-sm-3,
.col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9,
.col-sm-10, .col-sm-11, .col-sm-12, .col-sm-auto, .col-xl, .col-xl-1,
.col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7,
.col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl-auto {
padding: 0px 0px 0px 0px;
padding-right: 15px;
padding-left: 15px;
}
select {
-webkit-appearance: menulist; /* -webkit-appearance: none; */
}
.v-application--wrap {
min-height: auto;
}
希望能对某人有所帮助!
#app .some
来针对它进行目标设置。当然,一旦您学会了这些概念,就可以使用最适合您的方法。 - Traxo