You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用CSS实现小屏幕显示菜单图标、大屏幕显示导航文本?

实现响应式导航:小屏幕显示菜单图标,大屏幕显示文本导航

以下是实现需求的完整代码示例,包含HTML、CSS和可选的交互逻辑:

HTML结构

<nav class="navbar">
  <!-- 小屏幕菜单图标 -->
  <button class="menu-icon">☰</button>
  <!-- 大屏幕导航文本列表 -->
  <ul class="nav-links">
    <li><a href="#">首页</a></li>
    <li><a href="#">关于我们</a></li>
    <li><a href="#">服务项目</a></li>
    <li><a href="#">联系我们</a></li>
  </ul>
</nav>

CSS样式

/* 导航容器基础样式 */
.navbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 2rem;
  background-color: #2c3e50;
  color: #fff;
}

/* 大屏幕状态:默认隐藏菜单图标 */
.menu-icon {
  display: none;
  background: transparent;
  border: none;
  color: #fff;
  font-size: 1.5rem;
  cursor: pointer;
}

/* 大屏幕状态:默认显示导航文本 */
.nav-links {
  display: flex;
  gap: 2rem;
  list-style: none;
  margin: 0;
  padding: 0;
}

.nav-links a {
  color: #fff;
  text-decoration: none;
  transition: color 0.3s;
}

.nav-links a:hover {
  color: #3498db;
}

/* 小屏幕媒体查询(断点设为768px,可根据需求调整) */
@media (max-width: 768px) {
  /* 小屏幕显示菜单图标 */
  .menu-icon {
    display: block;
  }

  /* 小屏幕默认隐藏导航文本 */
  .nav-links {
    display: none;
    position: absolute;
    top: 60px;
    left: 0;
    width: 100%;
    background-color: #2c3e50;
    flex-direction: column;
    padding: 1rem 2rem;
    gap: 1rem;
  }

  /* 点击图标后显示导航文本的类 */
  .nav-links.active {
    display: flex;
  }
}

可选JavaScript交互(点击图标展开导航)

如果需要点击菜单图标展开隐藏的导航文本,添加以下代码:

const menuIcon = document.querySelector('.menu-icon');
const navLinks = document.querySelector('.nav-links');

menuIcon.addEventListener('click', () => {
  navLinks.classList.toggle('active');
});

常见问题排查

如果之前媒体查询未生效,可能是以下原因:

  • 媒体查询代码写在了基础样式之前,导致被覆盖;确保媒体查询放在所有相关CSS的最后
  • 选择器优先级不足;比如之前的导航文本样式用了#nav-links这类ID选择器,而媒体查询用了类选择器,需要调整选择器优先级
  • 断点设置错误;比如误用min-width代替max-width,导致逻辑颠倒

内容的提问来源于stack exchange,提问作者Jose Cardona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:40:29