You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js 13布局页面Body在Header前渲染问题求助

Next.js 13 RootLayout 组件显示顺序异常解决方案

问题根源

你的RootLayout结构违反了HTML规范:<html>标签的直接子元素只能是<head>和<body>,你将<Header>和<Footer>直接放在<html>下、<body>之外,浏览器会自动修正这种无效DOM结构,导致组件渲染顺序错乱。

修复方案

将Header和Footer组件移入<body>标签内部,调整后的layout.tsx代码如下:

import './globals.css'
import type { Metadata } from 'next'
import { Inter } from 'next/font/google'
import Header from '@/components/layout/header'
import Footer from '@/components/layout/footer'
const inter = Inter({ subsets: ['latin'] })

export const metadata: Metadata = {
  title: 'Panawerse Dao Next 13',
  description: 'Generated by Saleh',
}

export default function RootLayout({
  children,
}: {
  children: React.ReactNode
}) {
  return (
    <html lang="en">
      <body className={inter.className}>
        <Header />
        {children}
        <Footer />
      </body>
    </html>
  )
}

原理说明

Next.js 13的RootLayout最终会渲染为标准HTML页面,必须严格遵循HTML结构规则。<html>的合法直接子元素仅包含<head>(由Next.js根据你定义的metadata自动生成)和<body>,所有可视化的页面内容都应该嵌套在<body>内部,这样浏览器才能按照预期的顺序渲染组件。

内容的提问来源于stack exchange,提问作者Saleh Sami

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 22:20:00