为什么我的 css 代码在 vuejs 中不起作用?
why my css code is not working in vuejs?
我在 VueJs 中遇到 css 的问题。抱歉描述不当,但我不知道我做错了什么。
我的 css 在样式范围内在 vuejs 中通常工作正常,我可以正常处理 idis 和 类。
问题是当我想更改例如 vuetify 框架或所见即所得编辑器元素的内部 css 值时。我不明白,因为在 codepen 上一切正常。例如,我在这里将 wysiwig 编辑器的填充设置为 0 并且它可以正常工作(在 codepen 中):
模板:
<div class="container">
<div id="editor-container">
</div>
</div>
脚本
var quill = new Quill('#editor-container', {
modules: {
toolbar: [
[{ header: [1, 2, false] }],
['bold', 'italic', 'underline'],
['image', 'code-block']
]
},
placeholder: 'Compose the most wonderful and amazing epic you could ever imagine!',
theme: 'snow' // or 'bubble'
});
风格
.ql-editor {
padding: 0!important;
}
在我的 vuejs SPA 上,我粘贴了完全相同的 css 代码,但它什么也没做。我在正确的组件中,处理正确的元素。在我的控制台中,当我进行检查时 - 我看到 .q1-editor 的属性为 padding 12px 等。所以我的网站没有任何变化:(
很抱歉解释不当 - css 不是我的主要语言。
也许对 css 有更多经验的人会知道我做错了什么。
单向
在 scoped
样式中使用 deep
选择器:.container >>> .ql-editor
.
<style scoped>
.container >>> .ql-editor {
...
}
</style>
这会生成如下内容:
<style>
.container[v-abc123] .ql-editor {
...
}
</style>
您可以在这里阅读:https://vue-loader.vuejs.org/guide/scoped-css.html#deep-selectors
另一种方式
不要在您的 style
标签上使用 scope
。
说明
当您在 .vue 文件中的样式标签上使用 scoped
时,它会为每个 CSS 选择器添加一个属性说明符。当 Vue 为组件生成 HTML 时,它会将属性添加到 HTML 以便选择器匹配。由于 quill
正在为此插件而非 Vue 生成 DOM,因此选择器将不匹配。
生成的 CSS 看起来像这样:
.ql-editor[v-abc123] {}
但是带有 class ql-editor
的元素 而不是 看起来像这样因为 Vue 没有生成它,所以它不会匹配:
<div class="ql-editor" v-abc123></div>
看起来像这样:
<div class="ql-editor"></div>
你可以做的是在你的 Vue 文件中有多个 <style>
标签。这样你就可以保留非常有用的范围样式,并且只添加绝对需要的全局样式。
<style scoped>
/* Styles for things that are in the DOM visible in your template tag */
</style>
<style>
/* quill specific selectors (global) */
</style>
我会尽量使选择器在全局样式中保持唯一,以免泄漏。您可以在编辑器周围添加父级并执行以下操作:
<style>
.unique-to-this-component .ql-editor {
...
}
</style>
发生在我身上的是我没有包含结束 </style>
标签,这样的事情可能会破坏它,所以请务必仔细检查你的 vue 文件。
确保您没有忘记包含由 webpack 或类似工具构建的 .css 文件!
我在 VueJs 中遇到 css 的问题。抱歉描述不当,但我不知道我做错了什么。
我的 css 在样式范围内在 vuejs 中通常工作正常,我可以正常处理 idis 和 类。
问题是当我想更改例如 vuetify 框架或所见即所得编辑器元素的内部 css 值时。我不明白,因为在 codepen 上一切正常。例如,我在这里将 wysiwig 编辑器的填充设置为 0 并且它可以正常工作(在 codepen 中):
模板:
<div class="container">
<div id="editor-container">
</div>
</div>
脚本
var quill = new Quill('#editor-container', {
modules: {
toolbar: [
[{ header: [1, 2, false] }],
['bold', 'italic', 'underline'],
['image', 'code-block']
]
},
placeholder: 'Compose the most wonderful and amazing epic you could ever imagine!',
theme: 'snow' // or 'bubble'
});
风格
.ql-editor {
padding: 0!important;
}
在我的 vuejs SPA 上,我粘贴了完全相同的 css 代码,但它什么也没做。我在正确的组件中,处理正确的元素。在我的控制台中,当我进行检查时 - 我看到 .q1-editor 的属性为 padding 12px 等。所以我的网站没有任何变化:( 很抱歉解释不当 - css 不是我的主要语言。
也许对 css 有更多经验的人会知道我做错了什么。
单向
在 scoped
样式中使用 deep
选择器:.container >>> .ql-editor
.
<style scoped>
.container >>> .ql-editor {
...
}
</style>
这会生成如下内容:
<style>
.container[v-abc123] .ql-editor {
...
}
</style>
您可以在这里阅读:https://vue-loader.vuejs.org/guide/scoped-css.html#deep-selectors
另一种方式
不要在您的 style
标签上使用 scope
。
说明
当您在 .vue 文件中的样式标签上使用 scoped
时,它会为每个 CSS 选择器添加一个属性说明符。当 Vue 为组件生成 HTML 时,它会将属性添加到 HTML 以便选择器匹配。由于 quill
正在为此插件而非 Vue 生成 DOM,因此选择器将不匹配。
生成的 CSS 看起来像这样:
.ql-editor[v-abc123] {}
但是带有 class ql-editor
的元素 而不是 看起来像这样因为 Vue 没有生成它,所以它不会匹配:
<div class="ql-editor" v-abc123></div>
看起来像这样:
<div class="ql-editor"></div>
你可以做的是在你的 Vue 文件中有多个 <style>
标签。这样你就可以保留非常有用的范围样式,并且只添加绝对需要的全局样式。
<style scoped>
/* Styles for things that are in the DOM visible in your template tag */
</style>
<style>
/* quill specific selectors (global) */
</style>
我会尽量使选择器在全局样式中保持唯一,以免泄漏。您可以在编辑器周围添加父级并执行以下操作:
<style>
.unique-to-this-component .ql-editor {
...
}
</style>
发生在我身上的是我没有包含结束 </style>
标签,这样的事情可能会破坏它,所以请务必仔细检查你的 vue 文件。
确保您没有忘记包含由 webpack 或类似工具构建的 .css 文件!