在 Nuxt 中设计身体

问题描述 投票:0回答:3

我正在尝试向 Nuxt 中的 body 标记添加样式,但 default.vue 似乎会覆盖它(它不是像我的纯 html 构建中那样从 body 继承 - 我将其移植到 Nuxt)。

我在CSS中有这个:

body{font-family:'Geomanist', sans-serif;color:#000 !important}

但是,当我运行它时,它不断从 default.vue 布局组件继承“html”(如您所见,我根本不将其包含在我的构建中):

<script scoped>
  export default {
    head() {
      return {
        script: [
          {
            src: '/js/vendor/jquery.min.js' 
          },
          {
            src: '/js/site.js' 
          }
        ]
        
      }
    }
    
    
  }
</script>

<style scoped>
@import '~/assets/css/style.min.css';
</style> 

在开发者工具中看起来像这样:

html {
    font-family: 'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    font-size: 16px;
    word-spacing: 1px;
    -ms-text-size-adjust: 100%;
    -webkit-text-size-adjust: 100%;
    -moz-osx-font-smoothing: grayscale;
    -webkit-font-smoothing: antialiased;
    box-sizing: border-box;

它应该看起来像:

body {
    font-family: 'Geomanist', sans-serif;
    color: #000;
}

default.vue 看起来像:

<template>
  <div>
    <Nuxt />
  </div>
</template>

<style>
html {
  font-family:
    'Source Sans Pro',
    -apple-system,
    BlinkMacSystemFont,
    'Segoe UI',
    Roboto,
    'Helvetica Neue',
    Arial,
    sans-serif;
  font-size: 16px;
  word-spacing: 1px;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
  box-sizing: border-box;
}
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
}
.button--green {
  display: inline-block;
  border-radius: 4px;
  border: 1px solid #3b8070;
  color: #3b8070;
  text-decoration: none;
  padding: 10px 30px;
}
.button--green:hover {
  color: #fff;
  background-color: #3b8070;
}
.button--grey {
  display: inline-block;
  border-radius: 4px;
  border: 1px solid #35495e;
  color: #35495e;
  text-decoration: none;
  padding: 10px 30px;
  margin-left: 15px;
}
.button--grey:hover {
  color: #fff;
  background-color: #35495e;
}
</style>
vue.js nuxt.js
3个回答
1
投票

我的解决方案

<template>
  <div>
    <!-- Tip add css to body tag -->
    <body class="max-h-[100vh] max-w-[100vw] overflow-hidden"></body>
</div>
</template>

我最近意识到,当我们创建第二个 body 标记并向其添加类时,最外面的 body 标记将具有相同的类。但我们会有多余的 body 标签。


0
投票

我的猜测是因为你正在限定它的范围,vue 不针对 body 也不针对 html。它是主体内的一个元素,html 目标元素可以工作,因为它没有作用域。

如果你不想让它泄漏,有一个主要的全局CSS文件和其余的范围。

将全局样式放入

default.vue


0
投票

Nuxt 3 你会想使用这个 (参考):

<script setup>
// pages/my-cool-page.vue or app.vue
useHead({
  bodyAttrs: {
    class: 'test'
  }
})
</script>
<template>
 <!-- omitted for brevity -->
</template>
<style>
.test {
  overflow: hidden;
}
</style>
© www.soinside.com 2019 - 2024. All rights reserved.