首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用纯javascript显示和隐藏多个下拉菜单并通过单击外部来关闭

使用纯 JavaScript 实现显示和隐藏多个下拉菜单,并通过单击外部来关闭的方法如下:

  1. HTML 结构:在 HTML 中创建多个下拉菜单,并为每个下拉菜单添加一个共同的类名,以便在 JavaScript 中选择它们。同时,为了能够通过单击外部来关闭下拉菜单,需要在页面上添加一个透明的遮罩层。
代码语言:txt
复制
<div class="dropdown">
  <button class="dropdown-toggle">菜单1</button>
  <ul class="dropdown-menu">
    <li>选项1</li>
    <li>选项2</li>
    <li>选项3</li>
  </ul>
</div>

<div class="dropdown">
  <button class="dropdown-toggle">菜单2</button>
  <ul class="dropdown-menu">
    <li>选项1</li>
    <li>选项2</li>
    <li>选项3</li>
  </ul>
</div>

<div id="overlay"></div>
  1. CSS 样式:为下拉菜单和遮罩层添加样式,使其能够正确显示和隐藏。
代码语言:txt
复制
.dropdown-menu {
  display: none;
  position: absolute;
  background-color: #fff;
  border: 1px solid #ccc;
  padding: 10px;
}

#overlay {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
}
  1. JavaScript 代码:使用 JavaScript 监听按钮的点击事件,根据当前状态切换下拉菜单的显示和隐藏,并通过单击遮罩层来关闭下拉菜单。
代码语言:txt
复制
// 获取所有下拉菜单和遮罩层
const dropdowns = document.querySelectorAll('.dropdown');
const overlay = document.getElementById('overlay');

// 监听按钮的点击事件
dropdowns.forEach((dropdown) => {
  const toggleButton = dropdown.querySelector('.dropdown-toggle');
  const menu = dropdown.querySelector('.dropdown-menu');

  toggleButton.addEventListener('click', () => {
    if (menu.style.display === 'none') {
      // 显示下拉菜单
      menu.style.display = 'block';
      overlay.style.display = 'block';
    } else {
      // 隐藏下拉菜单
      menu.style.display = 'none';
      overlay.style.display = 'none';
    }
  });
});

// 单击遮罩层关闭下拉菜单
overlay.addEventListener('click', () => {
  dropdowns.forEach((dropdown) => {
    const menu = dropdown.querySelector('.dropdown-menu');
    menu.style.display = 'none';
  });
  overlay.style.display = 'none';
});

通过以上代码,可以实现纯 JavaScript 显示和隐藏多个下拉菜单,并且通过单击外部来关闭下拉菜单。你可以根据实际需求修改样式和细节。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Jump Start Bootstrap 第4章

现在,我们有了一个简单的下拉菜单,在单击链接时显示菜单。我们可以在浏览器中查看它,如图所示。 ? 让我们结合使用下拉式插件和我们在前一章中创建的标签按钮菜单。...在这里,请求是打开关闭下拉菜单。 让我展示一个如何使用这些事件的例子。我已经写了下面的JQuery代码片段去监听所有的下拉插件状态,打印每个事件触发时的状态。 <!...Bootstrap通过类”close”将按钮放置在警告消息的右上角。关闭按钮的解除动作靠data-dismiss属性触发,由Bootstrap使用JavaScript实现。...它是一个插入多个垂直堆叠标签的插件,但同一时间只能打开一个标签。 在Bootstrap中,通过多个面板组件组合在一个容器中创建Collapse。我们在最近一章看到了如何创建一个面板。...我们还学习了如何通过设置自定义data-*属性通过JavaScript定制它们。当使用Bootstrap时,您应该始终使用内置的插件,避免编写自定义插件。

28.3K40

Visual Studio 2008 每日提示(十三)

”,后者是如果我经常开发一个项目时用,前者我一般同时开发多个项目是用,这样可以根据自己的选择加载。...#122、使用Ctrl+Tab打开IDE的导航,获得鸟瞰视图,同时在Visual Studio中导航到所有打开的文件工具窗体 原文链接:use Ctrl+Tab to bring up the IDE...Menu 操作步骤: 菜单:按“Ctrl+Alt+Down”显示“文件下拉菜单”,可以通过上下的方向键选择文件打开文件 文件下拉菜单支持输入首字符匹配滚动,即输入文件名会自动在下拉列表中匹配选中。...评论: 我一般都是通过鼠标右键单击工具窗口的标题栏选择窗口的状态(停靠或隐藏) #130、隐藏所有的工具窗口 原文链接:Shift+Click automatically docks an auto-hiding...tool window 操作步骤: 菜单:窗口+自动全部隐藏 下图我隐藏隐藏后 评论: 可以通过这个方法把所有停靠窗口都隐藏

2K80

深入理解bootstrap

列嵌套:在一个列里再声明一个或者多个行(row),内部所嵌套的row的宽度为100%时就是当前外部列的宽度 3.列排序:通过.col-md-push-*.col-md-pull-*一实现 4.响应式栅格...-* 2.新版本使用了CSS3中的@font-face特性 B.下拉菜单 C.按钮组 1.只需要在多个按扭外部使用一个窗口元素(比如div),然后在容器元素上应用 .btn-group样式即可 2.按扭工具栏...1.利用data-toggle=""实现下拉菜单 2.样式.dropup向上的下拉菜单 E.输入框组 1.输入框组,.input-group样式,输入框前后显示的个性元素上可以使用.input-group-addon...(navbar)选项卡(tab)上实现 2.首先navbar的父容器上要应用.navbar样式,其次顶级ul块上要应用.nav.navbar-nav样式 3.使用规则: 菜单样式菜单项保持一致 被单击的链接或者按扭上需要应用...使用,折叠区域使用collapsein样式 2.默认隐藏折叠区域,触发元素上添加一个.collapsed样式,去掉折叠区域的in样式 3.JS用法:$(xxx).collapse(); K.旋转轮播

3.4K60

玩转谷歌优化(Google Optimize)

优化360的一个重要功能是可以通过追溯更改测试目标,以了解实验是如何影响其他GA的目标。它可以做到这一点,是因为测试的目标实际上就是你在谷歌优化容器上关联的GA数据视图的目标。...选中单击元素,拖放移动元素,然后就可以使用蓝色向上滑动菜单修改元素样式。下面提供了有关此编辑器中可用选项的详细信息。 1. 实验名称。即你的实验名称。 2. 切换变量。...如果你喜欢使用代码,这个菜单项将允许你添加自定义CSS到变体中。这仅适用于你当前正在处理的变体,而不是所有变体。 7. 交互模式。如果你需要编辑由下拉菜单或标签隐藏的内容,则需要使用交互模式。...进入交互模式将允许你单击元素以显示隐藏的内容。然后,你可以退出交互模式以编辑所述内容。 8. 设置。有两种方法可以拖放元素。默认为重新排序,从“重新排序”选项进入。 9. CSS元素选择器。...如果你想选择多个相同类型的元素,可使用CSS Element选择器(如上述第9点)。 12. 修改元素选项。当你右键单击所选的元素时,会显示下拉菜单。其功能就如其名称。 13.

3.7K70

如何在 React 中点击显示隐藏另一个组件?

这种需求可以通过使用 React 状态管理事件处理机制实现。在本文中,我们将介绍如何使用 React 实现点击显示隐藏另一个组件。...当用户单击菜单按钮时,菜单应该出现,然后当用户单击菜单外部时,菜单应该消失。下面是一个示例,展示如何使用 React 事件处理函数来实现菜单的显示隐藏。...显示/隐藏模态框我们可以使用事件处理函数来触发模态对话框的显示隐藏。当用户单击打开模态框的按钮时,模态框应该出现;当用户单击关闭按钮或模态框之外时,模态框应该消失。...当用户单击关闭按钮时,我们将可见性设置为 false,模态对话框将被隐藏。小结在本文中,我们介绍了如何使用 React 实现点击显示隐藏另一个组件。...我们首先讨论了如何使用 React 状态管理控制组件可见性。然后,我们介绍了如何使用事件处理机制响应用户交互。我们还给出了两个示例:如何显示/隐藏菜单如何显示/隐藏模态框。

4.4K10

VS Code 1.69 发布:允许快速解决 Git 合并冲突

启用后,可以通过单击源代码控制视图中的冲突文件打开合并编辑器。...注意 checkbox 是如何按预期更新的: 关闭合并编辑器或接受合并时,如果未解决所有冲突,则会显示警告。...单击 main section 以显示带有你最近的文件搜索框的快速打开下拉菜单。 请勿打扰模式 - 使非关键通知弹出窗口静音。 该模式在启用时会隐藏所有非错误通知弹出窗口。...进度通知将自动显示在状态栏中。隐藏的通知仍然可以在通知中心查看。 切换浅色 / 深色主题 - 在首选的浅色深色主题之间快速切换。...JavaScript sourcemap 切换 - 切换到调试编译而不是源代码。 现在可以通过单击调用堆栈视图标题中的 罗盘图标轻松地打开关闭 sourcemaps。

3.6K10

如何在 Windows 10上创建和运行批处理文件

如果不使用此命令,则脚本运行完毕后,窗口将自动关闭。当运行多个任务并且希望在它们之间暂停时,可以在脚本末尾或在特定命令之后使用此命令。...单击“文件”菜单 选择另存为选项 为脚本键入一个名称,例如,first_basic_batch.bat。 完成这些步骤后,双击该文件运行它,将显示如下窗口: ?...按需运行批处理文件 命令提示符 使用命令提示符运行批处理文件步骤: 打开开始搜索框 搜索cmd命令提示符,右键单击应用程序,选择 以管理员身份运行 选项 输入批处理文件的路径名称,然后按回车: C:...按计划运行批处理文件 要在 Windows 10上按计划执行一个批处理文件,你可以使用任务计划程序完成以下步骤: 点击开始搜索框 搜索任务计划程序,然后点击顶部搜索结果打开应用程序 右键单击任务计划程序库分支选择新文件夹选项...点击下一步按钮 使用开始设置,确认开始运行任务的日期时间 使用每月下拉菜单选择一年中你想要运行任务的月份。 使用天或上下拉菜单确认任务将运行的天。

26K40

分享5个关于 Vue 的小知识,希望对你有所帮助

我们使用v-show指令在hovered为true时显示第二个p元素。 现在,当我们的鼠标在div内时,我们可以看到“hovered”被显示出来。...当我们单击外部时,应该看到“clicked outside”被记录。 我们可以通过创建自定义指令检测 Vue.js 中元素外的点击。...这种功能在很多应用场景中都非常有用,以下是一些具体的示例: 下拉菜单(Dropdown)或模态窗口(Modal):当用户点击下拉菜单或模态窗口的外部区域,我们通常期望下拉菜单或模态窗口会关闭。...这就需要检测用户是否点击了元素的外部,如果是,那么就触发一个函数来关闭下拉菜单或模态窗口。...同样可以使用这个自定义指令监听点击事件,并在点击事件发生在菜单外部时,关闭上下文菜单。 工具提示(Tooltip):工具提示也有类似的需求。

19430

Adobe dreamweaver CS6小白入门教程「建议收藏」

1.界面认识 2.创建站点:(针对复杂网站使用) 3.管理站点的操作: 4.管理站点中的文件 5.DW文本网页的设计 6.DW图像多媒体网页设计 7.超链接 8.表格(重要)排版 9利用APDIV...5.DW文本网页的设计 5.1确定网页页面的属性 5.1.1如何写入连续多个空格?....使用Spry选项卡式面板:显示隐藏存储在选项卡式面板中内容 9.4.3.使用Spry折叠式 9.4.4.使用Spry折叠面板(只针对一个导航项) 9.5利用APDiv制作网页下拉菜单...先新建一个APDiv,确定合适的位置,插入表格(宽度100% 间距…),填好文字 选中导航栏的一个小格子,窗口–行为–“+”建立导航栏下拉菜单的关系 (显示–over ;隐藏–out) 10....点如图↓↓:第一种应用方法 或者第二种应用方法↓↓: 末:创建外部样式(新建CSS规则–规则定义选择“新建样式表文件而不是仅本”)那么如何引用外部样式呢?

7.1K30

BootStrap应用开发学习入门1

答:字体图标是在 Web 项目中使用的图标字体,可以通过基于项目的 Bootstrap 免费使用这些图标。...是用不可视的方式给元素加label aria-labelledby #如果被描述元素存在真实的描述元素,可使用它作为绑定描述元素被描述元素来代替 按钮下拉菜单 描述: 分割按钮的左边是原始的功能,右边是显示下拉菜单的切换...通过 JavaScript使用这种技术,您可以通过简单的一行 JavaScript 调用带有 id="identifier" 的模态框: $('#identifier').modal(options...,它们是通过 data 属性或 JavaScript 传递的。...您可以传递多个触发器,每个触发器之间用空格分隔。 delay number \ object 默认值:0 data-delay 延迟显示隐藏弹出框的毫秒数 - 对 manual 手动触发类型不适用。

44.6K21

微信小程序开发实战(16):交互组件

在循环的外面使用标签添加了一个“取消”按钮,点击“取消”按钮,无需加任何JavaScript代码就会关闭ActionSheet。...通过标签的hidden属性可以控制ActionSheet的显示隐藏,该属性值为true,表示隐藏ActionSheet,为false,表示显示ActionSheet。...通过bindchange属性指定一个事件函数,当点击“取消”按钮或ActionSheet外部区域,会调用该函数,通常在该函数中隐藏ActionSheet。 下面是完整的JavaScript实现代码。...例如,下面的布局代码放置了两个标签,通过点击相应的按钮显示其中一个对话框。...title属性指定标题,通过confire-text属性指定确定按钮的文本,通过cancel-text属性指定取消按钮的文本,通过hidden属性控制对话框的隐藏显示通过bindconfirm属性指定点击确定按钮要指定的函数

88220

BootStrap应用开发学习入门1

答:字体图标是在 Web 项目中使用的图标字体,可以通过基于项目的 Bootstrap 免费使用这些图标。...是用不可视的方式给元素加label aria-labelledby #如果被描述元素存在真实的描述元素,可使用它作为绑定描述元素被描述元素来代替 按钮下拉菜单 描述: 分割按钮的左边是原始的功能,右边是显示下拉菜单的切换...通过 JavaScript使用这种技术,您可以通过简单的一行 JavaScript 调用带有 id="identifier" 的模态框: $('#identifier').modal(options...,它们是通过 data 属性或 JavaScript 传递的。...JavaScript通过 JavaScript 调用下拉菜单切换,请使用下面的方法: $(function() { $(".dropdown-toggle").dropdown('toggle

44.2K20

Selenium Python使用技巧(二)

下面显示了一个代码片段(利用pytest)来处理多个浏览器: ''' 导入必要的包类 ''' import pytest from selenium import webdriver from selenium.webdriver.chrome.options...():通过链接文本查找元素 find_element_by_partial_link_text():通过链接文本的部分匹配查找元素 下面显示的是find_element_by_partial_link_text...对于任何测试自动化Selenium脚本,最基本但必不可少的技巧之一是实现如何在不关闭整个浏览器的情况下关闭选项卡。...在下面的示例中,我们打开一个包含测试URL的新窗口,然后关闭其他窗口。我们仅使用window_handles达到要求。...我们使用find_element_by_xpath()方法定位该元素,并且一旦找到该元素(使用ID),便从下拉菜单中选择该值。

6.3K30

Windows Terminal完整指南

管理标签窗格 通过单击 + 图标或 Ctrl + Shift + T 打开默认配置文件的新标签。...按住 Alt 键,然后使用光标键在键盘上的活动窗格之间切换。可以通过按住 Alt + Shift 使用光标键相应地调整大小调整窗格的大小。...可以通过双击文本来重命名选项卡,你还可以通过右键单击标签选择菜单选项更改名称或颜色: ? 这只会影响当前标签页;它不会永久更改个人资料。...要关闭活动窗格或选项卡,按 Alt + Shift + W 或输入终端的标准退出命令(通常是 exit)。 字体大小 可以使用 Ctrl + + Ctrl + - 调整活动终端的文本大小。...注意:请警惕 Ctrl + C 可以终止 Linux 应用程序,因此建议使用 Shift。 全局设置中提供了一个自动选择时复制选项,你还可以通过右键单击鼠标粘贴当前剪贴板项目。

8.3K50

如何在前端应用中合并多个 Excel 工作簿

在某些情况下,您可能需要将来自多个工作簿的数据(例如,来自不同部门的月度销售报告)合并到一个工作簿中,实现此目的的一种方法是使用多个隐藏的 SpreadJS 实例加载所有工作簿,然后将它们合并到一个电子表格中...此文将向您展示如何合并多个 Excel 工作簿并将它们作为单个电子表格显示在您的前端浏览器应用中。 设置项目 要加载 SpreadJS,我们需要添加主要的 JavaScript CSS 文件。...这可以通过导航到 HTML 文件的位置使用 NPM 安装 SpreadJS 文件完成: npm i @grapecity/spread-sheets @grapecity/spread-excelio...Spread 实例、ExcelIO 一个数组保存隐藏的 Spread 实例,我们将在合并之前使用加载所有 Excel 文件: var hiddenWorkbooks, hiddenSpreadIndex...这显示在上面的函数中,可以添加到“spread.addNamedStyle()”。 添加该代码后,您现在可以加载多个 Excel 工作簿使用 SpreadJS 将它们合并为一个。

20720

VBA专题05-1:一文彻底掌握用户窗体编程基础知识(上)

事件允许当用户对窗体控件进行操作时作出相应的反应,事件程序要放置在用户窗体模块中,能够通过双击用户窗体或控件打开代码模块窗口,或者在用户窗体或控件中单击右键,从快捷菜单中选择“查看代码”打开代码模块窗口...两个最重要的属性是Name属性Value属性: 1.Name属性可用于指定某个控件。当然,可以通过控件的索引号指定控件,但这样会难于理解调试,因此,使用名称更可取。...如果要使用代码显示隐藏用户窗体(例如,可能想在frmIntro窗体中使用一个命令按钮隐藏frmIntro窗体显示frmMain窗体),应该使用Show方法(显示窗体)Hide方法(隐藏窗体)。...当用户单击关闭按钮关闭窗体时,用户窗体将被自动卸载。 因此,用户窗体装载卸载的顺序是: 装载(Load)—显示(Show)—……—隐藏(Hide)—卸载(Unload)。...一旦用户窗体作为模式窗体显示后,不能将它改变为无模式窗体。必须先隐藏该窗体,然后再显示它,指定为无模式窗体。 无模式窗体仅对Excel2000及以上版本有效。

6.1K20

基于前端类Excel表格控件实现在线损益表应用

下面将会给大家展示如何前端环境中,利用前端表格控件创建损益表,并将其添加到你的Web项目中。...如果使用的是设计器,执行以下操作: 单击数据透视表分析 插入切片器 选择地区财政年度 或使用JavaScript实现: var regionSlicer = sheet.slicers.add("Region...在组顶部显示小计 转到设计选项卡 单击小计 选择“在组顶部显示所有小计” 在每个项目后插入空行 转到设计选项卡 单击空白行 选择“在每个项目后插入空白行” 隐藏按钮字段标题 转到数据透视表分析选项卡...单击按钮字段标题 更改枢轴布局 转到设计选项卡 单击报告布局 选择“以大纲形式显示” 上面提到的修改可以通过代码轻松更改。...生成报告 下面是我们制作好的损益表报告截图: 以上就是如何使用 SpreadJS 前端表格控件,来生成所需的财务报告支撑企业的财务应用。

3.1K40

后台系统设计(上篇:选择)

五、Transfer 穿梭框/列表构造器 在同一页面上显示 「源」 列表 「目的」 列表,通过使用按钮或拖拽,直观的在两栏之间移动元素,完成选择行为。 外观 常规: ?...最佳用法 ·在较小的空间下,对多个选项进行选择或内容较为次要且不需要一直显示时,下拉菜单是不错的选择。若选项较少,考虑使用单选框(当进行单项选择时)或复选框(当进行多项选择时)。...·下拉菜单选项按照某种逻辑顺序排序。例如,按照重要程度或被选择程度(可能性)进行排列。 ·对于大多数操作,当单击菜单或以外区域,菜单应该收起关闭;如果点击的菜单项是多选操作,则菜单应保持打开状态。...超出最大宽度从末尾截断,添加省略号,鼠标悬停显示全部文本内容。 ? ·如果没有预先选择,使用占位符(灰色文本)进行操作提示。例如:请选择。...同样我们还需要考虑在该检索的关键字下,会产生用户想要的多个结果吗? 例如添加公司人员,通过关键字的检索,基本是锁定单一人员,所以通过关键字检索进行多选的概率较低,自然可采用如下方案: ?

9.6K21
领券