【发布时间】:2019-07-31 17:21:30
【问题描述】:
当您在 Vuejs 中使用作用域样式时,它包含一个带有特定签名的 data-v-XXX 字符串。
<template>
<div>
<h1>this is a title</h1>
<p>this is a paragraph</p>
</div>
</template>
<style scoped>
h1 {
color: red;
background-color: black;
}
p {
font-style: italic;
}
</style>
你会得到一个生成的样式
h1[data-v-3fe14d6d] {
color: red;
background-color: black;
}
p[data-v-3fe14d6d] {
font-style: italic;
}
有没有办法提供注入到 data-v 字符串中的签名字符串?所以你可以有 data-v-MyCustomControlName。
如下所述,我希望提供特定字符串的主要原因是允许第三方样式注入。
虽然 data-v-XXXX 的值可用于此目的,并保证不会发生冲突,但生成的数字很难使用。
我或许应该将问题更改为“使用 Nuxtjs 以最大程度地减少样式冲突并同时最大化第三方样式支持的最佳方式是什么?”
【问题讨论】:
-
想要自定义名称的原因是什么? Vue 将为您注入那些自定义的“GUID”——这就是您在没有命名冲突的情况下获得“范围”样式的方式。我认为您想重命名它们是有原因的?
-
“主要”允许第三方样式自定义,“直接”或通过类似 user-styles.org 的方式。我目前正在尝试设置并使用
-
您仍然可以这样做而不必担心这些名称...您能否举例说明您的需求没有得到满足?
-
我知道至少有 3 种方法可以做我想做的事。他们都使用手动方案来确定 css 的范围。最直接的是将类添加到包装 div 并在样式标记中使用 .namedclass h1 和 .namedclass p 。我也可以直接在标签中使用命名类。 h1.namedclass 和 p.namedclass。看来使用 module="named_prefix" 将采用命名前缀并添加到任何命名样式中,因此 h1 class="blog-post-title" 将在生成的 html 和 css 中创建 .named_prefix.blog-post-title 。您也可以在没有 module="named_prefix" 选项的情况下手动执行。
标签: vue.js vue-component nuxt.js