使用jQuery .addClass和.removeClass进行CSS3转换

Jay*_*pee 17 html jquery css3

我有一个很大的主导航面板,我想在部署(扩展)时制作动画.

我正在使用jQuery通过添加/删除类visible/hidden来触发它的可见性.

我不得不设置延迟时间来应用隐藏类,因为触发器是面板div之外的按钮.(如果我在按钮上使用翻转,一旦你推出面板就会消失)

代码是这样的

$(document).ready(function() {
    $('#menu-item-9').click(function(){
        $('#repair-drop').removeClass('hidden');
        $('#repair-drop').addClass('visible');
    });
$('#repair-drop').on('mouseleave', function(e) {
    setTimeout(function() {
        $('#repair-drop').removeClass('visible').addClass('hidden');
    }, 600);        

});
});
Run Code Online (Sandbox Code Playgroud)

我的CSS如下

.hidden{
    max-height: 0px;
    -webkit-transition: max-height 0.8s;
    -moz-transition: max-height 0.8s;
    transition: max-height 0.8s;

}
.visible{
    max-height: 500px;  
}
Run Code Online (Sandbox Code Playgroud)

过渡效应根本不起作用.

Fre*_*all 16

您正在添加和删除包含转换CSS的类.我建议将其移至自己的规则DEMO.

.hidden{
    max-height: 0px;
}
.visible{
    max-height: 500px;  
}

#repair-drop{
    -webkit-transition: max-height 0.8s;
    -moz-transition: max-height 0.8s;
    transition: max-height 0.8s;
}
Run Code Online (Sandbox Code Playgroud)


use*_*584 15

我厌倦了这个问题,更好地使用动画:

.container .element.animation  {
    animation: SHW .5s;
    animation-fill-mode: both
}
@keyframes SHW {
    from {
        transform:scale(0.7);
        opacity:0
    }
    to {
        transform: scale(1);
        opacity:1
    }
}
Run Code Online (Sandbox Code Playgroud)

仅添加.element类.animation及其工作:

$('.container .element').addClass('animation');
Run Code Online (Sandbox Code Playgroud)


Bla*_*ger 5

不要删除.hidden课程; 它包含你的transition风格.只需添加和删除.visible该类.

$(document).ready(function() {
    $('#menu-item-9').on('click', function(e) {
        $('#repair-drop').addClass('visible');
    });

    $('#repair-drop').on('mouseleave', function(e) {
        setTimeout(function() {
            $('#repair-drop').removeClass('visible');
        }, 600);        
    });
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/mblase75/LjhNa/


也就是说,您可能需要改进解决方案,以便用户在隐藏之前快速将鼠标移出#repair-drop并点击#menu-item-9.

$(document).ready(function() {
    $('#menu-item-9').on('click', function(e) {
        $('#repair-drop').data('shown',true).addClass('visible');
    });

    $('#repair-drop').on('mouseleave', function(e) {
        $('#repair-drop').data('shown',false);
        setTimeout(function() {
            if (!$('#repair-drop').data('shown')) {
                $('#repair-drop').removeClass('visible');
            }
        }, 600);        
    });
});
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/mblase75/b8QpB/