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

单击时展开一个div并收缩其他div,再次单击后恢复到正常状态

,可以通过使用JavaScript和CSS来实现。

首先,我们需要为每个div元素添加一个点击事件监听器。当点击某个div时,我们可以通过修改其CSS样式来展开或收缩它。同时,我们还需要遍历其他的div元素,将它们的CSS样式恢复到正常状态。

以下是一个实现该功能的示例代码:

HTML代码:

代码语言:txt
复制
<div class="container">
  <div class="div1" onclick="toggleDiv('div1')">Div 1</div>
  <div class="div2" onclick="toggleDiv('div2')">Div 2</div>
  <div class="div3" onclick="toggleDiv('div3')">Div 3</div>
</div>

CSS代码:

代码语言:txt
复制
.container {
  display: flex;
  flex-direction: column;
}

div {
  padding: 10px;
  background-color: lightgray;
  margin-bottom: 5px;
  cursor: pointer;
}

.expanded {
  height: 200px;
}

.collapsed {
  height: 0;
}

JavaScript代码:

代码语言:txt
复制
function toggleDiv(divId) {
  var div = document.getElementById(divId);
  var container = div.parentNode;

  // 遍历其他div元素,将它们的CSS样式恢复到正常状态
  for (var i = 0; i < container.children.length; i++) {
    var child = container.children[i];
    if (child.id !== divId) {
      child.classList.remove('expanded');
      child.classList.add('collapsed');
    }
  }

  // 切换当前div的展开/收缩状态
  if (div.classList.contains('expanded')) {
    div.classList.remove('expanded');
    div.classList.add('collapsed');
  } else {
    div.classList.remove('collapsed');
    div.classList.add('expanded');
  }
}

在上述代码中,我们首先为每个div元素添加了一个点击事件监听器,并通过调用toggleDiv函数来处理点击事件。toggleDiv函数首先获取被点击的div元素和其父容器,然后遍历父容器的所有子元素,将除了被点击的div外的其他div元素的CSS样式恢复到正常状态。接着,根据被点击的div的当前状态,切换其展开/收缩状态。

这样,当我们点击某个div时,它会展开,并且其他的div会收缩。再次点击该div时,它会恢复到正常状态。

请注意,上述代码只是一个示例,实际应用中可能需要根据具体需求进行适当的修改和优化。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):提供可扩展的计算能力,满足各种业务需求。详情请参考:云服务器(CVM)
  • 云数据库 MySQL 版:可靠、可扩展的关系型数据库服务。详情请参考:云数据库 MySQL 版
  • 云存储(COS):安全、稳定、低成本的云端存储服务。详情请参考:云存储(COS)
  • 人工智能平台(AI Lab):提供丰富的人工智能算法和模型,帮助开发者快速构建智能应用。详情请参考:人工智能平台(AI Lab)
  • 物联网开发平台(IoT Explorer):提供全面的物联网解决方案,帮助开发者连接和管理物联网设备。详情请参考:物联网开发平台(IoT Explorer)
  • 腾讯会议:高清流畅的音视频通信和会议协作服务。详情请参考:腾讯会议
  • 腾讯云区块链服务(Tencent Blockchain):提供安全、高效的区块链解决方案。详情请参考:腾讯云区块链服务(Tencent Blockchain)

以上是腾讯云提供的一些相关产品,供您参考。请注意,这仅仅是其中的一部分,腾讯云还提供了更多丰富的云计算产品和服务,可根据具体需求进行选择和使用。

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

相关·内容

Jquery实现可拖拽的树菜单「建议收藏」

//最小移动距离                 MinMoveSize: 5             };             var SwitchBool = false;     //拖拽推断当前节点是否展开状态...【原来是展开展开收缩收缩】             function CurrentNodeExpandContract($switchId) {                 if (SwitchBool...由于根节点为一个不可能是关闭状态]                         if (status == “targetPrevNode”) {                            ...a标签Dragging             //实现思想:1.单击标签将追加至 2....            });             var Bool = false;             var tmpDragingNode = “”;             //拖拽推断当前节点是否展开状态

4.5K30
  • CSS 下拉菜单与 focus

    相较于 hover 是悬停、focus 是获得焦点,active 是「正在交互」——从按下鼠标左键(主要按键)松开、或者是从触摸到松开,一松开便解除 active 状态,而下拉菜单显然是要按下保持住展开状态的...桌面端 移动端 focus 持续失去焦点 松开进入,持续失去焦点 hover 悬停期间 按下进入,持续失去焦点 active 单击按下期间 触摸按下期间 综合来看,focus 是最合适的。...首先,第一个坑——iOS Sasfari 浏览器中点击 与 button 的时候是不会有 :focus 状态的,倒是原本在 PC 上表示悬停的 :hover 可以在点击(触摸)被激活。...这样一来,点击「空白」位置就可以使下拉菜单正常失焦了。 // ......PC iOS Android focus 持续失去焦点 默认不可用 松开进入,持续失去焦点 hover 悬停期间 按下进入,持续失去焦点 按下进入,持续失去焦点 active 单击按下期间

    5.5K20

    Bootstrap源码分析之dropdown

    dropdown.js:实现下拉框响应 实现功能及原理: 下拉选项卡,默认不能实现显示选中项的功能 原理: 1、利用dropdown类作为定位点,然后让子级的列表dropdown-menu绝对定位实现,还需要加一个单击点作为设置...5、如果用Js插件调用,基础方法都要自己调用才行,在创建实例只会绑定toggle事件。...click.bs.dropdown', this.toggle) } 6、clearMenu:只会清除data-toggle=”dropdown”的元素 7、dropdown-backdrop:用于移动没有单击事件的处理...8、keydown:当dropdown按钮获取焦点的时候,按下键可以展开,按上键收缩的功能 9、data-target和herf=”#id”:是为了实现单击展开指定的下拉列表,默认是展开与按钮后面兄弟节点...li> 产吕 实用工具 <div

    3K70

    如何使用纯前端控件集 WijmoJS 中的可视化在线设计器

    设计器的主菜单默认为全部折叠,显示为垂直条形图标。单击页面左上角的WijmoJS徽标以展开菜单。...工具箱”命令打开一个可折叠的WijmoJS前端控件面板,按模块名称(网格,图表,输入,仪表,导航,OLAP)分组。 展开输入组单击“日历”以添加名为calendar1的新控件。...此外,您还可以使用WijmoJS设计器查看选择不同WijmoJS 主题效果。 单击WijmoJS 徽标以关闭工具箱,单击主题以显示可用主题列表,然后单击其他值,例如Cerulean。...如果要将此代码部署公共服务器,则可以在此处插入应用程序的WijmoJS许可证密钥。这两个赋值语句在空的标记上调用相应的WijmoJS构造函数。...请注意,设计器不会从源视图中保存的HTML恢复状态,只能从设计视图中保存的JSON恢复。 使用图表 现在让我们考虑一个更复杂的例子。

    5.9K20

    Ajax与jQuery异步加载数据

    将展示Ajax数据 (document).ready(function(){})指页面其他元素加载完成开始加载Ajax数据,此时,浏览器不会有加载条和转圈的情况出现。...在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。...一个被完整读入的页面与一个已经被动态修改过的页面之间的可能差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在Ajax应用程序中,却无法这样做。...不过开发者已想出了种种办法来解决这个问题,HTML5之前的方法大多是在用户单击后退按钮访问历史记录,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。...(例如,当用户在Google Maps中单击后退,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映Ajax元素上,以便将应用程序状态恢复当时的状态)。

    10.9K20

    如何收缩SQL2008数据库日志Ldf文件过大

    今日小编在处理日常工作遇到一个客户反应,登录软件老是报错:Error executing SQL statement无法顺利进入软件。...在打开的QFBJZT数据库属性页面单击“选项”标签,恢复模式后下拉菜单中选择“简单”模式,设置好单击“确定”按钮使设置生效。...3,返回SSMS窗口,右键单击目标数据库名称QFBJZT,右键选择任务-收缩-数据库。4,在收缩数据库页面中无须调整参数,直接单击“确定”按钮开始收缩数据库的操作。...日志文件在一些异常情况下往往是恢复数据库的重要依据,收缩数据库操作主要作用是收缩日志大小。所以需要定期进行上述操作,以免数据库日志过大。...5,最后再次右键数据库QFBJZT选择“属性”,在打开的QFBJZT数据库属性页面单击“选项”标签,恢复模式后下拉菜单中选择回“完整”模式,设置好单击“确定”按钮使设置生效即可完成收缩数据库日志文件工作

    33310

    《最新出炉》系列初窥篇-Python+Playwright自动化测试-6-元素定位大法-下篇

    单击 :Details page.get_by_text("Details").click() 要单击 : page.locator("x-details"...我们可以再次使用产品定位器按按钮的角色获取单击它,然后使用断言来确保只有一个带有文本“产品 2”的产品。...5.3.1通过文本定位 使用 page.get_by_text() 方法通过文本内容在列表中查找元素,然后单击它。  通过文本内容找到项目单击它。...以下调用工作正常。...6.1其他定位器 对于不太常用的定位器,请查看官网的其他定位器指南。由于时间关系,宏哥就不在这里对其进行展开介绍和讲解了。好了时间不早了,关于元素定位大法今天就分享这里!!!

    1.2K11

    oidc auth2.0_使用Spring Security 5.0和OIDC轻松构建身份验证「建议收藏」

    单击“ 生成项目” ,下载zip,在硬盘上展开,然后在您喜欢的IDE中打开项目。 使用./mvnw spring-boot:run运行该应用程序, ....好消息是,此更改可能会在GA发布之前恢复 。 同时,您可以将打印的密码复制控制台,并与HTTPie一起使用 。...创建一个OpenID Connect应用 要与Okta集成,您需要在developer.okta.com上注册一个帐户 。 确认电子邮件登录,导航至应用程序 > 添加应用程序 。...单击链接,您应该会看到一个登录屏幕。 输入用于创建帐户的凭据,登录,您应该会看到类似以下的屏幕。 注意:可以更改某些内容,以便Principal#getName()返回不同的值。...单击链接,您将看到从用户信息端点检索的ID令牌的内容。

    3.4K20

    优化 React APP 的 10 种方法

    在文本框中输入2Click Me连续单击按钮,我们将看到ReactComponent将被重新渲染一次,并且永远不会被渲染。 它将上一个道具和状态对象的字段与下一个道具和状态对象的字段进行浅层比较。...重新选择库封装了Redux状态检查该状态的字段,告诉React什么时候渲染或不渲染字段。...现在,如果我们输入2单击按钮,则将渲染组件,应该渲染该组件,因为先前的状态是这样的: state = { data: null } 下一个状态对象是这样的: state = { data: 2 } 因为...如果再次单击该按钮,我们将有另一个重新渲染,不是这样,因为前一个状态对象和下一个状态对象将具有相同的data值,但是由于setState新状态对象的创建,React将看到差异状态对象引用和触发器重新呈现...再次运行该应用程序,输入2连续单击该Click Me按钮,您将看到渲染一次,不再进行:) 看到,我们使用了shouldComponentUpdate方法来设置何时重新渲染组件,从而有效地提高了组件的性能

    33.9K20

    解决 Parallels Desktop 虚拟机不能连网的问题

    Windows 中的网络正常工作,但依赖网络的软件出现问题。无法访问家庭网络中的其他计算机。...在进行任何进一步操作之前,请先生成一张快照(“操作”>“生成快照”)以恢复故障排除前的状态。...注意:在执行此步骤时时,确保两个 Parallels Tools 服务保持已启用状态。如果这样做有帮助并且恢复了网络连接,请逐一启用所有服务,以确定存在问题的第三方应用程序。 2....如果在 Windows 重启,仍无法正常连接网络,请再次打开命令提示符,输入以下命令以释放更新 IP 地址:ipconfig /releaseipconfig /renew 4....如果上述步骤仍不见效,请在 Windows 中打开“设备管理器”(右键单击“开始”菜单,选择“设备管理器”)。在“设备管理器”中,转到“网络适配器”选项卡展开。检查网络适配器的名称。

    6.9K00

    加速Python数据分析的10个简单技巧(下)

    打印单元格的所有输出 考虑一个包含以下代码行的Jupyter笔记本单元: 1In [1]: 10+5 2 11+6 3Out [1]: 17 只有最后一个输出被打印是单元格的一个正常属性...,对于其他输出,我们需要添加print()函数。...再次点击组合将取消对同一行代码的注释。 ? 10. 删除是人性,恢复是神性 你是否曾经不小心删除了Jupyter笔记本中的一个单元格?如果是,那么这里有一个快捷方式可以撤消删除操作。...如果删除了单元格的内容,可以按CTRL/CMD+Z轻松地恢复它 如果需要恢复整个已删除单元格,请单击ESC+Z或编辑>撤消删除单元格 ?...结论 在本文中,我列出了在使用Python和Jupyter笔记本收集的主要技巧。我相信他们会对你有用,你会从这篇文章中得到一些东西。 End

    61730

    事件高级

    eventTarget.addEventListener()方法将指定的监听器注册 eventTarget(目标对象)上,当该对象触发指定的事件,就会执行事件处理函数。...DOM事件流 html中的标签都是相互嵌套的,我们可以将元素想象成一个盒子装一个盒子,document是最外面的大盒子。 当你单击一个div,同时你也单击div的父元素,甚至整个页面。 ​...比如:我们给页面中的一个div注册了单击事件,当你单击div,也就单击了body,单击了html,单击了document。 ?...事件对象 什么是事件对象 官方解释: event对象代表事件的状态,比如键盘按键的状态鼠标的位置、鼠标按钮的状态。...当我们注册事件,event 对象就会被系统自动创建,依次传递给事件监听器(事件处理函数) .

    1.4K20

    如何使用AngularJS和PHP为任何位置生成短而独特的数字地址

    在浏览器中再次访问该应用程序,然后在第一个字段中输入状态名称。将文本光标移动到下一个字段,不会显示纬度和经度标签,地图上显示的位置也不会更改以反映您输入的信息。让我们启用这些行为。...保存文件,但暂时保持打开状态。如果您再次在浏览器中访问该应用程序,则不会看到其外观或行为的任何新变化。同样,如果您要输入地址单击“ 生成”按钮,则应用程序仍然不会生成或显示地图代码。...每当用户单击Generate按钮,index.php文件中的代码都会提交表单调用该processForm函数,该函数在以下createDigitalAddressApp.js位置定义: . . ....保存此文件,然后再次访问您的应用程序。在状态字段中输入US-NY然后单击TAB以将输入焦点更改为下一个字段。您将看到以下输出: 请注意,您在表单中输入的地理坐标和物理地址显示在地图下方。...保存关闭该文件,然后再次在浏览器中刷新应用程序。输入您选择的地址,然后单击“ 生成”按钮。输出看起来类似于: 在此阶段,您已完成申请,现在可以为世界上任何实际位置生成短数字地址。

    13.2K20

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

    然后,我们在组件的返回值中渲染一个按钮和一个条件渲染的 div 元素。当用户单击按钮,onClick 事件处理函数会调用 setIsVisible 函数,并将 !...使用事件处理机制响应用户交互React 组件可以用 onClick 事件处理函数来响应用户的单击事件。当用户单击按钮,onClick 事件处理函数被触发,执行一些逻辑代码。...当用户单击菜单按钮,菜单应该出现,然后当用户单击菜单外部,菜单应该消失。下面是一个示例,展示如何使用 React 和事件处理函数来实现菜单的显示和隐藏。...当用户单击打开模态框的按钮,模态框应该出现;当用户单击关闭按钮或模态框之外,模态框应该消失。下面是一个示例,展示如何使用 React 和事件处理函数来实现模态对话框的显示和隐藏。...当用户单击关闭按钮,我们将可见性设置为 false,模态对话框将被隐藏。小结在本文中,我们介绍了如何使用 React 来实现点击显示或隐藏另一个组件。

    4.9K10

    VBA专题10-23:使用VBA操控Excel界面之添加动态菜单

    一个允许动态填充其内容的控件是组合框控件。 动态菜单控件可以在运行时做更多的事,是唯一一个其内容的结构可以在运行时改变的控件,可以包含自定义控件和内置控件——包括其他动态菜单。...复制粘贴下面的XML代码: image.png group元素不仅能够包含动态菜单,而且还可包含其他控件。 6. 单击工具栏中的Validate按钮检查是否有错误。 7. 保存关闭该文件。...下面展示了选择不同的工作表的菜单内容: 640.gif 保留自定义复选框的勾选条件 在上面的示例XML和VBA代码中,当用户在工作表Data中单击动态菜单中的复选框,复选框会相应地显示勾选或者取消勾选...然而,如果用户在设置勾选该复选框,通过单击工作表标签激活其他工作表,那么动态菜单被无效,与菜单相关的任何数据(包括复选框的勾选条件)将被销毁。...如果要保留条件,可以在其被无效前存储其状态,然后在重新创建菜单恢复状态。这可以通过使用模块级的变量和getPressed回调属性来实现。

    6.1K20

    快速搭建一个代码在线编辑预览工具(实战)

    具体对象或数组的某项也使用div来实现换行,需要注意的是如果是作为对象的某个属性的值的话,需要使用span来和属性及冒号显示在同一行,此外,也要考虑循环引用的情况。...展开收缩时针对非空的对象和数组,所以可以在遍历下级属性之前添加一个按钮元素,按钮相对于最外层元素使用绝对定位。...`{` : '{' // 这个wrap的div用来实现展开收缩功能...> 复制代码 点击展开收缩按钮的时候根据当前的展开状态来决定是展开还是收缩展开收缩操作的是wrap元素的高度,收缩同时插入一个省略号的元素来表示此处存在收缩,同时因为按钮使用绝对定位,脱离了正常文档流...动态执行的代码里的输出以及最后表达式的值我们也要显示控制台里,为了不在上层拦截console,我们把动态执行代码的功能交给预览的iframe,执行完再把最后的表达式的值使用console打印一下,这样所有的输出都能显示控制台

    4.4K30

    使用 React Hooks 需要注意过时的闭包!

    然后看看控制台,每2秒出现一次Count is: 0,尽管count状态变量实际上已经增加了几次。 为什么会这样? 第一次渲染状态变量count初始化为0。...之后,即使在单击Increase按钮count增加,计时器函数每2秒调用一次的log(),使用count的值仍然是0。log()成为一个过时的闭包。...快速单击2次按钮。 计数器仅更新为1,而不是预期的2。 每次单击setTimeout(delay, 1000)将在1秒执行delay()。delay()此时捕获到的 count 为 0。...再次快速单击按钮2次。 计数器显示正确的值2。...当一个返回基于前一个状态的新状态的回调函数被提供给状态更新函数,React确保将最新的状态值作为该回调函数的参数提供 setCount(alwaysActualStateValue => newStateValue

    1.9K30

    快速搭建一个代码在线编辑预览工具

    具体对象或数组的某项也使用div来实现换行,需要注意的是如果是作为对象的某个属性的值的话,需要使用span来和属性及冒号显示在同一行,此外,也要考虑循环引用的情况。...展开收缩时针对非空的对象和数组,所以可以在遍历下级属性之前添加一个按钮元素,按钮相对于最外层元素使用绝对定位。...`{` : '{' // 这个wrap的div用来实现展开收缩功能...> 点击展开收缩按钮的时候根据当前的展开状态来决定是展开还是收缩展开收缩操作的是wrap元素的高度,收缩同时插入一个省略号的元素来表示此处存在收缩,同时因为按钮使用绝对定位,脱离了正常文档流,所以也需要手动控制它的显示与隐藏...动态执行的代码里的输出以及最后表达式的值我们也要显示控制台里,为了不在上层拦截console,我们把动态执行代码的功能交给预览的iframe,执行完再把最后的表达式的值使用console打印一下,这样所有的输出都能显示控制台

    4.1K20
    领券