拟态导航

nav · neumorphic · 灵感来源:Neumorphism(外壳同色浮起,内部靠文字与激活色区分)

active = components

复用卡

Neumorphic Top Navigation · 拟态导航 · 导航 / Neumorphic

规格 · 术语提示词(给 AI 用)

做一个 Neumorphic Top Navigation(拟态导航):
- 外壳同色浮起(一组外双阴影),无边框无模糊
- 导航项 hover 提亮到 --neuro-light,激活项 accent 实底
- logo / actions 为 slot,外部内容全定制
- overflow-x-auto 保住窄屏可用
用这些 CSS 变量:--color-accent --color-bg --color-text --color-text-muted --neuro-bg --neuro-light --neuro-shadow
灵感参考:Neumorphism(外壳同色浮起,内部靠文字与激活色区分)

参数(CSS 变量)

--color-accent --color-bg --color-text --color-text-muted --neuro-bg --neuro-light --neuro-shadow

必缺状态

焦点

整页场景

(尚未接进整页场景)

安装(一条链接)

参考(本站可核对)

调研笔记

拟态导航

  • 与玻璃、极简导航同一份 props(logo / items / activeId / onSelect / actions)
  • 外壳 --neuro-bg + --neuro-shadow 浮起,没有边框与模糊
  • 未激活项 hover 只提亮到 --neuro-light;激活项保留 accent 实底(导航是动作语义)
  • logo / actions 仍是 slot;登录钮去掉边框,只留 accent 15% 底

限制:外壳与页面同色,导航条本身的边界靠阴影;紧贴同类拟态面板放置时两层阴影会互相干扰。

实现

nav/neumorphic
import { type ReactNode } from 'react';

export interface NavItem {
  id: string;
  label: string;
  href?: string;
}

interface Props {
  logo?: ReactNode;
  items: NavItem[];
  activeId?: string;
  onSelect?: (id: string) => void;
  actions?: ReactNode;
}

/**
 * 拟态导航:与玻璃导航同一份 props,
 * 外壳同色浮起(外双阴影),没有边框与模糊;激活项仍用 accent 实底。
 */
export function NeumorphicNav({
  logo,
  items,
  activeId,
  onSelect,
  actions,
}: Props) {
  return (
    <nav
      className="
        flex items-center gap-1 max-w-full overflow-x-auto
        px-2 py-1.5
        rounded-lg
        bg-[var(--neuro-bg)]
        shadow-[var(--neuro-shadow)]
      "
    >
      {logo && <div className="px-3">{logo}</div>}

      <div className="flex items-center gap-0.5 min-w-max">
        {items.map((item) => {
          const isActive = item.id === activeId;
          return (
            <button
              key={item.id}
              type="button"
              onClick={() => onSelect?.(item.id)}
              className={`
                press-feedback px-3 py-1.5 rounded-md text-sm whitespace-nowrap
                transition-colors
                ${isActive
                  ? 'bg-[var(--color-accent)] text-[var(--color-bg)] font-medium'
                  : 'text-[var(--color-text-muted)] hover:text-[var(--color-text)] hover:bg-[var(--neuro-light)]'
                }
              `}
            >
              {item.label}
            </button>
          );
        })}
      </div>

      {actions && <div className="px-2">{actions}</div>}
    </nav>
  );
}

元信息

标识
nav/neumorphic
状态
done
最后提交
2026-10-31
风格轴
neumorphic
依赖 token
--color-accent --color-bg --color-text --color-text-muted --neuro-bg --neuro-light --neuro-shadow
在工作台打开 源码与 notes 都在 src/components/nav/neumorphic/