0

0

html+css导航栏怎么做_html+css制作菜单栏【教程】

蓮花仙者

蓮花仙者

发布时间:2026-03-08 21:43:02

|

847人浏览过

|

来源于php中文网

原创

最稳导航栏写法是 ul+li,语义正确、屏幕阅读器友好、样式灵活;须用 flex 布局替代 float,确保键盘焦点、响应式和可访问性统一。

html+css导航栏怎么做_html+css制作菜单栏【教程】

导航栏用 ul + li 是最稳的写法

因为语义正确、屏幕阅读器友好、样式控制灵活,且不会像 div 堆砌那样容易漏掉列表含义。浏览器默认给 ul 的缩进和圆点其实无关紧要——list-style: none 一行就能清掉。

常见错误是直接用一堆 spandiv 拼导航,结果键盘 Tab 焦点乱跳、SEO 无结构、后期加下拉菜单时 DOM 层级崩坏。

  • 必须用 ul 包裹 li,每个 li 里放一个 a
  • a 标签必须有 href(哪怕只是 #),否则无法被键盘聚焦或被辅助技术识别
  • 别给 li 设固定宽度,优先用 display: flexinline-block 布局

display: flexfloat 更可靠

float 做导航栏老出问题:父容器塌陷、换行错位、IE 兼容性差;而 flex 一行对齐、居中简单、响应式伸缩自然。

但要注意:如果导航项文字长度差异大,又没设 flex-wrap: wrap,小屏下会溢出或横向滚动——这不是 bug,是 flex 默认不折行。

立即学习前端免费学习笔记(深入)”;

Colossyan
Colossyan

AI虚拟人出镜视频生成

下载
  • 父容器(ul)加 display: flex; align-items: center;
  • 子项(li)加 margin-right: 1rem 比用 gap 兼容性更好(gap 在 flex 中 IE 完全不支持)
  • 最后一个 li:last-child { margin-right: 0; } 避免多余空白

下划线高亮、背景色激活态别只靠 :hover

用户用键盘 Tab 切换时,:focus 必须和 :hover 表现一致,否则体验割裂。而且别忘了移动端没有 hover,纯靠点击触发,所以 :active.active 类也要同步处理。

常见坑是写了 a:hover { background: #007bff; } 却忘了 a:focus { outline: 2px solid #007bff; },结果键盘用户看不见当前焦点在哪。

  • 统一用 a:hover, a:focus { background: #007bff; color: white; }
  • 当前页面对应的导航项加 class="active",并写 a.active { background: #0056b3; }
  • 如果要去掉默认蓝色虚线框,用 outline: none 但必须补上等效视觉反馈(比如边框或阴影)

响应式折叠菜单得手动控制显隐,CSS 无法自动判断内容是否溢出

媒体查询只能按视口宽度切,不能按导航项数量或宽度切。所以「超出就变汉堡」这事,纯 CSS 做不了——要么 JS 测量容器宽度,要么提前约定最多显示 5 项,其余塞进 details 或下拉菜单。

别信“用 overflow: hidden + text-overflow: ellipsis 把菜单缩成…”,那不是导航,是遮羞布。

  • 小屏下用 @media (max-width: 768px)ul 设为 flex-direction: column 或隐藏,再用 input[type="checkbox"] + label + ul 模拟开关
  • JS 方案推荐监听 window.resize 并对比 ul.scrollWidth > ul.clientWidth,真溢出再显示汉堡按钮
  • 别在 @media 里写 display: none 后又用 JS show(),会导致 FOUC 和 SSR 不一致
事情说清了就结束。导航栏看着简单,但键盘可访问性、响应式边界、语义结构这三点,随便漏一个,后面改起来都比重写还费劲。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

594

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

105

2025.10.23

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

438

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

601

2023.08.10

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

829

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

28

2025.12.06

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

530

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

556

2023.07.28

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

59

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

CSS教程
CSS教程

共754课时 | 41.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号