html 到某个地方就隐藏,JavaScript——除指定区域外点击任何地方隐藏DIV

标签:

效果实现:

点击按钮菜单出现:                                    点击菜单外则收起菜单:

b4f3ae304351f9e77ebe15c679215aca.png

打开菜单效果:给"新建“添加onclick属性,使菜单display="block"显现

关闭菜单效果:使菜单display="none"隐藏

全部代码(代码之后有详解):

document.addEventListener("click",clickHidden);//所有组件添加点击事件

var mn=document.getElementById('menu');//获取菜单节点,菜单id为menu

function clickHidden(eve)

{

if( eve.target.id!="menu" )//点击的如果不是菜单,菜单隐藏。如果是菜单,菜单显现

mn.style.display="none";

}

我们如何判断是否点击了菜单之外的地方呢?

这里我们想到一个办法,给窗体所有组件添加事件,当点击时,使菜单display="none"。当点击的是菜单时,便使菜单display="block"

这里我们使用到的方法是addEventListener()

语法

element.addEventListener(event, function, useCapture)

参数

描述

event

必须。字符串,指定事件名。

注意: 不要使用 "on" 前缀。 例如,使用 "click" ,而不是使用 "onclick"。

提示: 所有 HTML DOM 事件,可以查看我们完整的 HTML DOM Event 对象参考手册。HTML DOM Event对象参考手册

function

必须。指定要事件触发时执行的函数。

当事件对象会作为第一个参数传入函数。 事件对象的类型取决于特定的事件。例如, "click" 事件属于 MouseEvent(鼠标事件) 对象。

useCapture

可选。布尔值,指定事件是否在捕获或冒泡阶段执行。

可能值:

true - 事件句柄在捕获阶段执行

false- false- 默认。事件句柄在冒泡阶段执行

我们需要监听全页面的单击事件,所以我们的对象是document

document.addEventListener("click",clickHidden);

这里我们注意有个问题:

当你给一个div设置了点击方法,这个div中还有其他元素。

那么实际点击的时候,并没有点击到目的div,因此无法触发点击事件。

解决方法:

1.直接将点击事件绑定到可能点击到的最上层元素。

2.css调节z-index

首先要考虑的是更外层的元素遮挡了靠里层的元素。比如外层遮挡为一个div(.card)被遮挡的是一个input框为(.input-space)

这时就要把遮挡它的元素的css中的z-index调的比他要低,假设:外层遮挡的类名为:card,被遮挡的input的类名为:input-space。

.card{

z-index:1;

}

.input-space{

z-index:2;

}

3.写完之后看input框能不能选到(点击事件生不生效)。如果还是选不到(点击事件不生效),就在这个基础上为card再加一层css, pointer-events:none,此css以为鼠标事件对当前元素无效。

.card{

pointer-events: none;

}

标签:

来源: https://blog.csdn.net/qq_36470686/article/details/83037430

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值