Skip to content

Navbar 导航栏

实时预览

引入

html
<link rel="stylesheet" href="/tokens/tokens.css">
<link rel="stylesheet" href="/components/navbar/navbar.css">

代码

HTML

html
<!-- Navbar Component — 响应式导航栏,3种变体: default/transparent/glass -->


<!-- Demo: Navbar 组件 -->
<div style="background: var(--color-bg-subtle); padding: 20px; border-radius: var(--radius-lg);">
  <!-- 默认导航栏 -->
  <nav class="navbar navbar--default" style="margin-bottom: 20px; border-radius: var(--radius-md);">
    <a href="#" class="navbar__logo">
      <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
        <path d="M12 2L2 7l10 5 10-5-10-5z"></path>
        <path d="M2 17l10 5 10-5"></path>
        <path d="M2 12l10 5 10-5"></path>
      </svg>
      DesignLib
    </a>
    
    <ul class="navbar__links">
      <li><a href="#" class="navbar__link">首页</a></li>
      <li><a href="#" class="navbar__link">组件</a></li>
      <li><a href="#" class="navbar__link">文档</a></li>
      <li><a href="#" class="navbar__link">示例</a></li>
    </ul>
    
    <div class="navbar__actions">
      <button class="navbar__btn">登录</button>
      <button class="navbar__btn navbar__btn--primary">注册</button>
    </div>
    
    <button class="navbar__toggle">
      <svg class="navbar__toggle-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
        <path d="M3 12h18M3 6h18M3 18h18"></path>
      </svg>
    </button>
  </nav>
  
  <!-- 透明导航栏 -->
  <nav class="navbar navbar--transparent" style="margin-bottom: 20px; border-radius: var(--radius-md); background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 20px;">
    <a href="#" class="navbar__logo" style="color: white;">
      <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
        <path d="M12 2L2 7l10 5 10-5-10-5z"></path>
        <path d="M2 17l10 5 10-5"></path>
        <path d="M2 12l10 5 10-5"></path>
      </svg>
      DesignLib
    </a>
    
    <ul class="navbar__links">
      <li><a href="#" class="navbar__link" style="color: rgba(255,255,255,0.9);">首页</a></li>
      <li><a href="#" class="navbar__link" style="color: rgba(255,255,255,0.9);">组件</a></li>
      <li><a href="#" class="navbar__link" style="color: rgba(255,255,255,0.9);">文档</a></li>
      <li><a href="#" class="navbar__link" style="color: rgba(255,255,255,0.9);">示例</a></li>
    </ul>
    
    <div class="navbar__actions">
      <button class="navbar__btn" style="color: white;">登录</button>
      <button class="navbar__btn navbar__btn--primary">注册</button>
    </div>
  </nav>
  
  <!-- 毛玻璃导航栏 -->
  <nav class="navbar navbar--glass" style="border-radius: var(--radius-md);">
    <a href="#" class="navbar__logo">
      <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
        <path d="M12 2L2 7l10 5 10-5-10-5z"></path>
        <path d="M2 17l10 5 10-5"></path>
        <path d="M2 12l10 5 10-5"></path>
      </svg>
      DesignLib
    </a>
    
    <ul class="navbar__links">
      <li><a href="#" class="navbar__link">首页</a></li>
      <li><a href="#" class="navbar__link">组件</a></li>
      <li><a href="#" class="navbar__link">文档</a></li>
      <li><a href="#" class="navbar__link">示例</a></li>
    </ul>
    
    <div class="navbar__actions">
      <button class="navbar__btn">登录</button>
      <button class="navbar__btn navbar__btn--primary">注册</button>
    </div>
  </nav>
</div>

CSS

css
/* Navbar.css */
.navbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-4) var(--space-6);
  font-family: var(--font-sans);
  font-weight: var(--weight-medium);
  transition: all var(--duration-normal) var(--ease-default);
  position: relative;
  z-index: var(--z-sticky);
}

/* ── 变体 ──────────────────────────── */
.navbar--default {
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
  box-shadow: var(--shadow-sm);
}

.navbar--transparent {
  background: transparent;
  border-bottom: none;
}

.navbar--glass {
  background: rgba(255, 255, 255, 0.8);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.2);
  box-shadow: var(--shadow-sm);
}

/* ── Logo ──────────────────────────── */
.navbar__logo {
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-primary);
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.navbar__logo:hover {
  opacity: 0.9;
}

/* ── 导航链接 ──────────────────────── */
.navbar__links {
  display: flex;
  align-items: center;
  gap: var(--space-6);
  list-style: none;
  margin: 0;
  padding: 0;
}

.navbar__link {
  color: var(--color-text-secondary);
  text-decoration: none;
  font-size: var(--text-base);
  transition: color var(--duration-fast) var(--ease-default);
  position: relative;
}

.navbar__link:hover {
  color: var(--color-primary);
}

.navbar__link::after {
  content: '';
  position: absolute;
  bottom: -4px;
  left: 0;
  width: 0;
  height: 2px;
  background: var(--color-primary);
  transition: width var(--duration-fast) var(--ease-default);
}

.navbar__link:hover::after {
  width: 100%;
}

/* ── 按钮组 ────────────────────────── */
.navbar__actions {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

.navbar__btn {
  padding: 8px 16px;
  border-radius: var(--radius-md);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  cursor: pointer;
  transition: all var(--duration-fast) var(--ease-default);
  border: none;
  background: transparent;
  color: var(--color-text-secondary);
}

.navbar__btn:hover {
  background: var(--color-bg-muted);
  color: var(--color-text);
}

.navbar__btn--primary {
  background: var(--color-primary);
  color: var(--color-text-inverse);
}

.navbar__btn--primary:hover {
  background: var(--color-primary-dark);
  transform: translateY(-1px);
}

/* ── 移动端菜单按钮 ────────────────── */
.navbar__toggle {
  display: none;
  background: none;
  border: none;
  cursor: pointer;
  padding: var(--space-2);
}

.navbar__toggle-icon {
  width: 24px;
  height: 24px;
  stroke: var(--color-text);
}

/* ── 响应式设计 ────────────────────── */
@media (max-width: 768px) {
  .navbar__links {
    display: none;
  }
  
  .navbar__toggle {
    display: block;
  }
  
  .navbar__actions {
    display: none;
  }
  
  .navbar__links--mobile {
    display: flex;
    flex-direction: column;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--color-surface);
    border-bottom: 1px solid var(--color-border);
    padding: var(--space-4);
    box-shadow: var(--shadow-lg);
    z-index: var(--z-dropdown);
  }
  
  .navbar__links--mobile .navbar__link {
    padding: var(--space-3) 0;
    border-bottom: 1px solid var(--color-border);
  }
  
  .navbar__links--mobile .navbar__link:last-child {
    border-bottom: none;
  }
}

AI 使用说明

组件名: navbar
选择器: .navbar
依赖: /tokens/tokens.css
文件: /components/navbar/navbar.html

纯 HTML + CSS,零框架依赖,AI 友好