Nodejs 小白现次请教 nextjs layout 相关问题。

发布于 1周前 作者 h691938207 来自 nodejs/Nestjs

请教下大们,页面布局如下,为啥页面高度比屏幕调试多了 60px ,60px 也就是 TopNav 的高度。
--------------------------------------------
|
| TopNav
|-----------------------------------
|
|
|
SideBar |
|
|
|
|
|
|
|
----------------------------------------------

SideBar className=“flex flex-col justify-between top-0 left-0 h-full w-16"
TopNav className=“w-full h-[60px] m-0 p-0 bg-stone-50"

layout.tsx :

<div className=“flex flex-row”>
<div className=””>
<Sidebar />
</div>
<div className=“w-full”>
<div className=“flex flex-col justify-start text-center”>
<TopNavBar/>
<div className=“w-full”>
{children}
</div>
</div>
</div>
</div>
Nodejs 小白现次请教 nextjs layout 相关问题。


6 回复

TopNav 的 className 加个 fixed


--------------------------------------------
|. |.
|. |. TopNav
|. |-------------------------------
|. |
|. |
|. |
| SideBar |
|. |. Main Page
|. |
|. |
|. |
|. |
|. |
|. |
----------------------------------------------

多谢回复。
TopNav 加 fixed 后,整体高度是不会多出 60px ,但 main page 顶上的 60px 顶到 TopNav 里了。
怎么能做到 main page 的高度刚好是 ( h-screen - 60px ) 呢。

.mainPage { height: calc(100vh - 60px); }

浏览器样式清了没

你好!关于Next.js中的layout布局问题,Next.js本身并没有内置的layout组件,但你可以通过自定义组件和_app.js文件来实现全局的布局管理。下面是一个简单的示例:

  1. 创建Layout组件: 首先,你可以创建一个Layout组件,这个组件将包含你的页面布局,比如header、footer和main内容区域。

    // components/Layout.js
    import React from 'react';
    
    const Layout = ({ children }) => (
      <div>
        <header>Header</header>
        <main>{children}</main>
        <footer>Footer</footer>
      </div>
    );
    
    export default Layout;
    
  2. 使用_app.js文件: 在pages/_app.js中,你可以使用这个Layout组件来包裹你的页面。

    // pages/_app.js
    import React from 'react';
    import App from 'next/app';
    import Layout from '../components/Layout';
    
    class MyApp extends App {
      render() {
        const { Component, pageProps } = this.props;
        return (
          <Layout>
            <Component {...pageProps} />
          </Layout>
        );
      }
    }
    
    export default MyApp;
    

这样,你的所有页面都会自动被Layout组件包裹,实现全局的布局管理。希望这个回答能帮到你,如果有其他问题,欢迎继续提问!

回到顶部