Administrator
发布于 2024-10-31 / 10 阅读
0
0

nextjs 实战开发2 Mercury Header头组件开发

nextjs 实战开发2 Mercury Header头组件开发

上期文章说到,我们已经梳理出开发的流程,并且将脚手架搭建好,本篇文章将对header头组件进行开发。

编写前的准备工作

首先需要把脚手架的page.tsx默认页面进行重置,使其不干扰我们的开发进程,编辑 /app/page.tsx

export default function Home() {
  return <div>Hello World</div>;
}

创建components文件夹,用于存放一些常见的组件tsx文件,在创建号的文件夹中,我们创建/app/components/Header.tsx文件。

export default function Header() {
    return <div>这里是头文件</div>;
}

并且在/app/layout.tsx中导入头模块,这样就能在所有页面中显示网站的页眉了。

提示 - 为什么Header放在RootLayout中能够全局显示 ?
在 Next.js 中,layout.tsx文件具有特殊的作用,它是一个布局组件,用于定义在多个页面之间共享的 UI,让我解释为什么<Header />会全局显示?

  1. 布局组件的工作原理
  • layout.tsx 是一个"包装器"组件,它会包裹所有的页面内容
  • children 属性代表了所有子页面的内容
  • 放在 children 之外的组件会在所有页面中保持不变
  1. 渲染流程
export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html>
      <body>
        <Header />  {/* 固定在布局中,所有页面都会显示 */}
        {children}  {/* 这里会渲染各个页面的具体内容 */}
      </body>
    </html>
  );
}
  1. 工作方式
  • 当用户访问任何页面时,Next.js会首先渲染layout.tsx将具体页面的内容作为 children 插入到布局中,<Header /> 因为在布局中且在 children 之外,所以会始终显示。

这就像一个固定的框架,<Header/>是框架的一部分,而 children 是框架中不断变化的内容。

基础布局实现

首先,我们观察到页眉组件有 logo、link、button,要实现这些功能,nextjs提供了一套组件进行调用。

import Image from "next/image";
import Link from "next/link";

首先我们要把页眉的轮廓画出来,通过 Tailwind CSS 进行优化

<header className="fixed top-0 left-0 right-0 bg-white z-10 shadow-md">
    <p>这里是头文件</p>
</header>

  1. fixed

    1. 使元素固定定位
    2. 元素会脱离正常文档流
    3. 即使页面滚动,header 也会固定在视窗顶部
  2. top-0 left-0 right-0

    1. top-0: 距离顶部 0 像素
    2. left-0: 距离左侧 0 像素
    3. right-0: 距离右侧 0 像素
    4. 这三个属性组合使 header 横向铺满整个屏幕
  3. bg-white

    1. 设置背景色为白色
  4. z-10

    1. 设置 z-index 为 10
    2. 控制元素的层叠顺序,确保 header 显示在其他内容之上
  5. shadow-md

    1. 添加中等大小的阴影效果
    2. 使 header 看起来有立体感,与内容区分开

继续优化页眉内容,我们将标题最大位置限制在1280px的范围内,这样可以让在大屏幕上的内容居中显示。

接下来我们将页眉进行优化,让内容平衡分配和高度对其,并且扩大页眉的高度

这样一来,我们可以观察到基本布局以及和完整版本的一致了,因此后面就是对布局的每个部分进行优化即可。

如果喜欢我的文章请百度搜索:曲速引擎 warp drive csdn 在首页找到我的技术博客访问地址,所有内容都将在我的技术博客上展示,比起其他平台更容易搜索完整版本。

更详细内容查看

独立博客 https://www.dataeast.cn/
CSDN博客 https://blog.csdn.net/siberiaWarpDrive
B站视频空间 https://space.bilibili.com/25871614?spm_id_from=333.1007.0.0
关注 “曲速引擎 Warp Drive” 微信公众号


评论