当前位置:首页 > JavaScript

用js实现下拉菜单

2026-04-04 09:51:56JavaScript

使用HTML和CSS创建基本结构

下拉菜单的基础是HTML结构。创建一个<select>元素,内部嵌套多个<option>元素作为选项:

<select id="dropdown">
  <option value="option1">选项1</option>
  <option value="option2">选项2</option>
  <option value="option3">选项3</option>
</select>

通过JavaScript增强交互

使用JavaScript监听change事件,获取用户选择的值:

用js实现下拉菜单

document.getElementById('dropdown').addEventListener('change', function() {
  console.log('选中的值:', this.value);
});

自定义样式下拉菜单

如果需要更复杂样式,可以用<div>模拟下拉行为:

用js实现下拉菜单

<div class="custom-dropdown">
  <button class="dropdown-toggle">选择选项</button>
  <ul class="dropdown-menu">
    <li data-value="option1">选项1</li>
    <li data-value="option2">选项2</li>
    <li data-value="option3">选项3</li>
  </ul>
</div>
.custom-dropdown {
  position: relative;
  display: inline-block;
}
.dropdown-menu {
  display: none;
  position: absolute;
  list-style: none;
  padding: 0;
  margin: 0;
}
.dropdown-menu li {
  padding: 8px 12px;
  cursor: pointer;
}
const toggle = document.querySelector('.dropdown-toggle');
const menu = document.querySelector('.dropdown-menu');

toggle.addEventListener('click', () => {
  menu.style.display = menu.style.display === 'block' ? 'none' : 'block';
});

document.querySelectorAll('.dropdown-menu li').forEach(item => {
  item.addEventListener('click', () => {
    toggle.textContent = item.textContent;
    menu.style.display = 'none';
    console.log('选中的值:', item.dataset.value);
  });
});

使用第三方库实现

对于更复杂需求,可以考虑使用Select2等库:

<select class="js-example-basic-single">
  <option value="AL">Alabama</option>
  <option value="WY">Wyoming</option>
</select>
$(document).ready(function() {
  $('.js-example-basic-single').select2();
});

无障碍访问考虑

确保下拉菜单可通过键盘操作:

toggle.addEventListener('keydown', (e) => {
  if (e.key === 'Enter' || e.key === ' ') {
    menu.style.display = menu.style.display === 'block' ? 'none' : 'block';
  }
});

每个实现方式适用于不同场景,简单需求使用原生<select>即可,需要高度定制时推荐自定义实现或使用成熟库。

标签: 菜单js
分享给朋友:

相关文章

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…