gpt4 book ai didi

javascript - 你能修改 NextJS 的挂载元素或向 __next div 添加类吗?

转载 作者:行者123 更新时间:2023-12-03 16:58:15 28 4
gpt4 key购买 nike

长话短说,我正在做一个元素,我想让内容“填充”静态标题下方的垂直空间。我已经在 React 中使用顺风完成了这项工作,如下所示:

<body class="flex flex-col h-screen text-gray-600 work-sans leading-normal text-base tracking-normal">
<header class="flex h-18 bg-white shadow-md">
{/* header menu options */}
</header>
<div class="flex flex-1 h-full bg-gray-200 p-6">
{/* page content */}
</div>
但是对于 NextJS,它似乎将安装 div(即 <div id="__next"> )放在正文和内容之间。如果我修改 CSS 给 #__next { height: %100 }但这会使填充无法正常工作,它会溢出。所以它看起来像这样:
<body class="flex flex-col h-screen text-gray-600 work-sans leading-normal text-base tracking-normal">
<div id="__next">
<header class="flex h-18 bg-white shadow-md">
{/* header menu options */}
</header>
<div class="flex flex-1 h-full bg-gray-200 p-6">
{/* page content */}
</div>
</div>
下面是一些屏幕截图,可以直观地了解额外 div 导致问题的原因: https://imgur.com/a/dHRsDkY
解决这个问题的两个可能的选项,理论上可行的是将类添加到 #__next。 div 或 mount 到 body 而不是 #__next分区。有谁知道如何实现其中任何一个?
编辑:是的,我认为我可以将布局更改为固定标题并在内容元素顶部填充,这样可以回避问题,这可能最终成为我需要的解决方法,但我仍然有兴趣知道是否有任何一个我提到的解决方案中的一些是可能的,因为如果不是,那是 NextJS 的技术限制,不会引起太多关注。

最佳答案

我通过从正文中删除类并将它们应用到 #__next 解决了这个问题。容器分区:
我使用了这个 example 中的方法在 Next.js 中使用 tailwind。
然后我编辑了styles/index.css

@tailwind base;

/* Write your own custom base styles here */
/* #__next {
height: 100%;
} */

/* Start purging... */
@tailwind components;
/* Stop purging. */

html,
body {
@apply bg-gray-50 dark:bg-gray-900;
}

#__next {
@apply flex flex-col h-screen text-gray-600 leading-normal text-base tracking-normal;
}

/* Write your own custom component styles here */
.btn-blue {
@apply px-4 py-2 font-bold text-white bg-blue-500 rounded;
}

/* Start purging... */
@tailwind utilities;
/* Stop purging. */

/* Your own custom utilities */

正如你所说,重点是将类添加到 #__next而不是 body .
正如您在评论中看到的,在哪里添加 @apply 很重要。操作说明。
重要的几行是:
#__next {
@apply flex flex-col h-screen text-gray-600 leading-normal text-base tracking-normal;
}
正如您在问题标题中所问的,这是将顺风样式添加到 #__next 的一种方法。容器分区。
另一种解决方案是在组件或页面加载后使用 componentDidMount() 设置类。生命周期 Hook 或 useEffect像这样的钩子(Hook):
useEffect(() => {
document.querySelector("#__next").className =
"flex flex-col h-screen text-gray-600 leading-normal text-base tracking-normal";
}, []);
如果您查看有关 Custom document 的 Next.js 文档你可以看到 Main组件和 NextScript是 Next.js 的内部结构,是正确呈现页面所必需的,您无法更改 Next.js 内部结构,所以我认为上述解决方案是 的最佳方法将类添加到 #__next 容器 div。

关于javascript - 你能修改 NextJS 的挂载元素或向 __next div 添加类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65374790/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com