当前位置: 首页 > news >正文

点击其他区域隐藏弹出框效果

一般下拉框或者选择框,持久展示时会给用户显示的隐藏方式,如点击事件后。也可以添加隐式的隐藏方式,如点击弹出框之外的区域。

CSS方法-focus伪类

当触发的元素是可以focus,以输入框为例。

  1. 可以将弹出框出现的时机设置在input:focus时,实现弹出的效果。当focus焦点转移的时候,实现隐藏效果。
  2. 在弹出框容器上添加hover事件,选择点击弹出框内容时不会隐藏,保证弹出框的点击事件可以触发。
  3. 当选中弹出框中的项时,input焦点转移,hover事件保证弹出框显示,可以触发点击事件。然后点鼠标移出弹出框区域后,弹出框hover失效,隐藏。
    缺点:
    隐藏可能不太流畅;触发的元素只能是能加focuse的元素
    <div class="selectorswarp"><label for="input">输入框:</label><input type="text"  class="selectinput" id="input"/><ul class="selectors" @click="clickli"><li>s1</li><li>s2</li><li>s3</li></ul></div>
.selectinput:focus{&+.selectors{display: block;}
}
.selectors{background-color: #42b983;height: auto;display: none;&:hover{display: block;}
}

或者使用:focus-within直接加在input元素的warp元素上.

JS方法-contains函数

Node.contains;
使用contains方法可以判断一个元素是否是判断元素的后代元素。可以在document上添加点击的监听事件,若事件的触发元素不是弹出框的后代元素,则隐藏弹出框。若是,则持续展示弹出框。

let listerSelectWarp = (e)=>{let target = e.target,selectorwrap = document.querySelector('.selectorswarp');showoptions.value = selectorwrap.contains(target);console.log('listerSelectWarp',selectorwrap.contains(target));
}
document.addEventListener('click',listerSelectWarp,);

注意:
当容易内部还有其他点击控制弹出框事件时,需要注意选择addEventListener的useCapture项,选择事件的触发方向。
缺点:
展示时需要比较明确事件的触发,比如点击事中添加类或变量控制。展示和隐藏需要控制同一样式或变量。

http://www.lryc.cn/news/291605.html

相关文章:

  • Python一些可能用的到的函数系列123 ATimer2-时间偏移
  • 企业微信主体变更 怎么操作?
  • 《区块链简易速速上手小册》第8章:区块链的技术挑战(2024 最新版)
  • 基于STM32的云上OneNET智慧大棚(包含程序设计报告)
  • 11.scala函数进阶
  • 在WebSocket中使用Redis出现空指针异常解决方案
  • 问题:第十三届全国人民代表大会第四次会议召开的时间是()。 #经验分享#知识分享#媒体
  • 《区块链简易速速上手小册》第10章:区块链的未来与趋势(2024 最新版)
  • JVM工作原理与实战(三十一):诊断内存泄漏的原因
  • #{}和${}的区别
  • 【数据结构】(三)树Tree
  • 扩展坞 接两个显示器
  • 鸿蒙 ArkTS 从数组内查找指定的数据
  • qemu 抓取linux kernel vmcore
  • RabbitMQ 死信队列应用
  • 除毛可以用宠物空气净化器吗?猫用空气净化器哪些品牌吸毛好?
  • 有趣的css - 好看的呼吸灯效果
  • 二叉树-堆应用(1)
  • 猫头虎博主第10期赠书活动:《写给大家看的Midjourney设计书》
  • 线程池相关的类学习
  • Redis核心技术与实战【学习笔记】 - 9.如何避免单线程模型的阻塞
  • 如何在 JavaScript 中使用 map() 迭代数组
  • 学习JavaEE的日子 Day19 常用类
  • 25考研政治备考计划
  • 漏洞01-目录遍历漏洞/敏感信息泄露/URL重定向
  • 软件工程知识梳理4-详细设计
  • Spring Boot3,启动时间缩短 10 倍!
  • Picturesocial | 只要 5 分钟,发现容器编排的秘密武器!
  • GEE数据集——Umbra 卫星合成孔径雷达开放数据
  • 一个vue项目中通过iframe嵌套另外一个vue项目,如何让这两个项目进行通信