菜鸟科技网

CSS导航怎么做?关键技巧有哪些?

第一步:基础结构 - HTML

无论你想要什么样式的导航,都离不开一个清晰的 HTML 结构,最常用的是无序列表 (<ul>),因为导航项之间是并列关系。

CSS导航怎么做?关键技巧有哪些?-图1
(图片来源网络,侵删)
<nav>
  <ul>
    <li><a href="#">首页</a></li>
    <li><a href="#">关于我们</a></li>
    <li><a href="#">产品服务</a></li>
    <li><a href="#">联系我们</a></li>
  </ul>
</nav>
  • <nav>: HTML5 语义化标签,专门用于导航区域。
  • <ul>: 无序列表,代表导航菜单。
  • <li>: 列表项,代表每一个导航项。
  • <a>: 锚点标签,用于链接到不同的页面或部分。

第二步:CSS 样式 - 从水平到垂直

我们用 CSS 来美化这个列表,让它看起来像一个导航栏。

水平导航栏 (最常见)

这是最常见的导航栏样式,链接项从左到右排列。

目标:

  • 去掉列表的默认样式(小圆点和缩进)。
  • <li> 元素水平排列。
  • <a> 元素看起来像按钮。

CSS 代码:

CSS导航怎么做?关键技巧有哪些?-图2
(图片来源网络,侵删)
/* 1. 重置和基础样式 */
nav ul {
  list-style: none; /* 去掉列表项前面的小圆点 */
  margin: 0;       /* 去掉外边距 */
  padding: 0;      /* 去掉内边距 */
  background-color: #333; /* 给导航栏加个背景色 */
}
/* 2. 让列表项水平排列 */
nav li {
  display: inline-block; /* 关键:将块级元素转为行内块,使其水平排列 */
}
/* 3. 美化链接 */
nav a {
  display: block; /* 关键:让链接充满整个 li 的区域,方便点击 */
  color: white;   /* 文字颜色 */
  text-align: center; /* 文字居中 */
  padding: 14px 20px; /* 上下 14px, 左右 20px 的内边距,形成按钮效果 */
  text-decoration: none; /* 去掉下划线 */
}
/* 4. 鼠标悬停效果 */
nav a:hover {
  background-color: #555; /* 鼠标放上去时改变背景色 */
}

完整代码示例 (水平导航):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">水平导航栏示例</title>
<style>
  body {
    font-family: Arial, sans-serif;
  }
  nav {
    background-color: #333;
  }
  nav ul {
    list-style: none;
    margin: 0;
    padding: 0;
  }
  nav li {
    display: inline-block;
  }
  nav a {
    display: block;
    color: white;
    text-align: center;
    padding: 14px 20px;
    text-decoration: none;
  }
  nav a:hover {
    background-color: #555;
  }
</style>
</head>
<body>
<nav>
  <ul>
    <li><a href="#">首页</a></li>
    <li><a href="#">关于我们</a></li>
    <li><a href="#">产品服务</a></li>
    <li><a href="#">联系我们</a></li>
  </ul>
</nav>
</body>
</html>

垂直导航栏 (常用于侧边栏)

垂直导航栏的列表项从上到下排列。

CSS 修改: 只需要将 display: inline-block; 改回默认的 display: block; 即可。

/* 只需要修改这一行 */
nav li {
  display: block; /* 恢复为块级元素,每个 li 占据一行 */
}
/* 可以调整一下宽度,让它看起来更美观 */
nav a {
  width: 200px; /* 给链接一个固定宽度 */
}

带下拉菜单的导航栏

这是更复杂一些的导航,鼠标悬停在某个菜单项上时,会展开一个子菜单。

CSS导航怎么做?关键技巧有哪些?-图3
(图片来源网络,侵删)

HTML 结构: 需要在父级 <li> 内部再嵌套一个 <ul>

<nav>
  <ul>
    <li><a href="#">首页</a></li>
    <li>
      <a href="#">产品服务</a>
      <!-- 下拉菜单开始 -->
      <ul class="dropdown">
        <li><a href="#">网站开发</a></li>
        <li><a href="#">移动应用</a></li>
        <li><a href="#">UI/UX 设计</a></li>
      </ul>
      <!-- 下拉菜单结束 -->
    </li>
    <li><a href="#">关于我们</a></li>
    <li><a href="#">联系我们</a></li>
  </ul>
</nav>

CSS 代码: 核心思路是:默认隐藏下拉菜单 (display: none;),当鼠标悬停在父级 <li> 上时,再显示出来 (display: block;)。

/* 基础样式同上... */
/* 下拉菜单的样式 */
.dropdown {
  list-style: none;
  margin: 0;
  padding: 0;
  position: absolute; /* 关键:脱离文档流,相对于父级定位 */
  background-color: #444;
  display: none; /* 默认隐藏下拉菜单 */
}
/* 当鼠标悬停在包含下拉菜单的 li 上时 */
nav li:hover .dropdown {
  display: block; /* 显示下拉菜单 */
}
/* 下拉菜单中的链接样式 */
.dropdown li {
  display: block; /* 垂直排列 */
}
.dropdown a {
  width: 200px; /* 可以设置和父级一样的宽度 */
}

关键点:

  • position: absolute;:将下拉菜单 <ul> 从正常的文档流中脱离,这样它就不会占据空间,可以覆盖在其他内容上。
  • nav li:hover .dropdown:这是后代选择器,只有当鼠标悬停在 <nav> 下的 <li> 元素上时,才选择这个 <li> 内部的 .dropdown 元素。

固定在顶部的导航栏

这种导航栏在用户滚动页面时始终保持在视口的顶部。

CSS 修改: 只需要给 <nav> 元素添加 position: fixed;top: 0;

nav {
  position: fixed; /* 关键:固定定位 */
  top: 0;         /* 距离顶部 0 */
  left: 0;
  width: 100%;    /* 宽度 100% */
  z-index: 1000;  /* 确保它在最上层 */
  /* 其他样式... */
}

注意: 因为 position: fixed; 会脱离文档流,可能会导致页面内容被“遮挡”在导航栏下方,通常需要在 <body> 的开头添加一个空的 <div>,并给它设置一个与导航栏高度相等的 margin-top 来解决这个问题。

<body>
  <div class="spacer"></div> <!-- 这个空 div 用来撑开空间 -->
  <nav>
    <!-- 导航内容 -->
  </nav>
  <!-- 页面其他内容... -->
</body>
<style>
  .spacer {
    height: 50px; /* 高度需要和 nav 的高度一致 */
  }
</style>

总结与进阶

类型 关键 CSS 技术 适用场景
水平导航 list-style: none;
display: inline-block;
display: block; (给 a 标签)
网站主导航
垂直导航 display: block; (给 li 标签) 侧边栏、子导航
下拉菜单 position: absolute;
display: none; / display: block; (配合 hover)
复杂的多级导航
固定导航 position: fixed;
top: 0;
width: 100%;
长页面、需要随时访问的导航

进阶技巧:

  1. Flexbox 布局: 对于现代导航栏,使用 Flexbox 会更灵活、更强大。
    nav ul {
      display: flex; /* 一行搞定水平排列 */
      justify-content: center; /* 居中对齐 */
    }
  2. Grid 布局: 也可以使用 CSS Grid 来创建复杂的导航布局。
  3. 响应式设计: 使用媒体查询 (@media),让导航栏在小屏幕设备上(如手机)自动变成“汉堡包”图标,点击后展开,这是现代网站的必备功能。

希望这个详细的指南能帮助你掌握用 CSS 制作导航栏的技巧!从简单的水平导航开始,逐步尝试下拉菜单和固定定位,你很快就能熟练运用了。

分享:
扫描分享到社交APP
上一篇
下一篇