我试图在Nuxt中添加身体样式到我的模板中,但是我遇到了一些问题。
我正在尝试使用beforeCreate调用,但是当我这样做时,我会遇到错误:文档没有定义。
我想保持SSR。如何在body元素上添加样式?
<script scoped>
export default {
head() {
return {
script: [
{
src: '/js/vendor/jquery.min.js'
},
{
src: '/js/site.js'
}
]
}
},
beforeCreate: function() {
document.body.className = 'service';
}
}
</script>
<style scoped>
@import '~/assets/css/style.min.css';
</style> 更新
我补充说:
head() {
return {
script: [
{
src: '/js/vendor/jquery.min.js'
},
{
src: '/js/site.js'
}
],
bodyAttrs: {
class: 'service',
}
}
}标签确实会添加到主体中:
<body class="service" data-n-head="%7B%22class%22:%7B%22ssr%22:%22service%22%7D%7D" style="zoom: 1;">但是,造型不呢?
body.service{padding-top:80px}
body.service{font-family:'Geomanist', sans-serif;color:#000}发布于 2021-05-10 19:52:52
看来你还可以说:
bodyAttrs: {
class: 'hidden',
},在nuxt.config.js中
根据这个answer,您可以在应用程序的根目录下创建一个app.html文件,内容如下。我已经将类直接添加到<body>中
<!DOCTYPE html>
<html {{ HTML_ATTRS }}>
<head {{ HEAD_ATTRS }}>
{{ HEAD }}
</head>
<body {{ BODY_ATTRS }} class="service">
{{ APP }}
</body>
</html>发布于 2021-05-11 00:57:16
我认为最好的处理方法是使用nuxt布局(https://nuxtjs.org/docs/2.x/directory-structure/layouts/)。基本上,您可以在布局文件(也是vue文件)的style secion中定义全局html或body样式,然后在页面中使用该布局(https://nuxtjs.org/docs/2.x/components-glossary/pages-layout/)。
https://stackoverflow.com/questions/67476821
复制相似问题