hover到一个icon,content出现,再次hover到content上,content不消失
2018-01-22 21:08
483 查看
html
<div class="icon"></div>
<div class="content"></div>
css
.icon {
width: 30px;
height: 30px;
border: 1px solid red;
}
.content {
width: 400px;
height: 400px;
border: 1px solid red;
margin-top: 5px;
display: none;
}
js
// 知识点:如果一个dom元素消失了,那么是无法为其绑定事件的
var icon = document.querySelector('.icon')
var content = document.querySelector('.content')
var timeoutId = null
// 鼠标hover上icon,content出现
icon.addEventListener('mouseenter', (event) => {
content.style.display = 'block'
}, false)
icon.addEventListener('mouseleave', (event) => {
//不能立即消失,因为,如果鼠标再次hover到content,需要将content再次显示出来,可是这个时候content已经消失了,无法为其绑定上mouseenter事件
timeoutId = setTimeout(() => {
content.style.display = 'none'
}, 500)
}, false)
content.addEventListener('mouseenter', (event) => {
if (timeoutId) {
clearTimeout(timeoutId)
}
}, false)
content.addEventListener('mouseleave', (event) => {
setTimeout(() => {
content.style.display = 'none'
}, 500)
}, false)
效果演示
知识点:
1.为icon和content分别监听mouseenter和mouseleave事件。如果鼠标从icon出来后又进入content,则取消icon的mouseenter事件,即不让content消失。
2.无法为一个display=none的元素添加事件监听
<div class="icon"></div>
<div class="content"></div>
css
.icon {
width: 30px;
height: 30px;
border: 1px solid red;
}
.content {
width: 400px;
height: 400px;
border: 1px solid red;
margin-top: 5px;
display: none;
}
js
// 知识点:如果一个dom元素消失了,那么是无法为其绑定事件的
var icon = document.querySelector('.icon')
var content = document.querySelector('.content')
var timeoutId = null
// 鼠标hover上icon,content出现
icon.addEventListener('mouseenter', (event) => {
content.style.display = 'block'
}, false)
icon.addEventListener('mouseleave', (event) => {
//不能立即消失,因为,如果鼠标再次hover到content,需要将content再次显示出来,可是这个时候content已经消失了,无法为其绑定上mouseenter事件
timeoutId = setTimeout(() => {
content.style.display = 'none'
}, 500)
}, false)
content.addEventListener('mouseenter', (event) => {
if (timeoutId) {
clearTimeout(timeoutId)
}
}, false)
content.addEventListener('mouseleave', (event) => {
setTimeout(() => {
content.style.display = 'none'
}, 500)
}, false)
效果演示
知识点:
1.为icon和content分别监听mouseenter和mouseleave事件。如果鼠标从icon出来后又进入content,则取消icon的mouseenter事件,即不让content消失。
2.无法为一个display=none的元素添加事件监听
相关文章推荐
- 前端动画的bug:hover一个li,左滑进背景图,li上文字消失太快(或者说出现闪现消失)
- 实现html中就一个按钮和一个文本框,点击按钮显示文本框,再点击文本框消失,再次点击又出现。
- c#中怎样在打开一个form后让第二个form出现一段时间后自动消失
- 在UIAlterView的代理方法中 点击确定时 添加一个UIView到[[UIApplication sharedApplication].keyWindow上只出现了0.5秒左右就消失的问题
- 在UIAlterView的代理方法中 点击确定时 添加一个UIView到[[UIApplication sharedApplication].keyWindow上只出现了0.5秒左右就消失的问题
- Jquery的左滑动消失或出现——一个菜鸡的学习过程
- 为什么登录的时候,出现了一个异常,再次登录,之前的站点无法保存呢?
- [推荐]一个用来给控件做提示的JS脚本,鼠标移到控件上时出现提示,离开时消失!
- ppt点击文字出现图片,再次点击消失
- Oracle9i卸载后再次安装,设置的SID相同出现“指定的SID在本机上已经存在。请指定一个不同的SID。”
- 在UIAlterView的代理方法中 点击确定时 添加一个UIView到[[UIApplication sharedApplication].keyWindow上只出现了0.5秒左右就消失的问题
- [Selenium]怎样等待元素出现之后再消失,譬如Loading icon
- 【Android笔记-异常-4】定义一个临时的数组变量承接数据,ListView的数据以及通知数据更新要放到同一个线程(主线程)。避免出现异常"The content of the adapter
- [Selenium]等待元素出现之后再消失,界面上的loading icon都属于这种类型,之前的方法总是卡死,换这种方法目前还好用的
- IOS 设置icon 出现的bug The app icon set named "AppIcon" did not have any applicable content.
- 【WPF】对Frame控件的Content属性做绑定时出现的一个小问题
- 利用Jquey.hover来实现 鼠标移入出现删除按钮,鼠标移出删除消失
- Xcode 5 的一个 Bug:修改 TableView的 content导致崩溃
- 实现一个位图、100亿个整数找出只出现一次的整数、找出现次数不超多2次的数
- 获取字符串中最后出现的一个字符的位置