移动优先导航
本课属于 Coddy HTML 学习旅程的“前端实践”单元。第 8 课,共 35 课。
移动优先导航是指先为小屏幕设计一个简单、适合触摸操作的菜单,再针对大屏幕进行增强。
先创建一个基本的移动端导航结构:在 <nav> 元素中,加入一个按钮和一个列表。
<nav class="main-nav">
<button class="menu-toggle">Menu</button>
<ul class="nav-list">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>先应用移动端样式。在小屏幕上 → 显示“菜单”按钮,并隐藏列表。
.menu-toggle {
display: block;
//some more styles
}
.nav-list {
display: none;
//some more styles
}然后使用媒体查询来适配更大的屏幕。在更大的屏幕上,→ 在顶部以水平列表的形式显示菜单,并隐藏“菜单”按钮。
@media (min-width: 768px) {
.menu-toggle {
display: none;
}
.nav-list {
display: flex;
}
}这种方式能确保导航优先适配移动设备,再针对更大的屏幕进行优化。
挑战
简单给定一个包含导航栏的 HTML 文件,其中有一个菜单按钮和一个列表,目前该列表始终可见。
你的任务是修复移动端优先的导航样式,具体如下:
- 在移动设备屏幕上,默认隐藏导航列表。
- 在较大的屏幕上显示导航列表(
display: flex)。
亲手试试
<!DOCTYPE html>
<html>
<head>
<title>Mobile-First Navigation</title>
<style>
:root {
--primary-color: #4a6de5;
--text-color: #333333;
}
.nav-container {
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
font-weight: bold;
color: var(--primary-color);
text-decoration: none;
font-size: 1.5rem;
}
.menu-toggle {
display: block;
background-color: var(--primary-color);
color: white;
border: none;
padding: 0.5rem 1rem;
cursor: pointer;
}
.nav-list {
list-style: none;
padding: 0;
margin: 1rem 0 0 0;
width: 100%;
}
.nav-list li a {
color: var(--text-color);
text-decoration: none;
display: block;
padding: 0.5rem 0;
}
@media (min-width: 768px) {
.menu-toggle {
display: none;
}
.nav-list {
margin: 0;
width: auto;
}
.nav-list li {
margin: 0 0 0 1.5rem;
}
}
</style>
</head>
<body>
<header class="site-header">
<nav class="nav-container">
<a href="#" class="logo">MySite</a>
<button class="menu-toggle">Menu</button>
<ul class="nav-list">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Services</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
</body>
</html>这节课包含一个小测验。开始学习即可作答,并记录你的进度。
前端实践中的所有课
自己练习: Web 在线编辑器