跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScript大前端

基于 Ant Design 的前端首页 Header 组件设计

综述由AI生成介绍使用 React 和 Ant Design 构建电商首页 Header 区域的方法。通过 Flex 布局实现页面撑满,设置渐变背景与阴影。左侧展示 Logo,中间集成自定义搜索框,右侧包含购物车徽标及用户头像入口。代码涵盖组件结构拆分与 SCSS 样式编写,实现了响应式且美观的顶部导航栏设计。

林间仙子发布于 2026/4/6更新于 2026/5/2326 浏览
基于 Ant Design 的前端首页 Header 组件设计

首页搭建

本文将演示使用 React 和 Ant Design 构建首页 Header 区域的流程。

首先设置整体页面样式,确保首页至少撑满整个视口,内容过多时自动撑开:

.home-page {
  min-height: 100vh;
  background: #f6f7f9;
  display: flex;
  flex-direction: column;
}

一、Header 部分

引入 Ant Design 的 Layout 组件并配置基础结构:

import "./index.scss";
import { Layout } from "antd";
const { Header } = Layout;

const Home = () => {
  return (
    <div className="home-page">
      <Layout>
        <Header className="home-header"></Header>
      </Layout>
    </div>
  );
};
export default Home;

为 Header 添加样式,设置高度、内边距、渐变背景及阴影效果:

.home-header {
  height: 72px;
  padding: 0 18px;
  display: flex;
  align-items: center;
  gap: 16px;
  background: linear-gradient(90deg, #ff2d2d, #ff6a00);
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.12);
}
1. Header-Left

左侧放置 Logo 区域:

<div className="header-left">
  <div className="logo-badge">
    <span className="logo-text">智慧商城</span>
  </div>
</div>
2. Header-Mid

中间位置放置搜索框。Ant Design 的 Search 组件位于 Input 子类中,需解构后使用。通过 enterButton 属性可自定义确认按钮样式:

<div className="header-mid">
  <Search
    allowClear
    placeholder={`搜一搜`}
    enterButton={
      <Button className="search-button" color="danger" variant="solid" icon={<SearchOutlined />}>
        搜索
      </Button>
    }
    onSearch={onSearch}
    size="large"
  />
</div>

注意在组件内部套用样式时,应使用组件自带的类名进行修饰。

3. Header-Right

右侧放置购物车按钮和个人中心入口。用户头像使用 Avatar 组件,购物车使用 Badge 包裹 Button 实现徽标提示。

完整 index.js 代码如下:

import "./index.scss";
import { Layout, Input } from "antd";
import { SearchOutlined } from "@ant-design/icons";
import { Button } from "antd";
import { Space, Badge, Avatar } from "antd";
import { ShoppingCartOutlined, UserOutlined } from "@ant-design/icons";
import classNames from "classnames";

const { Header } = Layout;
const { Search } = Input;

const onSearch = (value) => {
  console.log("搜索内容:", value);
};

const Home = () => {
  return (
    <div className="home-page">
      <Layout>
        <Header className="home-header">
          <div className="header-left">
            <div className="logo-badge">
              <span className="logo-text">智慧商城</span>
            </div>
          </div>
          <div className="header-mid">
            <Search
              allowClear
              placeholder={`搜一搜`}
              onSearch={onSearch}
              size="large"
              className="search-input"
              enterButton={
                <Button color="danger" variant="solid" icon={<SearchOutlined />}>搜索</Button>
              }
            />
          </div>
          <div className="header-right">
            <Space size={14}>
              <Badge count={3} size="small">
                <Button className="icon-btn" icon={<ShoppingCartOutlined />} />
              </Badge>
              <div className="user-mini">
                <Avatar size={34} icon={<UserOutlined />} />
                <div className="user-mini-text">
                  <div className="user-name">刘同学</div>
                  <div className="user-sub">欢迎回来</div>
                </div>
              </div>
            </Space>
          </div>
        </Header>
      </Layout>
    </div>
  );
};
export default Home;

对应的 SCSS 样式如下:

.home-page {
  min-height: 100vh;
  background: #f6f7f9;
  display: flex;
  flex-direction: column;
}

.home-header {
  height: 72px;
  padding: 0 18px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: linear-gradient(90deg, #ff2d2d, #ff6a00);
  box-shadow: 0 8px 22px rgba(0, 0, 0, 0.12);

  .header-left {
    width: 180px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    .logo-badge {
      height: 44px;
      padding: 0 14px;
      border-radius: 14px;
      background: rgba(255, 255, 255, 0.18);
      backdrop-filter: blur(8px);
      display: flex;
      align-items: center;
      .logo-text {
        color: #fff;
        font-weight: 800;
        letter-spacing: 2px;
      }
    }
  }

  .header-mid {
    flex: 1;
    width: 100%;
    justify-content: flex-end;
    align-items: center;
    display: flex;
    .search-input {
      width: 700px;
    }
    .ant-input-search-btn {
      border: 1px solid #fff !important;
    }
  }

  .header-right {
    width: 260px;
    display: flex;
    justify-content: flex-end;
    .icon-btn {
      border-radius: 12px;
    }
    .user-mini {
      display: flex;
      align-items: center;
      gap: 10px;
      padding: 6px 10px;
      border-radius: 14px;
      background: rgba(255, 255, 255, 0.18);
      backdrop-filter: blur(8px);
      .user-mini-text {
        line-height: 1.1;
        .user-name {
          color: #fff;
          font-weight: 700;
          font-size: 13px;
        }
        .user-sub {
          color: rgba(255, 255, 255, 0.85);
          font-size: 12px;
        }
      }
    }
  }
}

文章配图

目录

  1. 首页搭建
  2. 一、Header 部分
  3. 1. Header-Left
  4. 2. Header-Mid
  5. 3. Header-Right
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 被工具定义的编程时代:VS Code 与 JetBrains 效率提升实战指南
  • JavaScript 基础知识详解
  • VS Code 跨平台安装与配置优化指南
  • 腾讯 C++ 面试常见问题汇总(2025-2026)
  • 前端工程化实践:代码规范与静态检查
  • SpringBoot Actuator 未授权访问漏洞修复方案
  • 在OrangePi-5 Plus/5 Ultra上实时运行yolo26进行无人机检测,fps超50!
  • 多旋翼无人机电源系统详解
  • Spring AI Agent Skills 接入与原理剖析
  • llama.cpp 简介:基于 C/C++ 的本地大模型推理框架
  • Linux 动静态库制作与使用:ar 与 ldconfig 详解
  • React Native 热更新方案:现状与选型分析
  • 基于 PSO-DWA 融合的无人机三维动态避障路径规划 (Matlab)
  • C++ 类和对象基础概念详解
  • 基于 Java 的游戏道具交易平台管理系统设计与实现
  • AI Agent 平台横评:ZeroClaw、OpenClaw 与 Nanobot 选型指南
  • Windows Server 2022/2025 搭建 Web 服务器实战指南
  • 小米 MiLoco 本地大模型智能家居部署实战
  • ROS2+Gazebo+PX4 仿真环境搭建与无人机起飞指南
  • Linux 进程状态详解

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online