如何隔离 Vuetify 全局样式

Posted

技术标签:

【中文标题】如何隔离 Vuetify 全局样式【英文标题】:How to isolate Vuetify global styles 【发布时间】:2019-06-09 14:51:40 【问题描述】:

我已经开始在一个旧的现有项目中使用 Vue.js 和 Vuetify。所以我没有重写所有的前端,我只是导入了 Vue 并替换了一些部分。

然后我注意到一个非常出乎意料的行为 - Vuetify 具有通用类的全局样式,如 .title 并且它影响整个页面,而不仅仅是 Vue 部分。

那么,问题是,如何在 Vue 组件中隔离 vuetify 样式?


UPD:按照@DigitalDrifter 的建议,我尝试使用stylus 块级导入。所以我删除了

import 'vuetify/dist/vuetify.min.css' 

来自main.js 并创建了一个新的.styl 文件(它被导入而不是css),其内容如下:

.vuetify-styles
    @import '~vuetify/src/stylus/main'

然后将这个类添加到根组件中:<App class="vuetify-styles">

UPD2: 之后你可以得到与stylus 编译相关的错误。更多相关信息 -> https://github.com/vuetifyjs/vuetify/issues/4864

UPD3: less 也适合我。

# vuetify-styles.less
.vuetify-styles 
  @import (less) '../../node_modules/vuetify/dist/vuetify.min.css';

然后将其导入您的main.js

import './vuetify-styles.less'

【问题讨论】:

“隔离”是什么意思? 我的意思是为 vuetify.min.css 创建类似命名空间的东西,为所有样式和其他与 vue 相关的样式创建根类 【参考方案1】:

Stylus 支持block level imports。

如果您有以下情况:

// bar.styl
.bar
  width 10px

// foo.styl
.foo
  @import 'bar.styl'

最终结果将是:

.foo .bar 
  width: 10px;

【讨论】:

谢谢,它看起来像一个解决方案!

以上是关于如何隔离 Vuetify 全局样式的主要内容,如果未能解决你的问题,请参考以下文章

如何在样式中使用 vuetify 主题变量

未登录时如何删除全局侧边栏(vuetify)

Vuetify 样式不适用于 Tailwind

在 vuetify 中为 v-data-table 的第一行添加样式

如何避免 Vuetify 覆盖默认 CSS

样式化 Vuetify 选择器