代码之家  ›  专栏  ›  技术社区  ›  Hols

CSS翻译在Safari上无法完全工作

  •  2
  • Hols  · 技术社区  · 11 年前

    我的应用程序中有一个元素,当我单击某个按钮时,该元素会滑入视图,当我再次单击该按钮时,它会滑出视图。我是用CSS和JS的组合来实现这一点的,它在Chrome和Firefox上运行良好,但在Safari中只能部分运行。

    在Safari中,它不会滑入,只是突然出现,但它确实滑出得很好。

    如有任何帮助,将不胜感激。提前感谢!

    JS小提琴: http://jsfiddle.net/ewLdm75n/20/

    以下是CSS:

    #testModes {
        -webkit-transition: 0.5s;
        transition: 0.5s;
        -webkit-transform: translateY(-100%);
        transform: translateY(-100%);
    }
    
    #testModes.testModes-active {
         -webkit-transform: translateY(0);
         transform: translateY(0);
    }
    

    以及JS:

    $(document).on('click', '.testModesToggle', function() {
        var state = $('#testModes').attr('class');
    
        if (state === 'testModes-active') {
            $('#testModes').removeClass('testModes-active').delay(100).fadeToggle();
        } else {
            $('#testModes').fadeToggle(0).addClass('testModes-active');
        }
    
    });
    
    1 回复  |  直到 11 年前
        1
  •  0
  •   Hols    11 年前

    好的,我找到了一个解决方法。只需将fadeToggle(0)更改为slideDown(0),它就解决了问题。我不完全确定为什么,但它起作用了!代码如下:

    $(document).on('click', '.testModesToggle', function() {
        var state = $('#testModes').attr('class');
    
        if (state === 'testModes-active') {
            $('#testModes').removeClass('testModes-active').delay(100).fadeToggle();
        } else {
            $('#testModes').slideDown(0).addClass('testModes-active');
        }
    
    });