如何仅将 css 样式应用于特定的 Vue 组件及其子组件?

Posted

技术标签:

【中文标题】如何仅将 css 样式应用于特定的 Vue 组件及其子组件?【英文标题】:How to apply css style only for specific Vue component and its child? 【发布时间】:2019-09-12 04:25:24 【问题描述】:

我的Vue项目使用Vue.Router

我想从父组件中为 子组件 应用 css 样式。 但是,我在父组件中定义了 CSS 样式,它不适用于 子组件。 和我的样式表使用相同的类或 id 选择器。

像一击:

list-one.css

.foo bar 
    width: 120px;

not-related-for-list-one.css

.foo bar 
    width: 200px;

两个示例 css 文件使用不同的 Vue 组件(ListOne.vueNotForListOne.vue

在父级(Vue 组件,ListOne.vue)中,我定义了多种 CSS 样式,如下所示:

    <style src="my/css/file/path/list-one.css" scope> <script>import "my/css/file/path/list-one.css"</script> <style scope>my css style here</style>

“1”仅适用于父组件(ListOne.vue)。

'2' 全局应用(list-one.cssnot-related-for-list- one.css 都应用了ListOne.vue)因为NotForListOne.vue<script>import "my/css/file/path/not-related-for-list-one.css"</script>.

“3”与“1”相同。

ListOne.vue

<child-one></child-one>
<child-two></child-two>
<and-other-childs></and-other-childs>

list-one.css

/* it for ListOne.vue only */
.foo bar 
    width: 120px;



/* it for chile-one only */
.foo1 bar 
    display: none;


/* it for chile-two only */
.foo2 bar 
    color: red;


.
.
.

我认为最好的方法是:

ListOne.vue

....

<style>
.foo bar 
    width: 120px;

</style>

ChildOne.vue

<style>
.foo1 bar 
    display: none;

</style>

ChildTwo.vue

<style>
.foo2 bar 
    color: red;

</style>

但是 css 文件太大了,要为它的 Vue 组件拆分 css 非常困难。

如何解决?

【问题讨论】:

【参考方案1】:

&lt;style scope&gt;my css style here&lt;/style&gt;

尝试从style 标记中删除scope

【讨论】:

请确认这是否适合您,以便其他人知道这是否有帮助:)

以上是关于如何仅将 css 样式应用于特定的 Vue 组件及其子组件?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅将 CSS 样式应用于文本

如何仅将特定的 CSS 规则应用于 Chrome?

如何仅将加载状态应用于 livewire 中的特定组件

我可以仅将样式应用于我的应用程序组件吗?

如何在 vue 组件中的 createElement 之后应用 css 样式?

如何仅将样式应用于父元素?