如连接:鼠标移入的时候希望img hide 文字show 反之。但是老师闪烁,原因知道是鼠标移入后img就没了 触发了mouseout事件,求解决
如连接:鼠标移入的时候希望img hide 文字show 反之。但是老师闪烁,原因知道是鼠标移入后img就没了 触发了mouseout事件,求解决
原因是你没有对#test进行约束,可以添加css:
#test{
width: 100px;
height: 100px;
border: 1px solid black;
}
试试。
PS: 黑线主要是易于找到#test(可有可无),
使用mouseleave和mousenter这两个事件代替mouseout和mouseover事件
原因:
因为mouseover事件是必然冒泡的,一旦子元素mouseover了,本元素必然mouseover(除非子元素上禁止冒泡了)。
而鼠标在这个元素的子元素上触发mouseenter事件都不会触发这个元素的mouseenter事件。即:一旦进入,在子元素间的mouseenter不算是在本元素上的mouseenter。
你运行看下
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<style>
.warp {
width: 1000px;
flex-wrap: wrap;
border: 1px solid #555;
display: flex;
padding: 20px;
}
.item {
margin: 0;
display: flex;
padding: 10px;
width: 178px;
height: 178px;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
justify-content: center;
/*border: 1px solid green;*/
}
#test
{
width:100px;
height:100px;
}
img {
width: 100px;
}
p {
width:100px;
height:100px;
}
</style>
<body>
<div id='test'>
<img src="http://guoxw.qiniudn.com/nanituo.png" alt="">
<p style="display:none">nanituo</p>
</div>
<script src="//cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script>
<script>
(function($) {
$('img').hover(function() {
$('img').hide();
$('p').show();
}, function(e) {
e.prevenDefault()
})
$('p').hover(function(e) {
e.prevenDefault()
}, function(){
$('img').show();
$('p').hide();
})
})($)
</script>
</body>
</html>
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
你的
<div id="test">
没有指定高度,所以高度是根据里面的内容来决定的。你的图片显示出来大概高70(估算的,具体值不重要),而<p>
中的文本大概高 16。所以在显示图片的时候,从下移入,进入70范围但在16范围之外,触发mouseover
,但由于隐藏了图片,显示文本,高度立即改变为16,此时鼠标已经在<div>
的外面了,所以触发mouseout
,此时显示图片,隐藏文本,高度变为70,触发mouseover
…… 结果就闪烁了。如果你从上面移入,在 16 范围内,就不会出现闪烁,可以试试。
解决办法,固定
<div>
的高度。