javascript - jquery 改变css不生效问题
ringa_lee
ringa_lee 2017-04-11 12:04:04
[JavaScript讨论组]
《a href="#" class="aaa"》
    讲文明树新风公益广告
    

美丽浙江 文明相伴

《/a》

代码如下,

    $(".aaa").mouseover(function() {
      if (!$(".bbb").is(":animated")){
        $(".bbb").fadeIn(420).find("p").animate({
            "opacity": "show",
            "margin-top": 0
          }, 800);
      }
    })

    $(".aaa").mouseleave(function() {
      $(".bbb").fadeOut(400);
      $(".bbb").find("p").css({
            "margin-top": "120px",
            "opacity": "hide"
          })
    })
    
    
    主要就是mouseleave事件下,看着源代码,鼠标移走时.bbb的margin-top时而生效,
    时而不生效。很是奇怪。不知道有没有朋友也遇到过这种情况,造成这种情况的原因是什么。
    
    
ringa_lee
ringa_lee

ringa_lee

全部回复(2)
高洛峰

mouseover一般和mouseout一起用,mouseenter和mouseleave。
区别是mouseover和mouseout事件冒泡,mouseenter和mouseleave不冒泡。
冒泡的意思是… 子元素上发生的事件会传递到父元素 再到爷爷元素…一直传到document 。

大概就是这样,更详细的解释可以自己去查文档

ringa_lee

opacity属性啥时候有showhide这俩值了?


评论中题主说可以这样写,但我仍然觉得即便这个能写,性能也不会太好……

补充了段CSS,类似的案例我一般是直接写样式解决的:

.aaa>.bbb {
    display: none;
    transition: all .4s;
}
.aaa>.bbb>p {
    margin-top: 120px;
    opacity: 0;
    transition: all .8s;
}
.aaa:hover>.bbb {
    display: block;
}
.aaa:hover>.bbb>p {
    margin-top: 0;
    opacity: 1;
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号